Здравствуйте, передо мной стоит задача сделать кнопку, для удаление записей из базы данных. Т.е. Напротив каждой записи должна быть кнопка(ссылка) на удаление строки с этим id. Почитал несколько примеров, попробовал сделать - не получилось. Вот, собственно код, чувствую что чего-то не хватает, но не понимаю чего, подскажите пожалуйста, или скиньте ссылку на то, что можно почитать еще на эту тему, чтобы до меня дошло) Код (PHP): <html> <head> <title></title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <div id="container"> <? include "Header.html"; include "SideBar.html"; ?> <body bgcolor="#FFFFFF" text="#000000"> <center mm_ta_src="dede"> <h2>Подготовка новых лекционных курсов</h2> </center> <? /* Соединяемся с базой данных */ $hostname = "localhost"; // название/путь сервера, с MySQL $username = "root"; // имя пользователя (в Denwer`е по умолчанию "root") $password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым) $dbName = "Diplom"; // название базы данных /* Таблица MySQL, в которой хранятся данные */ $table = "Podgotovka_Lekc_Kursov1"; /* Создаем соединение */ mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение"); // в какой кодировке получать данные от клиента @mysql_query('set character_set_client="utf8"'); // в какой кодировке получать данные от БД для вывода клиенту @mysql_query('set character_set_results="utf8"'); // кодировка в которой будут посылаться служебные команды для сервера @mysql_query('set collation_connection="utf8_general_ci"'); /* Выбираем базу данных. Если произойдет ошибка - вывести ее */ mysql_select_db($dbName) or die (mysql_error()); /* Если была нажата ссылка удаления, удаляем запись */ $del = $query = "delete from $table where (id='$del')"; /* Выполняем запрос. Если произойдет ошибка - вывести ее. */ mysql_query($query) or die(mysql_error()); /* Заносим в переменную $res всю базу данных */ $query = "SELECT * FROM $table"; /* Выполняем запрос. Если произойдет ошибка - вывести ее. */ $res = mysql_query($query) or die(mysql_error()); /* Узнаем количество записей в базе данных */ $row = mysql_num_rows($res); /* Выводим данные из таблицы */ echo (" <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\"> <head> <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf8_general_ci\" /> <title>Вывод и удаление данных из MySQL</title> <style type=\"text/css\"> <!-- body { font: 12px Georgia; color: #666666; } h3 { font-size: 16px; text-align: center; } table { width: 700px; border-collapse: collapse; margin: 0px auto; background: #E6E6E6; } td { padding: 3px; text-align: center; vertical-align: middle; } .buttons { width: auto; border: double 1px #666666; background: #D6D6D6; } --> </style> </head> <body> <h3>Вывод и удаление ранее сохраненных данных из таблицы MySQL</h3> <table border=\"1\" cellpadding=\"0\" cellspacing=\"0\"> <tr style=\"border: solid 1px #000\"> <td><b>№</b></td> <td align=\"center\"><b>ФИО</b></td> <td align=\"center\"><b>Наимнование курсов</b></td> <td align=\"center\"><b>Объем часов</b></td> <td align=\"center\"><b>Семестр</b></td> <td align=\"center\"><b>Год</b></td> <td align=\"center\"><b>Удаление</b></td> </tr> "); /* Цикл вывода данных из базы конкретных полей */ while ($row = mysql_fetch_array($res)) { echo "<tr>\n"; echo "<td>".$row['id']."</td>\n"; echo "<td>".$row['FIO']."</td>\n"; echo "<td>".$row['CourseName']."</td>\n"; echo "<td>".$row['Hours']."</td>\n"; echo "<td>".$row['Semestr']."</td>\n"; echo "<td>".$row['Year']."</td>\n"; /* Генерируем ссылку для удаления поля */ echo "<td><a name=\"del\" href=\"3_del.php?del=".$row["id"]."\">Удалить</a></td>\n"; echo "</tr>\n"; } echo ("</table>\n"); /* Закрываем соединение */ mysql_close(); /* Выводим ссылку возврата */ echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"index.html\">Вернуться назад</a></div>"); include "Footer.html"; ?> </div> </body> </html>
Код (PHP): $del = $query = "delete from $table where (id='$del')"; у тебя $del пустой Код (PHP): $del=$_GET['del']; $query = "DELETE FROM {$table} WHERE (id='{$del}')"; только так лучше не делать
Убрал, не помогает, мне кажется ошибка где-то тут: Код (PHP): echo "<td><a name=\"del\" href=\"3_del.php?del=".$row["id"]."\">Удалить</a></td>\n"; Хотя может и нет, не знаю(
Вообще правильнее было бы как-то так: Код (PHP): /* Если была нажата ссылка удаления, удаляем запись */ if(isset($_GET['del'])) { $del = (int) $_GET['del']; $query = "DELETE FROM `$table` WHERE `id` = $del"; /* Выполняем запрос. Если произойдет ошибка - вывести ее. */ mysql_query($query) or die($query . '<br />' . mysql_error()); } Запрос на удаление ты передаёшь скрипту 3_del.php . Тот код, который ты выложил в теме - это и есть тот самый 3_del.php?
$row["id"] замени на $row['id'] Добавлено спустя 21 секунду: и всё заработает Добавлено спустя 2 минуты 27 секунд: Вообще, всегда пиши индексы ассоциативных массивов в одинарных кавычках. А если уж так хочется в двойные засунуть - тогда в фигурные скобки Код (PHP): echo "<td><a name=\"del\" href=\"3_del.php?del={$row["id"]}\">Удалить</a></td>\n";
Отлаживай. Начни с самого начала - смотри, приходят ли параметры ГЕТ в твой скрипт. Для этого можешь написать где-нибудь в начале скрипта Код (Text): print_r($_GET); и потом посмотреть на странице, что тебе приходит в ГЕТ, когда нажимаешь ссылку свою.
Видимо в этом месте Код (PHP): echo "<td><a name=\"del\" href=\"3_del.php?del=".$row["id"]."\">Удалить</a></td>\n"; в переменной Код (PHP): $row['id'] скорее всего, ничего нет. Или вообще такой переменной не существует. Чтобы убедиться - можешь открыть исходный код сгенерированной HTML-странички в браузере (вроде везде ctrl+u) и посмотреть что там на месте, где должен быть id. Возможно, нету в б.д. такого поля? Может быть оно называется как-то по-другому? Может быть, там id написан с заглавной буквы? Можешь там, где в цикле выводятся строки написать print_r($row); и посмотреть, какие переменные приходят из б.д.
Огромнейшее спасибо!! У меня действительно в базе было ID, а тут id, ппц, глупейшая ошибка. Огромное спасибо, а то 4 дня мучился: "что не так?"