好的,所以我正在编写一个任务组织者脚本,我在将子任务标记为完整或不完整时遇到了一些问题..我的代码如下......
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所以那些得到在DB中设置为null因此使SEEM好像它们永远不会更新。我怎么能解决这个问题,解决这个问题的最佳途径......我尝试了一些变化但无济于事。
答案 0 :(得分:0)
好的,这是一个简单的解决方法/解决方案..
function completetask($tasktype, $id, $return_uri = 'edittask'){
if($tasktype == "subtask"){
$task = Subtask::find($id);
if($task->finished_at == null){
$task->finished_at = date("Y-m-d H:i:s", time());
$task->save();
switch($return_uri){
case 'showtask':
redirect('taskdisplay/showtask/' . $task->task_id);
break;
case 'edittask':
redirect('admintask/edittask/' . $task->task_id);
break;
default:
redirect('admintask/edittask/' . $task->task_id);
}
} else {
$task->finished_at = null;
$task->save();
switch($return_uri){
case 'showtask':
redirect('taskdisplay/showtask/' . $task->task_id);
break;
case 'edittask':
redirect('admintask/edittask/' . $task->task_id);
break;
default:
redirect('admintask/edittask/' . $task->task_id);
}
}
} else {
$task = Task::find($id);
if($task->finished_date == null && $task->taskcomplete == 0){
$task->finished_date = date("Y-m-d H:i:s", time());
$task->taskcomplete = 1;
$task->save();
redirect('admintask/edittask/' . $task->id);
} else {
$task->finished_date = null;
$task->taskcomplete = 0;
$task->save();
redirect('admintask/edittask/' . $task->id);
}
}
}