Необходимо настроить массивы
Есть перечень всех заданий, который отражен в таблице tasks, а перечень выполненных заданий отражен в таблице bonus.
Первоначально участнику выводится весь список заданий по id, а когда он выполнил какое-либо задание (при выполнении запись производится в таблицу bonus, где tid=id), оно не должно больше выводится.
Первоначально без условий все задания получаю так:
$tasks = mysql_query("select * FROM tasks");
while ($rown = mysql_fetch_array($tasks)) {
$task[] = array(
"id" => $rown['id'],
"text" => $rown['text'],
"url" => $rown['url'],
"bonus" => $rown['bonus']);
}
А вывожу так:
foreach($task as $item => $n){
echo "Задание #$n[id]
$n[text]
Выполнить задание | Получить бонус $n[bonus] WMR
";
}
Вот хотел доработать скрипт, чтобы перед выводом заданий из таблицы tasks производилась проверка выполненных заданий из таблицы bonus. Проверка осуществляет по параметру id из таблицы tasks и tid из таблицы бонус. Необходимо выводить только те задания, когда их id не равен tid.
Пробовал сделать так через двойной массив:
$bons = mysql_query("select * FROM bonus WHERE login='$l'");
while ($rowb = mysql_fetch_array($bons)) {
$bon[] = array(
"tid" => $rowb['tid']);
$tasks = mysql_query("select * FROM tasks WHERE id!='$rowb[tid]'");
while ($rown = mysql_fetch_array($tasks)) {
$task[] = array(
"id" => $rown['id'],
"text" => $rown['text'],
"url" => $rown['url'],
"bonus" => $rown['bonus']);
}
}
Вывожу так:
foreach($task as $item => $n){
echo "Задание #$n[id]
$n[text]
Выполнить задание | Получить бонус $n[bonus] WMR
";
}
Но в этом случае выводит дважды задания, при чем в первом выводе убирает одного из совпадений id=tid, а во втором выводе убирает второе совпадение. В данном примере 11 заданий и 2 уже выполнены.
Как сделать так, чтобы сразу убрать два задания из общего списка выводимых? Может как-то через join?
Готов немного заплатить на WM.