Проблем с триене на множество артикули.

metal_head

Registered
Пиша форум и се опитвам да направя система за триене на темите във форумите.
Идеята е на всяка тема да сложа checkbox и така да маркирам които искам теми. След това с бутон Изтрий да изтрия маркираните теми. И ето какво имам:

Имам такова на всеки ред (всяка отделна тема)
<input type='checkbox' name='thread_id[]'>

Имам и бутон събмит:
<BUTTON class='png button validate' name='del_threads' type='submit'>Изтрий</BUTTON>

Всичко това е заградено във форма с метод POST.

В PHP-то имам следната проверка:

PHP:
if(isset($_POST['del_threads'])){
$values = implode(',', array_map('intval', $_POST['thread_id']));
mysql_query("DELETE FROM forum_threads WHERE id IN ($values)");
mysql_query("DELETE FROM forum_posts WHERE thread_id IN ($values)");
echo "DELETE FROM forum_threads WHERE id IN ($values)";
}

Проблемът е, че нищо не се изтрива, затова сложих и това echo със заявката, което изпринтва на страницата:

DELETE FROM forum_threads WHERE id IN (0)

Защо не работи?
 
Как по точно трябва да го използвам това? Трябва да върна всички стойности от $_POST ли ?
 
Код:
if(isset($_POST['del_threads'])){
var_dump($_POST);
$values = implode(',', array_map('intval', $_POST['thread_id']));
mysql_query("DELETE FROM forum_threads WHERE id IN ($values)");
mysql_query("DELETE FROM forum_posts WHERE thread_id IN ($values)");
echo "DELETE FROM forum_threads WHERE id IN ($values)";
}
И покажи какъв е резултата.
 
О, ясно. Ами ето какво хвърля:

array(2) { ["thread_id"]=> array(1) { [0]=> string(2) "on" } ["del_threads"]=> string(0) "" }
 
Да, пропуснал бях това, но и сега не иска да трие. Ето цялото нещо, което хвърля, след като маркирам няколко теми и дам изтрий:

array(2) { ["thread_id"]=> array(3) { [7]=> string(2) "on" [6]=> string(2) "on" [5]=> string(2) "on" } ["del_threads"]=> string(0) "" } DELETE FROM forum_threads WHERE id IN (0,0,0)
 
metal_head каза:
Да, пропуснал бях това, но и сега не иска да трие. Ето цялото нещо, което хвърля, след като маркирам няколко теми и дам изтрий:

array(2) { ["thread_id"]=> array(3) { [7]=> string(2) "on" [6]=> string(2) "on" [5]=> string(2) "on" } ["del_threads"]=> string(0) "" } DELETE FROM forum_threads WHERE id IN (0,0,0)

Код:
if(isset($_POST['del_threads'])){

$values = implode(',', array_keys(array_map('intval', $_POST['thread_id'])));

mysql_query("DELETE FROM forum_threads WHERE id IN ($values)");

mysql_query("DELETE FROM forum_posts WHERE thread_id IN ($values)");

echo "DELETE FROM forum_threads WHERE id IN ($values)";

}
 
Ами така дали ще стане:

Код:
if(isset($_POST['del_threads'])){
$del=$_POST['thread_id'];
while (list ($key,$val) = @each ($del)) { 
mysql_query("DELETE FROM mesage WHERE id='$val' ") or die("Mesage Database DELETE Error");
}
}

<input type='checkbox' name='thread_id[]' value='$thread[id]' />

<BUTTON class='png button validate' name='del_threads' type='submit'>Изтрий</BUTTON>


// $thread[id] - взетото ид за тема от базата данни

:)
 
metal_head каза:
Благодаря ти! С array_keys стана!

Мерси, и пак да заповядаш.Ама си дал точка на него, въпреки че изписах 6 поста да намеря проблема, и да го реша.Както и да е.
 

Back
Горе