[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Обновление записи в БД
sava4aev
В общем есть два файла: edit_post.php - сюда выводится выбранная запись в форму. update_post.php - обработчик формы, который обнавляет запись в бд.
Проблема: не обновляется запись в бд. Помогите, где ошибка?!


edit_post.php

<center><b><h2>Редактирование статьи</h2></b></center>
<?
if (!isset($id))
{
$result = mysql_query ("SELECT `id`, `title` FROM `materials` ", $db);
$myrow = mysql_fetch_array ($result);
do
{
printf ("<a href = 'edit_post.php?id=%s'>%s</a><br>", $myrow['id'], $myrow['title']);
}
while ($myrow = mysql_fetch_array ($result));
}
else
{
$result = mysql_query("SELECT * FROM `materials` WHERE id = $id");
$myrow = mysql_fetch_array ($result);

$result2 = mysql_query("SELECT * FROM `categories` ");
$myrow2 = mysql_fetch_array ($result2);

echo "<form name='form1' method='post' action='update_post.php'>
<b>Категория:</b><br>
<select name='cat' id='cat'> "
;

do {

if ($myrow['cat'] == $myrow2['id'] )
{
printf ("<p><option value='%s' selected>%s</value>", $myrow2['id'], $myrow2['title']);
}

else
{
printf ("<p><option value='%s'>%s</value>", $myrow2['id'], $myrow2['title']);
}

}

while ($myrow2 = mysql_fetch_array($result2));
echo "</select><br>";


print<<<HERE






<p>
<label>Название статьи:<br>
<input type="text" value = "
$myrow[title]" name="title" id="title" size="60">
</label>
</p>



<p>
<label>Ключевое описание:<br>
<input type="text" value = "
$myrow[meta_d]" name="meta_d" id="meta_d" size="60">
</label>
</p>

<p>
<label>Ключевые слова:<br>
<input type="text" value = "
$myrow[meta_k]" name="meta_k" id="meta_k" size="60">
</label>
</p>

<p>
<label>Краткое описание статьи:<br>
<textarea name="description" id="description" cols="40" rows="20" >
$myrow[description]</textarea>
</label>
</p>

<p>
<label>Полный текст статьи:<br>
<textarea name="text" id="text" cols="40" rows="20" >
$myrow[text]</textarea>
</label>
</p>

<p>
<label>Изображение:<br>
<input type="text" value = "
$myrow[img]" name="img" id="img" size="40">
</label>
</p>

<p>
<label>Мини-изображение:<br>
<input type="text" value = "
$myrow[mini_img]" name="mini_img" id="mini_img" size="40">
</label>
</p>

<p>
<label>
<input type="submit" name="submit" id="submit" value="Внести изменения">
</label>
</p>
</form>


HERE;
}



?>



update_post.php


<? include("protection.php");
include("blocks/bd.php");

if (isset ($_POST ['title'])) { $title = $_POST ['title'];
if ($title == '') { unset ($title); } }

if (isset ($_POST ['meta_d'])) { $meta_d = $_POST ['meta_d'];
if ($meta_d == '') { unset ($meta_d); } }

if (isset ($_POST ['meta_k'])) { $meta_k = $_POST ['meta_k'];
if ($meta_k == '') { unset ($meta_k); } }

if (isset ($_POST ['description'])) { $description = $_POST ['description'];
if ($description == '') { unset ($description); } }

if (isset ($_POST ['text'])) { $text = $_POST ['text'];
if ($text == '') { unset ($text); } }

if (isset ($_POST ['img'])) { $img = $_POST ['img'];
if ($img == '') { unset ($img); } }

if (isset ($_POST ['mini_img'])) { $mini_img = $_POST ['mini_img'];
if ($mini_img == '') { unset ($mini_img); } }

if (isset ($_POST ['cat'])) { $cat = $_POST ['cat'];
if ($cat == '') { unset ($cat); } }

if (isset ($_POST ['id'])) { $id = $_POST ['id'];
if ($id == '') { unset ($id); } }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<
head>
<
title>Панель Администратора - Обнавление статьи</title>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<
link rel="stylesheet" href="images/Refresh.css" type="text/css" />
</
head>
<
body>
<
div id="wrap">
<? include("blocks/heder.php");
include("blocks/menu_top.php"); ?>
<div id="content-wrap">
<? include("blocks/menu_left.php"); ?>
<div id="main"> <a name="TemplateInfo"></a><br>
<?
if (isset($title) && isset($meta_d) && isset($meta_k) && isset($description)
&&
isset($text) && isset($img) && isset($mini_img) && isset($cat))
{
$result = mysql_query ("UPDATE `materials` SET title = $title, meta_d = $meta_d, meta_k = $meta_k, description = $description,
text =
$text, img = $img, mini_img = $mini_img, cat = $cat WHERE id=$id");

if ($result == 'true'){echo "<p><b>Статья успешно обнавлена.</b></p>";}
else {echo "<p><b>Статья не обнавлена.</b></p>";}
}

else
{
echo "<p><b>Вы заполнили не все поля, поэтому статья не может быть обнавлена.</b></p>";
}
?>
<br><br><br>
</
div>
</
div>
<? include("blocks/footer.php"); ?>
</div>
</
body>
</
html>




Спустя 20 минут, 14 секунд (23.09.2012 - 11:10) Placido написал(а):
Строковые данные должны обрамляться апострофами.
$result = mysql_query ("UPDATE `materials` SET title = '$title', meta_d = '$meta_d', meta_k = '$meta_k', description = '$description',
text = '
$text', img = '$img', mini_img = '$mini_img', cat = '$cat' WHERE id = $id");

Спустя 6 минут, 17 секунд (23.09.2012 - 11:17) sava4aev написал(а):
Все та же проблема. Выводит , что "Статья не обновлена."

Спустя 57 минут (23.09.2012 - 12:14) Placido написал(а):
Если честно, то такую портянку скопированного откуда-то кода, мягко говоря, сомнительного качества разбирать нет ни малейшего желания. Читаем о дебаггинге, например, здесь и здесь.

Спустя 3 часа, 19 минут, 29 секунд (23.09.2012 - 15:33) inpost написал(а):
mysql_query("запрос") or die(mysql_error());

Запиши в таком стиле и получишь код ошибки! И её описание.

Спустя 6 минут, 32 секунды (23.09.2012 - 15:40) sava4aev написал(а):
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

Спустя 27 минут, 57 секунд (23.09.2012 - 16:07) neadekvat написал(а):
sava4aev, кроме ошибки выведи на экран сам текст запроса, который у тебя получается после подстановки переменных.

Спустя 1 час, 52 минуты, 16 секунд (23.09.2012 - 18:00) inpost написал(а):
Имена ячеек и таблиц обрамляй обратными апострофами. `name`, `table`, `cell`. По аналогии с именем таблицы, как ты сделал!
Далее переменную обработай на mysql_real_escape_string каждую, которую добавляешь в БД.
"UPDATE `table` SET
`cell` = '"
.mysql_real_escape_string($cell)."',
...

Спустя 29 минут, 13 секунд (23.09.2012 - 18:29) sava4aev написал(а):
inpost, зделал, пишет что статья обновлена, однако этого не происходит. вот посмотри, что у меня получилось:

<? include("protection.php");
include("blocks/bd.php");

if (isset ($_POST ['title'])) { $title = $_POST ['title'];
if ($title == '') { unset ($title); } }

if (isset ($_POST ['meta_d'])) { $meta_d = $_POST ['meta_d'];
if ($meta_d == '') { unset ($meta_d); } }

if (isset ($_POST ['meta_k'])) { $meta_k = $_POST ['meta_k'];
if ($meta_k == '') { unset ($meta_k); } }

if (isset ($_POST ['description'])) { $description = $_POST ['description'];
if ($description == '') { unset ($description); } }

if (isset ($_POST ['text'])) { $text = $_POST ['text'];
if ($text == '') { unset ($text); } }

if (isset ($_POST ['img'])) { $img = $_POST ['img'];
if ($img == '') { unset ($img); } }

if (isset ($_POST ['mini_img'])) { $mini_img = $_POST ['mini_img'];
if ($mini_img == '') { unset ($mini_img); } }

if (isset ($_POST ['cat'])) { $cat = $_POST ['cat'];
if ($cat == '') { unset ($cat); } }

if (isset ($_POST ['id'])) { $id = $_POST ['id'];
if ($id == '') { unset ($id); } }
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<
head>
<
title>Панель Администратора - Обнавление статьи</title>
<
meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<
link rel="stylesheet" href="images/Refresh.css" type="text/css" />
</
head>
<
body>
<
div id="wrap">
<? include("blocks/heder.php");
include("blocks/menu_top.php"); ?>
<div id="content-wrap">
<? include("blocks/menu_left.php"); ?>
<div id="main"> <a name="TemplateInfo"></a><br>
<?
$result = mysql_query ("UPDATE `materials` SET
`title` = '"
.mysql_real_escape_string($title)."', `meta_d` = '".mysql_real_escape_string($meta_d)."',
`meta_k` = '"
.mysql_real_escape_string($meta_k)."', `description` = '".mysql_real_escape_string($description)."',
`text` = '"
.mysql_real_escape_string($text)."', `img` = '".mysql_real_escape_string($img)."',
`mini_img` = '"
.mysql_real_escape_string($mini_img)."', `cat` = '".mysql_real_escape_string($cat)."'
WHERE id='
$id'");

if($result == true){echo "<p><b>Статья успешно обновлена.</b></p>";}
else {echo "<p><b>Статья не обнавлена.</b></p>";}

?>
<br><br><br>
</
div>
</
div>
<? include("blocks/footer.php"); ?>
</div>
</
body>
</
html>

Спустя 17 минут, 58 секунд (23.09.2012 - 18:47) inpost написал(а):
А где or die() ? Или я выше этого не говорил?
А где экранизация обратных кавычек ВСЕХ ячеек, а не только тех, что тебе нравятся?
И успех проверки надо делать через mysql_affected_rows.

Спустя 7 минут, 27 секунд (23.09.2012 - 18:54) sava4aev написал(а):
inpost вааааа blink.gif
У меня уже мозг кипит!!! Как это все будет выглядить?
Быстрый ответ:

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