Php и Checkbox

negodiy

Новичок
объясните дураку

вот есть у меня данные из БД выводящиеся циклом напротив каждой строки стоит чекбокс. имя чекбокса - id из базы.
ставлю флажки-сумбит - скриптом удаляется запись.
трабл:
медленно пашет обработчик формы. окно браузера выдает "страница не найдена", но все же через пхпмуадмин видно что строки таки удалились.
вопрос:
подскажите где я накосячил.
код обработчика:
PHP:
$num = $HTTP_POST_VARS['num'];
$conn = db_connect();
for($i = 0; $i < $num; $i++){
$n = $num[$i]['num'];

$sql = "delete from news_polit where id = $n";
$result = mysql_query($sql, $conn);
}
 

SelenIT

IT-лунатик :)
negodiy

1) Что с чем ты сравниваешь в условии цикла? Число с массивом, что ли? [telepat][m]count[/m][/telepat]
Поэтому-то, видимо, цикл у тебя никогда не заканчивается...

2) Целый запрос на каждый id - расточительство:
PHP:
...
for($i = 0; $i < count($num); $i++){
   $n[] = $num[$i]['num'];
}
if (count($n)) {
   $sql = "delete from news_polit where id IN (" .  implode(', ', $n) . ")";
   mysql_query($sql, $conn);
}
Если переделать массив $num, поменяв порядок индексов, все станет еще проще - даже цикл не понадобится!

3) $HTTP_что-то_VARS давно устарели. Если уж влез в чужую тему - хотя бы прочитай ее с начала :)
 

negodiy

Новичок
Автор оригинала: SelenIT
negodiy

1) Что с чем ты сравниваешь в условии цикла? Число с массивом, что ли?
ну на выходных скрипт писать и не то сравнивать станешь )))

большое спасибо за ответ!

в конечном итоге код принял следующий вид :
PHP:
$num = $HTTP_POST_VARS['num'];
$conn = db_connect();
$sql = "delete from news_polit where id  IN (".implode(',', $num).")"; 
mysql_query($sql, $conn); 
if (!$result) {
  print "There was a database error when executing <pre>$sql</pre>";
  print mysql_error();
 exit;}
else {
print "Ok";
}
вроде бы работает строки удаляет, но выводит (к примеру)следующее:
There was a database error when executing
delete from news_polit where id IN (321 ,322 ,323 ,324 ,325 ,326 ,327 ,328 ,329 )

соответственно напротив данных id стояли галки.
сижу, думаю, че не так. ))
 

negodiy

Новичок
SelenIT
)) да, действительно, откуда))
PHP:
$result = mysql_query($sql, $conn);
вот теперь все работает как надо. спасибо всем. но вопросы мне кажется у меня еще будут))
 
Сверху