За последние 24 часа нас посетили 17742 программиста и 1624 робота. Сейчас ищут 1799 программистов ...

Проблема записи в базу id

Тема в разделе "PHP и базы данных", создана пользователем darkgod, 12 июл 2008.

  1. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Ребят, теперь проблема с редактированием новости... Когда пытаюсь редактировать новость, то даже если новости была присвоена категория, то при открытии страницы редактирования, категория новости не отображается, а просто находится вверху списка... И также когда пытаюсь изменить категорию и выбираю нужную из списка, то опять не присваивает значение, а тупо скидывает на 0...

    Помогите пожалста!

    вот код редактирования новости:

    PHP:
    1.  
    2.  if($_REQUEST['lc']=='edit-news'){
    3.  
    4.  $id_news=$_GET['id-news'];
    5.  
    6.  $sql="SELECT * FROM `news` WHERE `id`=".$id_news;
    7.  $result=mysql_query($sql);
    8.  $num_results=mysql_num_rows($result);
    9.  
    10.  for ($i=0; $i<$num_results; $i++)
    11.      {
    12.      $row=mysql_fetch_array($result);
    13.      $id=$row["id"];
    14.      $tema=$row["tema"];
    15.      $id_newspage=$row["id_newspage"];
    16.  
    17.  $query = "SELECT id_newspage,name FROM newspage ";
    18.  if($pgs = mysql_query($query))
    19.      {
    20.      print "<select size=\"1\" NAME=\"id_newspage\">";
    21.      print "<option value=\"0\">Выберите категорию</option>";
    22.        while(list($id_newspage,$part)=mysql_fetch_array($pgs, MYSQL_NUM))
    23.        {
    24.            print "<option NAME=\"'id_newspage\" value=\"".$id_newspage."\">$part</option>";
    25.        }
    26.        print "</select>";
    27.        }
    28.      echo '
    29.     <FORM ACTION="news.php?lc=update" METHOD="post">
    30.  
    31.     <TABLE WIDTH=600 BORDER=0 CELLSPACING=0 CELLPADDING=4>
    32.     <TR><TD width=100>Тема:</td><td> <INPUT TYPE=text NAME=tema
    33.  
    34. VALUE="'.$tema.'" SIZE=80></td></tr>
    35.    
    36.     <TR ALIGN=center><TD WIDTH="100%" colspan=2 align=right>
    37.     <INPUT TYPE="hidden" NAME="idup" VALUE="'.$id.'">
    38.  
    39.     <INPUT TYPE="submit" VALUE="Сохранить">
    40.     </TD></TR></TABLE><BR><BR></FORM>
    41.     ';
    42.      }
    43.  }
    44.  
    45.  
    46.  //******************//
    47.  //      UPDATE      //
    48.  //******************//
    49.  if($_REQUEST['lc']=='update'){
    50.  
    51.  $tema=str_replace("'","`",$_POST['tema']);
    52.  $id_newspage=str_replace("'","`",$_POST['id_newspage']);
    53.  $sql="UPDATE news SET
    54.                   id_newspage='$id_newspage',
    55.                   tema='$tema',
    56.                   WHERE id=".$_POST['idup'];
    57.  $result=mysql_query($sql);
    58.  }
    59.  
    60.  
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    о_О
    А точно у id есть автоинкремент? Мне кажется, что по дефолту 0 у него стоит, а Вы добавляете пустую строку, вот и ноль получается.
     
  3. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    1. при чем тут $tema - это титле новости...
    2. автоинкремент у id самой новости есть (таблица news) и новости добавляются без проблем и все работает
    3. ид равен 0 при передаче раздела из одной таблицы (newspage - где ид добавленного раздела тоже работает) в другую (news)... вот при передаче ид теряется раздела теряется...
     
  4. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Блин, неужто это так сложно что даже никто помочь не может???
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Это не сложно, это просто чисто Ваша проблема, проблема невнимательности. Поэтому никто и не хочет разбираться "где потерялось", если бы Вы спросили про реализацию алгоритма, думаю, многие бы ответили.
     
  6. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    проверьте, стоит ли у вас INT y id
     
  7. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Да, INT(11) в обоих таблицах...
     
  8. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Ну если так никто не может помочь, то тогда объясните пожалуйста как работать с разделами (выборка раздела из выпадающего списка), если сами новости и разделы находятся в разных таблицах...
     
  9. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Ты уверен, что у тебя форма передает параметр id_newspage? Наверное его надо поставить в как значение value="id_newspage".
     
  10. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    В том и дело что я не уверен что передает.... Но value="id_newspage" не выход - я так пробовал уже, не помогает...
     
  11. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Для того, чтобы узнать, что передается, а что нет, включите в код print_r($_POST) - выводит на страничку содержимое массива.
    Можешь попробовать так:
    PHP:
    1. print "<option NAME='' value='".$id_newspage."'>$part</option>";
    А вообще, без знака $ в php ни одна переменная не работает :)
     
  12. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Блин, все разобрался! Правда весь вопрос был в value... Нужно было всего навсего немного изменить это: value=\"id_newspage\" на это: value=\"".$id_newspage."\"

    Спасибо всем откликнувшимся за внимание и за помощь, в особенности Cron, который подтолкнул меня на решение!
     
  13. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    Ребят, теперь проблема с редактированием новости... Когда пытаюсь редактировать новость, то даже если новости была присвоена категория, то при открытии страницы редактирования, категория новости не отображается, а просто находится вверху списка... И также когда пытаюсь изменить категорию и выбираю нужную из списка, то опять не присваивает значение, а тупо скидывает на 0...

    Помогите пожалста!

    вот код редактирования новости:

    PHP:
    1. if($_REQUEST['lc']=='edit-news'){
    2.  
    3. $id_news=$_GET['id-news'];
    4.  
    5. $sql="SELECT * FROM `news` WHERE `id`=".$id_news;
    6. $result=mysql_query($sql);
    7. $num_results=mysql_num_rows($result);
    8.  
    9. for ($i=0; $i<$num_results; $i++)
    10.     {
    11.     $row=mysql_fetch_array($result);
    12.     $id=$row["id"];
    13.     $tema=$row["tema"];
    14.     $id_newspage=$row["id_newspage"];
    15.  
    16. $query = "SELECT id_newspage,name FROM newspage ";
    17. if($pgs = mysql_query($query))
    18.     {
    19.     print "<select size=\"1\" NAME=\"id_newspage\">";
    20.     print "<option value=\"0\">Выберите категорию</option>";
    21.       while(list($id_newspage,$part)=mysql_fetch_array($pgs, MYSQL_NUM))
    22.       {
    23.           print "<option NAME=\"'id_newspage\" value=\"".$id_newspage."\">$part</option>";
    24.       }
    25.       print "</select>";
    26.       }
    27.     echo '
    28.    <FORM ACTION="news.php?lc=update" METHOD="post">
    29.  
    30.    <TABLE WIDTH=600 BORDER=0 CELLSPACING=0 CELLPADDING=4>
    31.    <TR><TD width=100>Тема:</td><td> <INPUT TYPE=text NAME=tema
    32.  
    33. VALUE="'.$tema.'" SIZE=80></td></tr>
    34.    
    35.    <TR ALIGN=center><TD WIDTH="100%" colspan=2 align=right>
    36.    <INPUT TYPE="hidden" NAME="idup" VALUE="'.$id.'">
    37.  
    38.    <INPUT TYPE="submit" VALUE="Сохранить">
    39.    </TD></TR></TABLE><BR><BR></FORM>
    40.    ';
    41.     }
    42. }
    43.  
    44.  
    45. //******************//
    46. //      UPDATE      //
    47. //******************//
    48. if($_REQUEST['lc']=='update'){
    49.  
    50. $tema=str_replace("'","`",$_POST['tema']);
    51. $id_newspage=str_replace("'","`",$_POST['id_newspage']);
    52. $sql="UPDATE news SET
    53.                   id_newspage='$id_newspage',
    54.                   tema='$tema',
    55.                   WHERE id=".$_POST['idup'];
    56. $result=mysql_query($sql);
    57. }
     
  14. Cron

    Cron Активный пользователь

    С нами с:
    10 июл 2008
    Сообщения:
    289
    Симпатии:
    0
    Адрес:
    Украина, Сумы
    Немного не понял логику:

    1.
    PHP:
    1. $num_results=mysql_num_rows($result);
    2. for ($i=0; $i<$num_results; $i++)
    3. {
    4. $row=mysql_fetch_array($result);
    Можно просто
    PHP:
    1. while($row=mysql_fetch_array($result)){
    2. Почему <select> формируется до открытия тега <FORM> - это значит, что он находиться вне формы и передан не будет.

    3.
    - вам не кажеться странным имя опции 'id_newspage (подсчитайте внимательно кол-во и качество кавычек).

    В общем, есть где копать :)
     
  15. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Во-первых, каким образом список выводится до объявления формы? Как это так? HTML учили?
    Во-вторых, у вас пересекаются две переменный с одним и тем же названием. $id_newspage Дайте первой переменной другое имя.
    В-третьих, чтобы категория была выбрана в списке, в атрибутах опции нужно вставить selected="selected"
    Проверяйте если первая переменная $id_newspage(с новым именем) равна $id_newspage, то вставить selected="selected" после value=\"".$id_newspage."\"

    плюс то что написал Cron
     
  16. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    C формой поправил, теперь при редактировании все сохраняется, тут не доглядел...

    При вставке selected="selected" когда открывается новость для редактирования, то категория выбирается из самого низа списка, а не та, которая была присвоена ранее...

    У меня все эти проблемы что возникают с категориями от того что сами новости и категории находятся в разных таблицах + я еще только учусь...
     
  17. darkgod

    darkgod Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    201
    Симпатии:
    0
    спасибо все за внимание, разобрался сам...