Чекбоксами отмечаю те записи, которые собираюсь удалить. Но при нажатии кнопки [Удалить], скрипт обрабатывает только одну запись. код на удаление вот такой: PHP: <?php if($_POST["dfile"]) { $mass=$_POST["dfile"]; $i=0; while($mass[$i]) { // Устанавливаем соединение с базой данных include "../include/config.php"; $s="DELETE FROM Resources WHERE idres=$mass[$i]"; $result = mysql_query($s) or die("Query failed"); $i++; } Header("Location: otvet.php?i=2"); } ?> помогите разобраться, пжлста =\
Попробуй PHP: <?php if($_POST["dfile"]) { $mass=$_POST["dfile"]; $i=0; foreach($mass as $i => $val) { // Устанавливаем соединение с базой данных include "../include/config.php"; $s="DELETE FROM Resources WHERE idres=$mass[$i]"; $result = mysql_query($s) or die("Query failed"); $i++; } Header("Location: otvet.php?i=2"); }
вот код на форму PHP: <?php // ПОДКЛЮЧАЕМ КОНФИГУРАЦИОННЫЙ ФАЙЛ include "../include/config.php"; $query="select * from resources order by Name"; $result = mysql_query($query) or die("Query failed"); while ($line = mysql_fetch_array($result)) { print "<tr align=\"center\"><td>$line[idres]</td>"; print "<td>$line[catid]</td>"; print "<td>$line[Name]</td>"; print "<td>$line[Link]</td>"; print "<td>$line[Hint]</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>
Кажется я понял - у тебя в первом письме вот этот код: стоит ВНУТРИ цикла. То есть - ты в каждом проходе цикла подключаешь базу данный. Один раз она подключает, а второй раз она тебя посылает. Корочь - вынеси подключение перед циклом. И, когда оформляешь письмо, пользуйся не кнопкой "Code", а кнопкой "PHP" для подсветки кода - тогда лучше вид и ошибки сразу видны.
Код (Text): <?php if($_POST["dfile"]) { $mass=$_POST["dfile"]; $i=0; while($mass[$i]) { // Устанавливаем соединение с базой данных include "../include/config.php"; $s="DELETE FROM Resources WHERE idres=$mass[$i]"; $result = mysql_query($s) or die("Query failed"); $i++; } Header("Location: otvet.php?i=2"); } ?> Писец. В цикле делаем туеву кучу запросов на удление да к базе коннекктимся также каждый цикл. Это больше, чем писец. PHP: <?php if ($_POST['dfile']){ include '../include/config.php'; if (mysql_query('delete from `resources` where `idres` in ('.join (', ', $_POST['dfile']).')')) header('Location: otvet.php?i=2'); }
Плохо это. А после этих слов - решение, как этого избежать. Волшебные слова "join" и "in". А плохо это тем, что многократный вызов базы - это ресурсоёмкая штука. Если этого можно избежать, то лучше этого избежать. Можешь замерить скорость работы твоего варианта и того, который тебе предложили. Как это сделать. Например, с помощью microtime: PHP: <? function getminitime() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } $time1=getminitime(); здесь сам скрипт $time2=getminitime(); echo "Скрипт работал: ".($time2-$time1)." секунд."; ?>
так я студент, молодой ещё...зеленый =\ пока стараюсь реализовывать идеи как могу, а lexa я ни в коем случае не хотел как-то обидеть (ему мои извинения) RomanBush спасибо тебе за наставления!
Ниче. Они грубые, неженственные, но хорошие программисты ) Хоть и выражаются грубо и прямолинейно, но как раз таки пытаются помочь )