За последние 24 часа нас посетили 37898 программистов и 1806 роботов. Сейчас ищут 823 программиста ...

Обновление записей в db MYSQL посредством php

Тема в разделе "PHP и базы данных", создана пользователем samara, 14 май 2015.

  1. samara

    samara Новичок

    С нами с:
    5 май 2015
    Сообщения:
    46
    Симпатии:
    0
    Начал постепенно изучать PHP, наткнулся на интересный урок, это не реклама и не флуд и т.д http://www.html.by/threads/986-Urok-prakticheskogo-primenenija-PHP-MySQL
    Все получилось, все работает, были проблемы с удалением, но нашел на вашем форуме решение, только вот одно НО:
    не работает update, тоесть нередактируются записи, если Вам не сложно загляните в код, помогите советом:
    Код (PHP):
    1. <?
    2.  
    3. /* Соединяемся с базой данных */
    4. $hostname = "localhost"; // название/путь сервера, с MySQL
    5. $username = "root"; // имя пользователя (в Denwer`е по умолчанию "root")
    6. $password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым)
    7. $dbName = "test_base"; // название базы данных
    8.  
    9. /* Таблица MySQL, в которой хранятся данные */
    10. $table = "test_table";
    11.  
    12. /* Создаем соединение */
    13. mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
    14.  
    15. /* Выбираем базу данных. Если произойдет ошибка - вывести ее */
    16. mysql_select_db($dbName) or die (mysql_error());
    17.  
    18. /* Если была нажата кнопка редактирования, вносим изменения */
    19. if(@$submit_edit) {
    20. $query = "UPDATE $table SET name='$test_name', email='$test_mail', theme='$test_theme', message='$test_mess' WHERE id='$update'";
    21. /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    22. mysql_query($query) or die (mysql_error());
    23. }
    24.  
    25. /* Заносим в переменную $res всю базу данных */
    26. $query = "SELECT * FROM $table";
    27. /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    28. $res = mysql_query($query) or die(mysql_error());
    29. /* Узнаем количество записей в базе данных */
    30. $row = mysql_num_rows($res);
    31.  
    32. /* Выводим данные из таблицы */
    33. echo ("
    34. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    35. <html xmlns=\"http://www.w3.org/1999/xhtml\">
    36.  
    37. <head>
    38.  
    39.     <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />
    40.  
    41.     <title>Редактирование и обновление данных</title>
    42.  
    43. <style type=\"text/css\">
    44. <!--
    45. body { font: 12px Georgia; color: #666; }
    46. h3 { font-size: 16px; text-align: center; }
    47. table { width: 400px; border-collapse: collapse; margin: 5px auto; background: #E6E6E6; }
    48. td { padding: 3px; vertical-align: middle; }
    49. input { width: 250px; border: solid 1px #CCC; color: #FF6666; }
    50. textarea { width: 250px; height: 100px; border: solid 1px #CCC; color: #FF6666; }
    51. .buttons { width: auto; border: double 1px #666; background: #D6D6D6; color: #000; }
    52. #num { width: 20px; text-align: right; margin-right: 5px; float: right; }
    53. -->
    54. </style>
    55.  
    56. </head>
    57.  
    58. <body>
    59.  
    60. <h3>Редактирование и обновление данных в таблице MySQL</h3>
    61. ");
    62.  
    63. /* Цикл вывода данных из базы конкретных полей */
    64. while ($row = mysql_fetch_array($res)) {
    65.     echo "<form action=\"update_data.php\" method=\"post\" name=\"edit_form\">\n";
    66.     echo "<input type=\"hidden\" name=\"update\" value=\"".$row["id"]."\" />\n";
    67.     echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">\n";
    68.     echo "<tr>\n";
    69.     echo "<td colspan=\"2\" style=\"border-bottom:solid 1px #CCCCCC;\"><b><i><div id=\"num\">#".$row["id"]."</div>".$row['data']."</b></i></td>\n";
    70.     echo "</tr><tr>\n";
    71.     echo "<td>Имя пользователя:</td><td><input type=\"text\" value=\"".$row['name']."\" name=\"test_name\" /></td>\n";
    72.     echo "</tr><tr>\n";
    73.     echo "<td>E-Mail пользователя:</td><td><input type=\"text\" value=\"".$row['email']."\" name=\"test_mail\" /></td>\n";
    74.     echo "</tr><tr>\n";
    75.     echo "<td>Тема сообщения:</td><td><input type=\"text\" value=\"".$row['theme']."\" name=\"test_theme\" /></td>\n";
    76.     echo "</tr><tr>\n";
    77.     echo "<td>Сообщение:</td><td><textarea name=\"test_mess\">".$row['message']."</textarea></td>\n";
    78.     echo "</tr><tr>\n";
    79.     echo "<td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit_edit\" class=\"buttons\" value=\"Сохранить изменения\" /></td>\n";
    80.     echo "</tr></table></form>\n\n";
    81. }
    82.  
    83. /* Закрываем соединение */
    84.  
    85. /* Выводим ссылку возврата */
    86. echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"index.html\">Вернуться назад</a></div>");
    87.  
    88. ?>
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Я б по рукам дал за такое, без обид.

    Равно как и за прямую вставку переменных в запрос. В итоге код дырявый как решето.

    Выведите запрос на страницу через echo, скопируйте и вставьте в тот же phpMyAdmin, и поглядите, что будет.

    Добавлено спустя 1 минуту 52 секунды:
    И да, по традиции, ставшей уже просто чуть ли не неким ритуалом, я сообщаю, что не нужно использовать ,mysql_ расширение, уходите в сторону mysqli_, вы спрашиваете почему, я отвечаю, что mysql_ уже объявлен устаревшим и, скоро, вообще работать не будет, вы говорите, что пока все ок и учитесь, я отвечаю, что у mysql_ куча проблем, в том числе с безопасностью, и сам ее API по сравнению с mysqli_ немного бедноват.
     
  3. samara

    samara Новичок

    С нами с:
    5 май 2015
    Сообщения:
    46
    Симпатии:
    0
    А по каким урокам учиться? дайте хороший источник...
    Код (Text):
    1. if(@$submit_edit)
    Покажите что исправить?!

    Добавлено спустя 2 минуты 45 секунд:
    Так и делаю, много раз мне советовали =) но все равно спасибо =)
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Почитать, что делает @, понять, как можно обойтись без нее через isset или empty;

    Советую вообще начинать программировать не с PHP, а с любого другого языка, желательно, десктопного.
     
  5. samara

    samara Новичок

    С нами с:
    5 май 2015
    Сообщения:
    46
    Симпатии:
    0
    Проблема только в этом?
    Код (PHP):
    1. if(@$submit_edit) {
    2. $query = "UPDATE $table SET name='$test_name', email='$test_mail', theme='$test_theme', message='$test_mess' WHERE id='$update'";
    Сейчас посмотрю про @.....
    С какого языка начать?

    Добавлено спустя 4 минуты 9 секунд:
    Код (PHP):
    1. if (isset($_POST['submit_edit'])) { 
    2. $query = "UPDATE $table SET name='$test_name', email='$test_mail', theme='$test_theme', message='$test_mess' WHERE id='$update'";
    3. mysql_query($query) or die (mysql_error());
    4. } 
    Так, нет?!
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Я б посоветовал что-то низкоуровневое, типа Си++, но это может быть хардкором. Учиться алгоритмизации нужно на чем попроще, типа того же Delphi. Учиться именно программировать.