如何限制主任务不显示在剩余循环中


how to limit to main task to be not to display in remaining loop?

我有这个查询并编码

if(isset($_REQUEST['main_task']) && ($_REQUEST['main_task'] !='')) {
    $query_task  = "SELECT * from manage_project_task where  prj_task_name LIKE  '%".$_REQUEST['main_task']."%' and prj_task_parent_id='0'";//Sort Main Task
} else {
    $query_task  = "SELECT * from manage_project_task where prj_task_project_id=$project_id  and prj_task_parent_id='0'";//Sort Main Task
}
$SelectQuery = $query_task." LIMIT ".$start.",".$limit."";      
$result_task =  $db->GetALL($SelectQuery);  
$cnt_task=count($result_task);
if ($db->Affected_Rows($result_task)>0)         
{   
    for ($i=0;$i<$cnt_task;$i++) { 
        $actual_hours_worked=0;         
        $actual_hours_worked2=0;
        // subtask hyperlink
        if (isset($_REQUEST['sub_task']) && ($_REQUEST['sub_task'] !='')) {
            $query_subtask1  = "SELECT * from manage_project_task where prj_task_parent_id='".$result_task[$i]['prj_task_id']."' AND prj_task_name LIKE '%".$_REQUEST['sub_task']."%'";
        } else {
            $query_subtask1  = "SELECT * from manage_project_task where prj_task_parent_id='".$result_task[$i]['prj_task_id']."'";
        }
        $result_subtask1 =  $db->GetALL($query_subtask1);
        $cnt_subtask1=count($result_subtask1);
    }
}

这给了我串行模式的主任务和子任务。现在我已经取了2个文本字段1作为主任务,2作为子任务。如果我只在第二个文本字段中输入子任务,那么它会用它的主任务搜索子任务,但同时也会给出剩余的主任务,如

  • 主要任务
  • 子任务(第二个字段中的匹配字符串(
  • 主要任务
  • 主要任务
  • 主要任务
  • 主要任务

我认为这是因为第二个循环取决于第一个循环。所以我的问题是,hw只能得到与其主任务匹配的子任务,而不能得到其余的主任务??请提出任何解决方案。

在代码的第6行中,您覆盖了$query_task变量,因此$_REQUEST['main_task']没有区别。这就是为什么列出了每个主要任务,就像没有给出搜索字符串一样。

编辑:如果在第一个匹配任务中有3个匹配任务和2个子任务,则会得到您描述的结果。你要做的是:只使用那些有匹配子任务的任务。

让它变得简单:循环浏览匹配的任务(就像你做的那样(,但只有当你在其中找到匹配的子任务时,才将该任务添加到你想要显示的任务中。

$displayed_tasks = array();
/* Query for matching tasks */
foreach ($matched_tasks as $t)
{
    /* Query for matching subtasks */
    if (!empty($matched_subtasks))
    {
        $displayed_tasks[] = $t;
    }
}
if部件内循环的移位
if (isset($_REQUEST['sub_task']) && ($_REQUEST['sub_task'] !='')) {
    for ($i=0;$i<$cnt_task;$i++) { 
        $actual_hours_worked=0;         
        $actual_hours_worked2=0;
        $query_subtask1  = "SELECT * from manage_project_task where prj_task_parent_id='".$result_task[$i]['prj_task_id']."' AND prj_task_name LIKE '%".$_REQUEST['sub_task']."%'";
        $result_subtask1 =  $db->GetALL($query_subtask1);
        $cnt_subtask1=count($result_subtask1);
        }
    }
else {
    for ($i=0;$i<$cnt_task;$i++) { 
        $actual_hours_worked=0;         
        $actual_hours_worked2=0;
        $query_subtask1  = "SELECT * from manage_project_task where prj_task_parent_id='".$result_task[$i]['prj_task_id']."'";
        $result_subtask1 =  $db->GetALL($query_subtask1);
        $cnt_subtask1=count($result_subtask1);
        }
    }