За последние 24 часа нас посетили 72089 программистов и 1652 робота. Сейчас ищут 944 программиста ...

Редактирование в базе данных

Тема в разделе "PHP для новичков", создана пользователем JohnBraxton, 30 окт 2011.

  1. JohnBraxton

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

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    Всем доброго времени суток. Подскажите пожалуйста где я ошибся? Есть 2 формы. Одня для редактирования, вторая (обработчик) для занесения отредактированной формы в базу данных. Дело в том что мне обработчик пишет что все изменил, но в базе изменений нет. Ниже предоставлены 2 кода:
    Форма, куда выводиться информация из базы данных (для редактирования и сохранения)


    PHP:
    1. <?php
    2. $db = mysql_connect ("host","login","password");
    3. mysql_select_db ("base",$db);
    4.  
    5.  
    6. $result = mysql_query("SELECT * FROM table WHERE id='$id'",$db);
    7. $myrow = mysql_fetch_array($result);//Извлекаем все данные с данным id
    8.  
    9.  
    10.  
    11. print <<<HERE
    12.  
    13. <form id="form1" name="form1" method="post" action="upload.php">
    14. <p>
    15. <label>Org:<br />
    16. <input value="$myrow[org]" type="text" name="org" id="org" size="40"/>
    17. </label>
    18. </p>
    19. <p>&nbsp;</p>
    20.  
    21. <input name="id" type="hidden" value="$myrow[id]" />
    22.  
    23.          <div align="center"><input name="submit" id="submit" type="submit" value="Сохранить изменения" /></div>
    24.        </form> 
    25. HERE;
    26.    
    27.       ?>

    А это код самого обработчика:
    PHP:
    1.  <?php
    2. if (isset($_POST['id'])) {$id = $_POST['id']; if ($id =='') {unset($id);}}
    3. if (isset($_POST['org'])) {$org = $_POST['org']; if ($org =='') {unset($org);}}
    4.  
    5. $db = mysql_connect ("host","login","password");
    6. mysql_select_db ("base",$db);
    7.    
    8.    
    9.    
    10.     if ($org== "")
    11.        {
    12.         echo "Переменная org - пустая!";
    13.         exit;
    14.        }
    15.        else
    16.        {
    17.         if ($id== "")
    18.        {
    19.         echo "Переменная id - пустая!";
    20.         exit;
    21.        }
    22.        }
    23.      
    24.      
    25. $result = mysql_query("UPDATE table SET org='$org' WHERE id='$id'");
    26.        
    27.        
    28.         if ($result == 'true') {echo "<p>Информация успешно сохранена</p>";}
    29.         else {echo "<p>Информация не сохранена!</p>";}
    30.      ?>
    Помогите пожалуйста... Очень надо. Заранее благодарен!
     
  2. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    что за $INN ?
    проверьте существует ли $id перед апдейтом , оно может и апдейтит , но пустой id
     
  3. JohnBraxton

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

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    при проверке, echo не ругается на отсутствие ID. А разве ошибка не должна вылазить при обновлении? Что он тогда обновляет?
     
  4. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Я не говорил что его нет
    в предыдущем коде небыло проверки $id , вот я и спросил
    если id нет , то он бы обновлял строку в которой id пустое , и даже если нету такой строки , то запрос в базу будет успешным
    и если что - исходный код спокойно редактируется и id меняется , важную информацию для проверки никогда не прячут в открытом виде в hidden
    так по коду - сказать нечего
    просмотрите массив $_POST через echo print_r("$_POST");
     
  5. JohnBraxton

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

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    Дело в том что пользователи будут редактировать эту страницу, поэтому id им не к чему.
    сейчас поработаю над id.
     
  6. JohnBraxton

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

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    в обработчике вывел все передаваемые переменные оператором echo. Оказалось. что он все передает, но передает старые данные, а не новые которые я изменил. нет идей?
     
  7. iliavlad

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

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    в этих местах при включении всех ошибок пхп будет ругаться на неопределенный индекс. надо вот так
    value="{$myrow['org']}"
     
  8. JohnBraxton

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

    С нами с:
    13 окт 2011
    Сообщения:
    44
    Симпатии:
    1
    Спасибо большое. Дело не в этом. Просто иногда нужно глаза разувыть когда код пишешь. Нашел я свой касяк. Но все равно всем огромное спасибо!!!