[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите найти ошибку
DieM
Пытаюсь обновить существующую запись в базе данных

<?php
if (isset($_POST['title'])) {$title = $_POST['title']; if ($title == '') {unset($title);} }
if (isset($_POST['text'])) {$text = $_POST['text']; if ($text == '') {unset($text);} }
if (isset($_POST['photo'])) {$photo = $_POST['photo']; if ($photo == '') {unset($photo);} }
if (isset($_POST['link'])) {$link = $_POST['link']; if ($link == '') {unset($link);} }
if (isset($_POST['id'])) {$id = $_POST['id'];}
?>



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta
http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Админка</title>
<link
media="all" type="text/css" rel="stylesheet" href="css/all.css" />
<!--[if lt IE 7]><link rel="stylesheet" type="text/css" href="css/lt7.css" media="screen"/><![endif]-->
</head>
<body>
<div
id="wrapper">
<h1><a
href="#">CLEAN MARKUP</a></h1>
<div
id="container">
<?php
include("blocks/nav.php"); ?>
<div
id="two-columns">
<div
class="content">
<?php

if (isset($title) && isset($text) && isset($photo) && isset($link))
{
$result = mysql_query ("UPDATE portfolio SET title='$title', text='$text', photo='$photo', link='$link' WHERE id='$id'");
if ($result == 'true') {echo "<p>Successfully updated to database</p>";}
else {echo "<p>Record not updated</p>";}
}

else
{
echo "<p>check field</p>";
}
?>
</div>
<?php
include("blocks/sidebar.php"); ?>
</div>
<?php
include("blocks/footer.php"); ?>
</div>
</div>
</body>
</html>



Результат мне выдает, что все хорошо, но изменения не вносятнся.
если поменять WHERE id='$id' на какой-то четкий id, то изменения вносятся. Получается что-то не так с этой переменной. Но что не пойму.
Помогите, плиз



Спустя 11 минут, 45 секунд (29.01.2010 - 12:02) Ice написал(а):
что выдаст
echo $_POST['id'];


Второй момент - где проверка данных на соответствие?

Спустя 43 минуты, 35 секунд (29.01.2010 - 12:45) DieM написал(а):
а где у меня echo $_POST['id'];?
У меня есть if (isset($_POST['id'])) {$id = $_POST['id'];}

а второй момент - у меня в отдельном файле выводятся данные из базы в форму

Спустя 8 минут, 22 секунды (29.01.2010 - 12:54) Gabriel написал(а):
пост есть суперглобальный масив и $_POST['id'] у тебя есть.

Спустя 23 минуты, 29 секунд (29.01.2010 - 13:17) Ice написал(а):
напиши руками эхопостыд. Не пустой ли он случаем у тебя...

Спустя 13 минут, 7 секунд (29.01.2010 - 13:30) DieM написал(а):
Все нормально, возвращает нужный ID

Спустя 4 минуты, 57 секунд (29.01.2010 - 13:35) Ice написал(а):
давай попробуем щас вот этот кусок
$result = mysql_query ("UPDATE portfolio SET title='$title', text='$text', photo='$photo', link='$link' WHERE id='$id'");


переписать так:


$sql = "UPDATE portfolio SET title='$title', text='$text', photo='$photo', link='$link' WHERE id='$id'";
echo $sql;
$result = mysql_query ($sql) or die(mysql_error());

что выдал эхо?

Спустя 2 минуты, 8 секунд (29.01.2010 - 13:37) Gabriel написал(а):
Ice
добавь or die( mysql_error() );

Спустя 22 минуты, 57 секунд (29.01.2010 - 14:00) DieM написал(а):
UPDATE portfolio SET title='1', text='sdfg', photo='images/img-site01.jpg', link='./portfolio/UnderwaterClub/about.html' WHERE id=''

Тоесть, id у меня пустое.
А ниже оставил
echo $_POST['id'];

оно выдало нужный номер...

Спустя 16 минут, 19 секунд (29.01.2010 - 14:17) Ice написал(а):
Помоему осталось 2 шага) перед $sql поставь echo $id;

УПД Второй момент: да не из базы в форму?smile.gif Где экранирование служебных сиимволов базы?

Спустя 8 минут, 52 секунды (29.01.2010 - 14:25) DieM написал(а):
Добавил echo $id;
Ничего не выдало...

Где экранирование служебных сиимволов базы?
Не делал такого... blink.gif

Спустя 12 минут, 6 секунд (29.01.2010 - 14:38) Gabriel написал(а):
<?php
$title = isset( $_POST['title'] ) ? $_POST['title'] : NULL;
$text = isset( $_POST['text'] ) ? $_POST['text'] : NULL;
$text = isset( $_POST['photo'] ) ? $_POST['photo'] : NULL;
$text = isset( $_POST['link'] ) ? $_POST['link'] : NULL;
$text = isset( $_POST['id'] ) ? $_POST['id'] : NULL;

$sql = "UPDATE portfolio SET
title = '"
.mysql_real_escape_string( $title )."',
text = '"
.mysql_real_escape_string( $text )."', photo='".mysql_real_escape_string( $photo )."',
link='"
.mysql_real_escape_string( $link )."'
WHERE id='"
.intval( $id )."'";
echo $sql;
$result = mysql_query ($sql) or die(mysql_error().'<br />'.nl2br( $sql ));

попробуй посмотри чего скажет.

Спустя 13 минут, 6 секунд (29.01.2010 - 14:51) Ice написал(а):
Цитата (DieM @ 29.01.2010 - 15:25)
Где экранирование служебных сиимволов базы?
Не делал такого... blink.gif

надо сделать обязательно. Проверок много не бывает. Все данные, которые идут в базу пропусти через mysql_real_escape_string()

Спустя 1 час, 8 минут, 55 секунд (29.01.2010 - 16:00) DieM написал(а):
в общем если сделать

if (isset($title) && isset($text) && isset($photo) && isset($link))
{
$sql = "UPDATE portfolio SET
title = '"
.mysql_real_escape_string( $title )."',
text = '"
.mysql_real_escape_string( $text )."', photo='".mysql_real_escape_string( $photo )."',
link='"
.mysql_real_escape_string( $link )."'
WHERE id='"
.intval( $id )."'";
echo $id;
echo $sql;
$result = mysql_query ($sql) or die(mysql_error());

if ($result == 'true')
{
echo "<p>Successfully updated to database</p>";
}
else
{
echo "<p>Record not updated</p>";
}
}

else
{
echo "<p>check field</p>";
}



то выдает
UPDATE portfolio SET title = '2', text = 'Lorem ipsum2', photo='images/img-site02.jpg', link='./portfolio/Test/home.html' WHERE id='0'

Successfully updated to database
2

Хотя фактически id=2 (последняя строка)
Так и не пойму где проблема...

Кстати SET title = '2 - это тоже id выплыл, реально тут другое было написано

 ! 

М
Оформляйте код согласно правилам форума!
Kuliev

Спустя 3 часа, 32 минуты, 23 секунды (29.01.2010 - 19:32) Gabriel написал(а):
DieM
а ид точно берется из поста?

Спустя 15 часов, 3 минуты, 56 секунд (30.01.2010 - 10:36) DieM написал(а):
Вроде бы да.
Во всяком случае удалить запись из базы получается по id.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.