Ребят, теперь проблема с редактированием новости... Когда пытаюсь редактировать новость, то даже если новости была присвоена категория, то при открытии страницы редактирования, категория новости не отображается, а просто находится вверху списка... И также когда пытаюсь изменить категорию и выбираю нужную из списка, то опять не присваивает значение, а тупо скидывает на 0... Помогите пожалста! вот код редактирования новости: PHP: if($_REQUEST['lc']=='edit-news'){ $id_news=$_GET['id-news']; $sql="SELECT * FROM `news` WHERE `id`=".$id_news; $result=mysql_query($sql); $num_results=mysql_num_rows($result); for ($i=0; $i<$num_results; $i++) { $row=mysql_fetch_array($result); $id=$row["id"]; $tema=$row["tema"]; $id_newspage=$row["id_newspage"]; $query = "SELECT id_newspage,name FROM newspage "; if($pgs = mysql_query($query)) { print "<select size=\"1\" NAME=\"id_newspage\">"; print "<option value=\"0\">Выберите категорию</option>"; while(list($id_newspage,$part)=mysql_fetch_array($pgs, MYSQL_NUM)) { print "<option NAME=\"'id_newspage\" value=\"".$id_newspage."\">$part</option>"; } print "</select>"; } echo ' <FORM ACTION="news.php?lc=update" METHOD="post"> <TABLE WIDTH=600 BORDER=0 CELLSPACING=0 CELLPADDING=4> <TR><TD width=100>Тема:</td><td> <INPUT TYPE=text NAME=tema VALUE="'.$tema.'" SIZE=80></td></tr> <TR ALIGN=center><TD WIDTH="100%" colspan=2 align=right> <INPUT TYPE="hidden" NAME="idup" VALUE="'.$id.'"> <INPUT TYPE="submit" VALUE="Сохранить"> </TD></TR></TABLE><BR><BR></FORM> '; } } //******************// // UPDATE // //******************// if($_REQUEST['lc']=='update'){ $tema=str_replace("'","`",$_POST['tema']); $id_newspage=str_replace("'","`",$_POST['id_newspage']); $sql="UPDATE news SET id_newspage='$id_newspage', tema='$tema', WHERE id=".$_POST['idup']; $result=mysql_query($sql); }
о_О А точно у id есть автоинкремент? Мне кажется, что по дефолту 0 у него стоит, а Вы добавляете пустую строку, вот и ноль получается.
1. при чем тут $tema - это титле новости... 2. автоинкремент у id самой новости есть (таблица news) и новости добавляются без проблем и все работает 3. ид равен 0 при передаче раздела из одной таблицы (newspage - где ид добавленного раздела тоже работает) в другую (news)... вот при передаче ид теряется раздела теряется...
Это не сложно, это просто чисто Ваша проблема, проблема невнимательности. Поэтому никто и не хочет разбираться "где потерялось", если бы Вы спросили про реализацию алгоритма, думаю, многие бы ответили.
Ну если так никто не может помочь, то тогда объясните пожалуйста как работать с разделами (выборка раздела из выпадающего списка), если сами новости и разделы находятся в разных таблицах...
Ты уверен, что у тебя форма передает параметр id_newspage? Наверное его надо поставить в как значение value="id_newspage".
В том и дело что я не уверен что передает.... Но value="id_newspage" не выход - я так пробовал уже, не помогает...
Для того, чтобы узнать, что передается, а что нет, включите в код print_r($_POST) - выводит на страничку содержимое массива. Можешь попробовать так: PHP: print "<option NAME='' value='".$id_newspage."'>$part</option>"; А вообще, без знака $ в php ни одна переменная не работает
Блин, все разобрался! Правда весь вопрос был в value... Нужно было всего навсего немного изменить это: value=\"id_newspage\" на это: value=\"".$id_newspage."\" Спасибо всем откликнувшимся за внимание и за помощь, в особенности Cron, который подтолкнул меня на решение!
Ребят, теперь проблема с редактированием новости... Когда пытаюсь редактировать новость, то даже если новости была присвоена категория, то при открытии страницы редактирования, категория новости не отображается, а просто находится вверху списка... И также когда пытаюсь изменить категорию и выбираю нужную из списка, то опять не присваивает значение, а тупо скидывает на 0... Помогите пожалста! вот код редактирования новости: PHP: if($_REQUEST['lc']=='edit-news'){ $id_news=$_GET['id-news']; $sql="SELECT * FROM `news` WHERE `id`=".$id_news; $result=mysql_query($sql); $num_results=mysql_num_rows($result); for ($i=0; $i<$num_results; $i++) { $row=mysql_fetch_array($result); $id=$row["id"]; $tema=$row["tema"]; $id_newspage=$row["id_newspage"]; $query = "SELECT id_newspage,name FROM newspage "; if($pgs = mysql_query($query)) { print "<select size=\"1\" NAME=\"id_newspage\">"; print "<option value=\"0\">Выберите категорию</option>"; while(list($id_newspage,$part)=mysql_fetch_array($pgs, MYSQL_NUM)) { print "<option NAME=\"'id_newspage\" value=\"".$id_newspage."\">$part</option>"; } print "</select>"; } echo ' <FORM ACTION="news.php?lc=update" METHOD="post"> <TABLE WIDTH=600 BORDER=0 CELLSPACING=0 CELLPADDING=4> <TR><TD width=100>Тема:</td><td> <INPUT TYPE=text NAME=tema VALUE="'.$tema.'" SIZE=80></td></tr> <TR ALIGN=center><TD WIDTH="100%" colspan=2 align=right> <INPUT TYPE="hidden" NAME="idup" VALUE="'.$id.'"> <INPUT TYPE="submit" VALUE="Сохранить"> </TD></TR></TABLE><BR><BR></FORM> '; } } //******************// // UPDATE // //******************// if($_REQUEST['lc']=='update'){ $tema=str_replace("'","`",$_POST['tema']); $id_newspage=str_replace("'","`",$_POST['id_newspage']); $sql="UPDATE news SET id_newspage='$id_newspage', tema='$tema', WHERE id=".$_POST['idup']; $result=mysql_query($sql); }
Немного не понял логику: 1. PHP: $num_results=mysql_num_rows($result); for ($i=0; $i<$num_results; $i++) { $row=mysql_fetch_array($result); Можно просто PHP: while($row=mysql_fetch_array($result)){ 2. Почему <select> формируется до открытия тега <FORM> - это значит, что он находиться вне формы и передан не будет. 3. - вам не кажеться странным имя опции 'id_newspage (подсчитайте внимательно кол-во и качество кавычек). В общем, есть где копать
Во-первых, каким образом список выводится до объявления формы? Как это так? HTML учили? Во-вторых, у вас пересекаются две переменный с одним и тем же названием. $id_newspage Дайте первой переменной другое имя. В-третьих, чтобы категория была выбрана в списке, в атрибутах опции нужно вставить selected="selected" Проверяйте если первая переменная $id_newspage(с новым именем) равна $id_newspage, то вставить selected="selected" после value=\"".$id_newspage."\" плюс то что написал Cron
C формой поправил, теперь при редактировании все сохраняется, тут не доглядел... При вставке selected="selected" когда открывается новость для редактирования, то категория выбирается из самого низа списка, а не та, которая была присвоена ранее... У меня все эти проблемы что возникают с категориями от того что сами новости и категории находятся в разных таблицах + я еще только учусь...