Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将具有多个字段的数组传递到codeigniter中的视图_Php_Mysql_Arrays_Codeigniter - Fatal编程技术网

Php 将具有多个字段的数组传递到codeigniter中的视图

Php 将具有多个字段的数组传递到codeigniter中的视图,php,mysql,arrays,codeigniter,Php,Mysql,Arrays,Codeigniter,我正在使用CodeIgniter,我正在与数组作斗争,我需要在控制器中执行mysql db查找,然后将数组传递给视图,这样我就可以在视图中循环通过数组来显示结果列表。我需要数组每行包含两个字段以及ID和Name,所以 行1 ID=1,Name=Hello 行2 ID=2,Name=World 我一直在网络上搜索al,我可以通过传递ID或名称来实现这一点,但我不知道如何在数组中同时传递它们 //get open cases $this->db->where('UserI

我正在使用CodeIgniter,我正在与数组作斗争,我需要在控制器中执行mysql db查找,然后将数组传递给视图,这样我就可以在视图中循环通过数组来显示结果列表。我需要数组每行包含两个字段以及ID和Name,所以

行1 ID=1,Name=Hello 行2 ID=2,Name=World

我一直在网络上搜索al,我可以通过传递ID或名称来实现这一点,但我不知道如何在数组中同时传递它们

//get open cases
        $this->db->where('UserID',$this->session->userdata('ID'));
                $query = $this->db->get('cases');
                if ($query->num_rows() > 0)
                        {
                            $cases = array();
                            foreach ($query->result() as $row)
                                    {
                                        // ive tried this
                                        $cases[]=$row->ID,$row->CaseName;
                                        // and this
                                        $cases[]=($row->ID,$row->CaseName);
                                        //but they both dont work :(
                                    }
我可以理解基本数组,但以前从未真正使用过它们,现在我正在使用CI,我不能简单地将sql查找放在视图中并在那里循环。我知道sql查找应该在模型中,但我现在对此并不担心,只想填充数组并传递给视图,任何帮助都将不胜感激

//下面的编辑功能可以很好地工作,但这是您使用CI的方式吗

function viewCase()
            {
                $caseID = $this->uri->segment(3);

                $this->db->where('ID',$caseID);
                $this->db->where('UserID',  $this->session->userdata('ID'));
                $query = $this->db->get('cases');
                if ($query->num_rows() == 1)
                {
                    foreach ($query->result() as $row)
                            {
                            $data['caseID']= $row->ID;
                            $data['caseName'] = $row->CaseName;
                            $data['fileName'] = $row->FileName;
                            $data['statusID'] = $row->Status;
                            $data['statusName']= "not set yet";
                            //we need the status friendly name
                            $this->db->where('ID', $data['statusID']);
                            $query2 = $this->db->get('case_status');
                            if ($query->num_rows() == 1)
                            {
                                foreach ($query2->result() as $row2)
                                        {
                                            $data['statusName']=$row2->Name;
                                         }
                            }

                            }


                            $data['fName']= $this->session->userdata('fName');
                            $data['lName']= $this->session->userdata('lName');
                            $data['email']= $this->session->userdata('email');
                            $data['fullName']= $this->session->userdata('fName')." ".$this->session->userdata('lName');
                            $this->load->view('head',$data);
                            $this->load->view('header_logged_in',$data);
                            $this->load->view('nav');
                            $this->load->view('view_case_view',$data);
                            $this->load->view('footer');
                            }

                else
                    {
                    $data['fName']= $this->session->userdata('fName');
                    $data['lName']= $this->session->userdata('lName');
                    $data['email']= $this->session->userdata('email');
                    $data['fullName']= $this->session->userdata('fName')." ".$this->session->userdata('lName');
                    $this->load->view('head',$data);
                    $this->load->view('header_logged_in',$data);
                    $this->load->view('nav');
                    $this->load->view('view_case_error_view');
                    $this->load->view('footer');
                    }
            }

如果您不需要对控制器中的数据执行任何操作,您可以将
$query
变量传递到视图,然后在视图中传递
foreach($query->result()as$row)

//编辑: 我会这样写你的控制器。在这里,我假设您必须使用ID输入此控制器,如果您不输入,它将引发错误。您的URI段代码将返回false,我认为这将在查询中解释为零,并返回零结果集。如果愿意,可以将0设置为默认值,如下所示
viewCase($caseID=0)

    function viewCase($caseID)
{
    $this->db->select('cases.ID AS CaseID', FALSE); /* you will access this as $row->CaseID */
    $this->db->select('cases.CaseName');
    $this->db->select('cases.FileNameName');
    $this->db->select('cases.Status AS StatusID', FALSE); /* if you don't need status id, you can remove this, access as $row->StatusID */
    $this->db->select('case_status.Name AS StatusName', FALSE); /* access as $row->StatusName */
    $this->db->join('case_status', 'case_statis.ID=cases.Status');
    $this->db->where('cases.ID', $caseID);
    $this->db->where('cases.UserID', $this->session->userdata('ID'));
    $query = $this->db->get('cases');

    $data['query'] = $query;

    $data['fName']= $this->session->userdata('fName');
    $data['lName']= $this->session->userdata('lName');
    $data['email']= $this->session->userdata('email');
    $data['fullName']= $this->session->userdata('fName')." ".$this->session->userdata('lName');

    $this->load->view('head',$data);
    $this->load->view('header_logged_in',$data);
    $this->load->view('nav');
    $this->load->view('view_case_view',$data);
    $this->load->view('footer');
}
然后在你看来,做这样的事情

// view
<table>
    <tr>
        <th>CaseID</th>
        <th>CaseName</th>
        <th>FileName</th>
        <th>StatusID</th>
        <th>StatusName</th>
    </tr>
    <? foreach ($query->result() as $row): ?>
        <tr>
        <td><p><?=$row->CaseID?></p></td>
        <td><p><?=$row->CaseName?></p></td>
        <td><p><?=$row->FileName?></p></td>
        <td><p><?=$row->StatusID?></p></td>
        <td><p><?=$row->StatusName?></p></td>
        </tr>
    <? endforeach; ?>
</table>
//查看
酪蛋白
案例名称
文件名
状态ID
状态名


请注意,如果没有行,foreach将不会输入,因此您不需要真正检查行数,除非您想在没有返回任何行数时执行一些特殊操作(例如打印“无结果”)。

让我来做一个简单的布局,说明如果您使用的是MVC模式,那么您的应用程序应该如何运行,codeigniter就是基于这个模式的

型号:

class YourModel extends Model{
     function get_data(){
         $query = $this->db->get('cases');
         return $query->result();
     }
}
控制器:

class YourController exteds Controller{
     function yourFunction(){
          $this->load->model('Model_name', 'fubar');
          $data['yourinfo'] = $this->fubar->get_data();

          $this->load->view('yourview', $data);
     }
}
视图:

foreach($yournfo作为$row){
echo$row->yourcoulmn.“
”; }
这或多或少是你需要做的事情的简短版本


希望有帮助

cool我不知道你可以向他们传递$data以外的任何东西,你能帮我一个忙吗?我会编辑我的帖子,在我的一个控制器上显示我的功能。它工作正常,但我想知道我做的事情是否像CI“道德”中那样正确,一点也不使用模型。嘿,这是一个很棒的例子,非常感谢你的时间
class YourController exteds Controller{
     function yourFunction(){
          $this->load->model('Model_name', 'fubar');
          $data['yourinfo'] = $this->fubar->get_data();

          $this->load->view('yourview', $data);
     }
}
foreach($yourinfo as $row){
         echo $row->yourcoulmn . "<br>";
}