Редактированние записей из бд через php
Код:
<?php
//конект с базой
include('conf.php');
$page = $_GET['page'];
$razdel=$_GET['razdel'];
$sql = mysql_query("SELECT * FROM page WHERE id ='$page' and razdel='$razdel'" ,$db);
$pages = mysql_fetch_row($sql);
$date=date('d.n.Y');
if(!$_POST['submit']) {
echo "<center><form action='' method='POST'>
<table><tr><td>заголовок</td><td><input type='text' name='head' value='$pages[1]'></td></tr>
<tr><td>статья</td><td><textarea cols='20' rows='10' name='content' value='$pages[2]'></textarea></td></tr>
<tr><td>раздел</td><td>
<select name='razdel' value='$pages[3]'>
<option value='1'></option>
<option value='2'></option>
<option value='3'></option>
<option value='4'></option>
<option value='5'></option>
<option value='6'></option>
<option value='7'></option>
<option value='8'></option>
</select></td></tr>
<tr><td>пароль:</td><td><input type='password' name='psw'</td></tr>
<tr><td>дата редактирования: $date</td><td><input type='submit' name='submit' value='опубликовать'></td></tr>
</table></center>";
}
elseif($_POST[psw]=="пароль" ){
$add=mysql_query("UPDATE `a1872333_phpweb9`.`page` SET `head` = '$_POST[head]',`content` = '$_POST[content]',`time` = '$date',`razdel` = '$_POST[razdel]' WHERE CONVERT( `page`.`head` USING utf8 ) = '$pages[1]' AND CONVERT( `page`.`content` USING utf8 ) = '$pages[2]' AND CONVERT( `page`.`time` USING utf8 ) = '$pages[3]' AND CONVERT( `page`.`razdel` USING utf8 ) = '$pages[4]' LIMIT 1 ;');");
echo "<center>статья изменена! <a href='see.php'>главная</a></center>";}
//закрытие соединениz
mysql_close($db);
?>
//конект с базой
include('conf.php');
$page = $_GET['page'];
$razdel=$_GET['razdel'];
$sql = mysql_query("SELECT * FROM page WHERE id ='$page' and razdel='$razdel'" ,$db);
$pages = mysql_fetch_row($sql);
$date=date('d.n.Y');
if(!$_POST['submit']) {
echo "<center><form action='' method='POST'>
<table><tr><td>заголовок</td><td><input type='text' name='head' value='$pages[1]'></td></tr>
<tr><td>статья</td><td><textarea cols='20' rows='10' name='content' value='$pages[2]'></textarea></td></tr>
<tr><td>раздел</td><td>
<select name='razdel' value='$pages[3]'>
<option value='1'></option>
<option value='2'></option>
<option value='3'></option>
<option value='4'></option>
<option value='5'></option>
<option value='6'></option>
<option value='7'></option>
<option value='8'></option>
</select></td></tr>
<tr><td>пароль:</td><td><input type='password' name='psw'</td></tr>
<tr><td>дата редактирования: $date</td><td><input type='submit' name='submit' value='опубликовать'></td></tr>
</table></center>";
}
elseif($_POST[psw]=="пароль" ){
$add=mysql_query("UPDATE `a1872333_phpweb9`.`page` SET `head` = '$_POST[head]',`content` = '$_POST[content]',`time` = '$date',`razdel` = '$_POST[razdel]' WHERE CONVERT( `page`.`head` USING utf8 ) = '$pages[1]' AND CONVERT( `page`.`content` USING utf8 ) = '$pages[2]' AND CONVERT( `page`.`time` USING utf8 ) = '$pages[3]' AND CONVERT( `page`.`razdel` USING utf8 ) = '$pages[4]' LIMIT 1 ;');");
echo "<center>статья изменена! <a href='see.php'>главная</a></center>";}
//закрытие соединениz
mysql_close($db);
?>
в чем ошибка? почему после нажания submit он не изменяет данный в таблице а выводит старые?:eek::confused:
И есть ли ошибки при добавлении? Вот занесите значение и проверьте в самой БД - обновилось или нет. Если обновилось, значит страница кэшируется и все.
нет страница не кэшируется, записи не обновляются....значит надо искать ошибку в коде =(
Если не обновляется - значит проблема в запросе. Смотрим в запрос UPDATE. Смотрим на последние 3 символа. Что там значат символы ');?? И что они там делают?? Ошибка синтаксиса
Плюс все $_POST[head] и подобное в запросе замените лучше на {$_POST[head]} - намного тогда понятней читать да и правильней (я считаю).
одно но...
value='$pages[1]' передается только <input type='text' name='head' />
,а <textarea cols='20' rows='10' name='content' value='$pages[2]'>
не отображает нужный текст из массива внитри поля....
<select name='razdel' value='$pages[3]'>
не принимает значения =(
НО внося изменения в эти строки одни становяться действительными!
1) textarea не имеет свойства value, как такового, он отображает тот текст, который находится между открывающим и закрывающим его тегами, т.е. надо сделать: <textarea>$pages[2]</textarea>
2) у select'a также неверно указывать value - так как это не VB6)) А вот у дочернего элемента option есть свойство selected. Поэтому вам надо $pages[3] сравнивать с каждым options, и если они совпадут, то ставить ему атрибут selected, т.е. <option selected="selected"></option>
спасибо за все!