Orm 深层嵌套if语句问题
好的,我正在编写一个任务管理器脚本,在将子任务标记为完成或未完成时遇到了一些问题。。我的代码如下Orm 深层嵌套if语句问题,orm,php-5.3,nested-loops,forms,http-post,Orm,Php 5.3,Nested Loops,Forms,Http Post,好的,我正在编写一个任务管理器脚本,在将子任务标记为完成或未完成时遇到了一些问题。。我的代码如下 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){
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,因此看起来好像它们从未更新过。如何修复此问题?处理此if语句的最佳方法是什么。我尝试了一些变体,但没有效果 好的,一个简单的解决方法是
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);
}
}
}
子任务::按任务id查找所有任务
几乎像是模型用法!基尔。但是$\u POST['finished']
在那里做什么?你关掉通知了吗?;)是的,我正在使用CodeIgniter和php activerecord。它一开始只是一个简单的任务组织者,现在它离一个成熟的项目经理不远了……好吧,不远了……但仍然如此$_POST['finished']应该表示任务已完成,如果未检查,则应重新启用任务。我已经完全弄明白了,但我花了大约一天半的时间追踪鬼魂,试图弄明白这一点。