【问题标题】:how to loop the data retrieve from mysql using codeigniter如何使用codeigniter循环从mysql检索数据
【发布时间】:2026-01-01 07:25:08
【问题描述】:

我有一个问题,我将在我的 sql 中检索多个数据,例如我有 9 个数据,但我的问题是在我的 foreach 中将处理的数据和 foreach 放置在我的控制器中。

这是我的控制器:

function getPhaseData() {
    try 
    {
        $this->SessionCheck();
        $this->user->initialize($this->session->userdata('userid'));

        $this->load->model('project_model', 'Project');
        $ProjectID = $this->input->post('ProjectID');

        /***************** Intialize Project model ******************/
        $this->Project->Initialize($ProjectID);
        $Options = Work_breakdown_structure::$WithBaseTaskID;
        //$PhaseTaskID = (int)$this->input->get_post('TaskID',TRUE);


        //$PhaseTaskID = $this->Project->getPhaseBaseTaskID($ProjectID);

        $postlist->phaseList = $this->Project->LatestApplicablePlan->WBS->GetPhaseList($Options);
        $PhaseList = $this->Project->LatestApplicablePlan->WBS->GetPhaseList($Options);

    foreach($PhaseList as $row) 
    {
            $postlist->taskList = $this->Project->LatestApplicablePlan->WBS->GetWBS($Iterate['TaskID'], $Options);
    }


        /*if($PhaseTaskID == null)
        { }
        else
        {
            foreach($PhaseTaskID as $index=>$value)
            {
                $finalArr[$value['baseTaskID']] = $value['baseTaskID'];

                //echo $finalArr[$value['baseTaskID']].' ';
                    $postlist->taskList = $this->Project->LatestApplicablePlan->WBS->GetWBS($finalArr[$value['baseTaskID']], $Options);
            }
        }*/


        $postlist->project = $ProjectID;
        return $this->load->view('MyToDoPhaseDropdown', $postlist);
    }

这是我的视图,我将在我的选择下拉列表中显示从控制器获取的数据。

if($project == 0) {
    echo '<td style="padding-top:5x;font-size:14px;" colspan="2"> <br> Phases : ';

        echo '<select disabled id="phases_select" style="width:400px;" onchange="search_filter()" >';

        echo '<option value="0" selected="selected"> Select Project Phase </option>';

 echo '</select>';
 echo '</td>';
    }
else
{
    foreach($taskList as $iterate) 
    {
        echo ' TaskID: '. ' '.$iterate['TaskID'] .' -- TaskName: '. $iterate['TaskName'].'<br>' ;
    }

    /*foreach($phaseList as $row) {
        echo 'TaskID: '. $row['TaskID'].' '.$row['TaskName'].'<br>';
        if(preg_match("/^CYCLE/", strtoupper($row['TaskName'])))
        {
            foreach($row['Child'] as $child) {
                echo 'TaskID: '. $child['TaskID'].' '.$child['TaskName'].'<br>';
            }
        }
    }*/

    echo '<td style="padding-top:5x;font-size:14px;" colspan="2"> <br> Phases : ';
        echo '<select id="phases_select" style="width:400px;" onchange="search_filter()" >';
            echo '<option value="0" selected="selected"> Select Project Phase </option>';
                foreach($phaseList as $row) 
                {
                    if(preg_match("/^CYCLE/", strtoupper($row['TaskName'])))
                    {
                        foreach($row['Child'] as $child)
                        {
                            if($Iterate['BaseTaskID'] != $child['TaskID']) 
                            {
                                echo '<option value="'. $child['TaskID']. '">';
                                echo $row['TaskName'].' > '.$child['TaskName'].  '</option>';
                            }

                            foreach($taskList as $Iterate) 
                            {
                                if($child['TaskID'] == $Iterate['BaseTaskID']) 
                                {
                                    echo '<option value="'. $Iterate['TaskID']. '">';
                                    echo $row['TaskName'].' > '.$child['TaskName'].' '.$Iterate['IterationNumber']. '</option>';
                                }
                            }
                        }
                    }

                    else
                    {
                        if($Iterate['BaseTaskID'] != $row['TaskID'])
                        {
                            echo '<option value="'. $row['TaskID']. '">';
                            echo $row['TaskName'].'</option>';
                        }

                        foreach($taskList as $Iterate) 
                        {
                            if($row['TaskID'] == $Iterate['BaseTaskID'] ) 
                            {
                                echo '<option value="'. $Iterate['TaskID']. '">';
                                echo $row['TaskName'].' '.$Iterate['IterationNumber']. '</option>';
                            }
                        }
                    }
                }
        echo '</select>';
    echo '</td>';
}

【问题讨论】:

    标签: php mysql codeigniter


    【解决方案1】:

    这不是确切的答案,但这将有助于理解 codeigniter 中的 MVC 结构。

    型号

      function get_city_list(){
      $this->db->select('city_id, name');
      $this->db->where('status', 1);
      $this->db->order_by("name", "asc"); 
      $this->db->from('city'); 
      $query = $this->db->get();
      $result = $query->result();
      return $result;
      }
    

    控制器

        function listing(){
        $data['city'] =  $this->home->get_city_list();
        $this->load->view('property_listing', $data);
        }
    

    查看

        foreach($city as $cty){
            echo $cty->name;
            echo $cty->city_id;
        }
    

    希望对你有所帮助..

    【讨论】:

    • 您好,先生,是的,我知道 MVC 结构是如何工作的。仍然如果我不在控制器中使用 foreach 来检索数据,当我将变量传递到 $postlist->taskList = $this->Project->LatestApplicablePlan->WBS->GetWBS($Iterate['TaskID '], $选项);如果我在这里不使用 foreach。我不会从数据库中获取数据。
    • 你能做一个$PhaseList的vardump并发布结果吗?并发布您收到的错误消息。
    • vardump 的结果只会是单个数据,实际上它不仅是单个数据,而且在数据库中有多个数据,例如它有 9 个数据。但在 foreach 内部它只回显一个数据。