Хорошо, я пишу скрипт организатора задач и у меня возникают некоторые проблемы с маркировкой подзадач как завершенных или не завершенных ... мой код выглядит следующим образом ...
if($_POST['finished']){ // $_POST['finished'] is an html array of check boxes
$subtask = Subtask::find_all_by_task_id($task->id);
foreach($subtask as $stask){
foreach($_POST['finished'] as $fin){
if($stask->id == $fin){
$stask->finished_at = date('Y-m-d H:i:s', time());
$stask->save();
} elseif($stask->id != $fin){
$stask->finished_at = "";
$stask->save();
}
}
}
} else { // This works as expected when un-checking all checkboxes
$subtask = Subtask::find_all_by_task_id($task->id);
foreach($subtask as $stask){
if($stask->finished_at != null){
$stask->finished_at = null;
$stask->save();
}
}
}
Моя проблема, на мой взгляд, заключается в том, что оператор if распространяется на оба значения (в эту минуту есть только две подзадачи), когда он достигает последних значений, все остальные $ fin больше не равны $ stask-> id, поэтому они устанавливаются вернуться к нулю в БД, следовательно, сделав его SEEM, как будто они никогда не обновляются .. Как я могу это исправить, что является лучшим путем для решения этого оператора if .. Я пробовал несколько вариантов, но безрезультатно.