За последние 24 часа нас посетили 15540 программистов и 1612 роботов. Сейчас ищут 818 программистов ...

Поправьте скрипт, не пойму почему не удаляет поля из базы

Тема в разделе "PHP для новичков", создана пользователем metal373, 24 фев 2015.

  1. metal373

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

    С нами с:
    19 авг 2011
    Сообщения:
    5
    Симпатии:
    0
    Адрес:
    Челябинск
    База: id,name,nick,age,prime,status,data.
    delete.php выглядит так:
    Код (Text):
    1.  
    2. <?
    3.  
    4. /Соединение с базой*/
    5. $table = "aketa";
    6.  
    7. /* Создаем соединение */
    8. mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
    9.  
    10. /* Выбираем базу данных. Если произойдет ошибка - вывести ее */
    11. mysql_select_db($dbName) or die (mysql_error());
    12.  
    13. /* Если была нажата ссылка удаления, удаляем запись */
    14. $del = $query = "delete from $table where (id='$del')";
    15. /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    16. mysql_query($query) or die(mysql_error());
    17.  
    18. /* Заносим в переменную $res всю базу данных */
    19. $query = "SELECT * FROM $table";
    20. /* Выполняем запрос. Если произойдет ошибка - вывести ее. */
    21. $res = mysql_query($query) or die(mysql_error());
    22. /* Узнаем количество записей в базе данных */
    23. $row = mysql_num_rows($res);
    24.  
    25. /* Выводим данные из таблицы */
    26. echo ("
    27. <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    28. <html xmlns=\"http://www.w3.org/1999/xhtml\">
    29.  
    30. <head>
    31.  
    32.     <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />
    33.  
    34.     <title>Вывод и удаление данных из MySQL</title>
    35.  
    36. <style type=\"text/css\">
    37. <!--
    38. body { font: 12px Georgia; color: #666666; }
    39. h3 { font-size: 16px; text-align: center; }
    40. table { width: 700px; border-collapse: collapse; margin: 0px auto; background: #E6E6E6; }
    41. td { padding: 3px; text-align: center; vertical-align: middle; }
    42. .buttons { width: auto; border: double 1px #666666; background: #D6D6D6; }
    43. -->
    44. </style>
    45.  
    46. </head>
    47.  
    48. <body>
    49.  
    50. <h3>Вывод и удаление ранее сохраненных данных из таблицы MySQL</h3>
    51.  
    52. <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">
    53.  <tr style=\"border: solid 1px #000\">
    54.   <td><b>#</b></td>
    55.   <td align=\"center\"><b>Дата обращения</b></td>
    56.   <td align=\"center\"><b>Имена</b></td>
    57.   <td align=\"center\"><b>Ники</b></td>
    58.   <td align=\"center\"><b>Возраст</b></td>
    59.   <td align=\"center\"><b>Прайм</b></td>
    60.   <td align=\"center\"><b>Удаление</b></td>
    61.  </tr>
    62. ");
    63.  
    64. /* Цикл вывода данных из базы конкретных полей */
    65. while ($row = mysql_fetch_array($res)) {
    66.     echo "<tr>\n";
    67.     echo "<tr>\n";
    68.     echo "<td>".$row['id']."</td>\n";
    69.     echo "<td>".$row['data']."</td>\n";
    70.     echo "<td>".$row['name']."</td>\n";
    71.     echo "<td>".$row['nick']."</td>\n";
    72.     echo "<td>".$row['age']."</td>\n";
    73.     echo "<td>".$row['prime']."</td>\n</tr>\n";
    74.     /* Генерируем ссылку для удаления поля */
    75.     echo "<td><a name=\"del\" href=\"del_data.php?del=".$row["id"]."\">Удалить</a></td>\n";
    76.     echo "</tr>\n";
    77. }
    78.  
    79. echo ("</table>\n");
    80.  
    81. /* Закрываем соединение */
    82. mysql_close();
    83.  
    84. /* Выводим ссылку возврата */
    85. echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"anketa.html\">Вернуться назад</a></div>");
    86.  
    87. ?>
    При клике на удаление, страница попросту обновляется, не выводит ни какой ошибки, а база остается без изменения. Такая же ерунда и с апдейтом полей, так же обновляет страничку без каких либо действий..
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Re: Поправьте скрипт, не пойму почему не удаляет поля из баз

    потому что ты подставляешь в запрос переменную $del которую нигде никогда не объявлял. и говнокодить переставай - для вывода страницы можно закрыть поток пхп и писать сразу хтмл. а ты вместо этого делаешь эхо одной бессмысленно длинной строки которую приходится уродовать эскейпами каждой кавычки.
     
  3. metal373

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

    С нами с:
    19 авг 2011
    Сообщения:
    5
    Симпатии:
    0
    Адрес:
    Челябинск
    Re: Поправьте скрипт, не пойму почему не удаляет поля из баз

    Я понял где ошибки, но так как я чайник, я не знаю как их исправить..
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Re: Поправьте скрипт, не пойму почему не удаляет поля из баз

    Логика удаления сразу неправильная - скрипт delete.php не должен ничего выводить на экран, по хорошему (разве что он AJAX вызывается), он должен удалить строку и переадресовать (header("Loaction:...")) на скрипт вывода таблицы. Дальше, про $del. Сдаётся мне, что ты учил php по какой-нибудь древней книге, которая учит register_globals включать. Сейчас это не принято, поскольку не безопасно. Посему надо сначала $del получить каким-то методом. У тебя оно передаётся через GET-запрос, соответственно и получить его надо в начале скрипта из суперглобальной переменной $_GET:
    Код (Text):
    1.  
    2. $del = $_GET["del"];
    https://php.net/manual/ru/language.variables.superglobals.php