Здравствуйте, подскажите пожалуйста где ошибка в коде...происходит почему-то удаление всех записей сразу... Форма Код (PHP): <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body > <br><br><br><br><br> <center><h2>Удаление данных о туристе</h2></center> <form method="post" action="example2.php" > <table align="center"border=1> <tr align="center"> <td>Имя </td> <td>Возраст</td> <td>Вес</td> </tr> <?php $link = mysql_connect("localhost", "rau2","") or die("Could not connect"); mysql_select_db("baza2") or die("Could not select database"); $query="SELECT * FROM t"; $result = mysql_query($query) or die("Query failed"); while ($line = mysql_fetch_array($result)) { print "<tr align=\"center\"><td>$line[1]</td>"; print "<td>$line[2]</td>"; print "<td>$line[3]</td>"; print "<td>"; $v=$line[0]; ?> <input type=checkbox name=dfile[] value= "<?php echo $v ?>" > <?php print "</td></tr>"; } ?> </table> <br> <center><input type=submit name="ud" value=удалить></center> </form> </body> </html> example2.php Код (PHP): <HTML> <HEAD> <TITLE> Турагенство "Travel" - Добавление данных о туристе </TITLE> </HEAD> <BODY> <H1> Турагенство "Travel".</H1> <H2> Удаление данных о туристе.</H2> <?php if(isset($_POST["dfile"])) { $mass=$_POST["dfile"]; $i=0; while($mass[$i]) { $link = mysql_connect("localhost", "rau2","") or die("Could not connect"); mysql_select_db("baza2",$link) or die("Could not select database"); $s1="DELETE FROM t WHERE $mass[$i]"; $result1 = mysql_query($s1) or die("Query failed"); $i++; } } ?> </BODY> </HTML>
Sql запрос не верный $s1="DELETE FROM t WHERE $mass[$i]"; не указано условие нужно на пр. так $s1="DELETE FROM t WHERE name = '$mass[$i]'"; так же не забывай фильтровать данные использую mysql_real_escape_string()
Добавлю, что подключаться к б.д. на каждой итерации цикла и выбирать базу данных по-новой - это... ну, в общем весьма неправильно. Вынеси это до цикла. Да и сам запрос на удаление тоже. Тут вообще цикл не нужен - делай implode по запятой и один запрос, в котором все перечисленные через запятую значения будут попадать в MySQL функции IN().
mysql_real_escape_string() можно подробней про эту функцию и как ее правильно использовать и где именно в коде?
Самый лучший сайт где описываются ф-и, примеры и их баги это php.net ну а о mysql_real_escape_string() можешь почитать здесь https://php.ru/manual/function.mysql-real-escape-string.html
На php.net описываются сами функции. Та ссылка, которую я предложил ведёт на статью для новичков о том, почему вообще нужно слэшить данные, про SQL-инъекции и пр., всё на русском и доступно
вынес подключение к базе за цикл...указал Код (Text): $s1="DELETE FROM t WHERE name = $mass[$i]"; в результате теперь вообще не удаляются данные...и никаких ошибок не выкидывает...что делать???
форма Код (Text): <html> <HEAD> <META http-equiv=content-type content="text/html; charset=windows-1251"> </HEAD> <body > <br><br><br><br><br> <center><h2>Удаление данных о туристе</h2></center> <form method="post" action="example2.php" > <table align="center"border=1> <tr align="center"> <td>Имя </td> <td>Возраст</td> <td>Вес</td> </tr> <?php $link = mysql_connect("localhost", "rau2","") or die("Could not connect"); mysql_select_db("baza2") or die("Could not select database"); $query="SELECT * FROM t"; $result = mysql_query($query) or die("Query failed"); while ($line = mysql_fetch_array($result)) { print "<tr align=\"center\"><td>$line[1]</td>"; print "<td>$line[2]</td>"; print "<td>$line[3]</td>"; print "<td>"; $v=$line[0]; ?> <input type=checkbox name=dfile[] value= "<?php echo $v ?>" > <?php print "</td></tr>"; } ?> </table> <br> <center><input type=submit name="ud" value=удалить></center> </form> </body> </html> "example2.php"...... Код (Text): <HTML> <HEAD> <TITLE> Турагенство "Travel" - Добавление данных о туристе </TITLE> </HEAD> <BODY> <H1> Турагенство "Travel".</H1> <H2> Удаление данных о туристе.</H2> <?php if(isset($_POST["dfile"])) { $mass=$_POST["dfile"]; $i=0; $link = mysql_connect("localhost", "rau2","") or die("Could not connect"); mysql_select_db("baza2",$link) or die("Could not select database"); $s1="DELETE FROM t WHERE name = '$mass[$i]'"; $result1 = mysql_query($s1) or die("Query failed"); while($mass[$i]) { $i++; } } ?> </BODY> </HTML>
нет))))я просто новичок вообще во всем этом деле...хочу научиться ...вот скачал скрипт уже не помню с какого сайта...создал примитивную БД ...вот хочу написать несколько скриптов, чтобы производить некоторые операции с этой базой(добавление, удаление, обновление данных), тем самым вникнуть в весь этот "темный лес"...но пока не очень получается((((не силен я в программировании...помоги если можешь...буду очень признателен
это означает, что ты даешь команду удалить юзера, имя которому 12 вот теперь иди и смотри в БД, есть ли у тебя юзер, у которого name равно 12
А ты проверь есть ли хотя бы 1 пользователь с именами которые находятся в $mass[$i] Возьми за привычку экранировать все данные которые ты подставляешь в sql запросы
откуда оно тогда вообще берется? я использую checkbox ставлю галочку на против той строки которую хочу удалить
Берется что??? Сможешь для примера дать строку из базы.В массиве ты передаешь числа, а имена пользователей то же числа??? Или ты все таки хотел удалять по ID номеру или по другому идентификатору?