使用CodeIginter

时间:2018-12-25 18:10:16

标签: php mysql codeigniter

我正在尝试从表“ main_tests”中的main_tests.id = test_name_price.test_idtest_name_price.list_id = 1那里加载所有数据

我正在尝试这样做,但是它只是在说错误的语法,我是CodeIginter的初学者。感谢您的进步

我一直在寻找答案,但我无法准确获得所需的东西,或者他们的方式对我不起作用

这是我的代码

  $result =  $this->db->select('test_name_price.*, main_tests.*')
                                    ->from('test_name_price')
                                    ->where('test_name_price.list_id', 1)
                                    ->join('main_tests', 
                                  'test_name_price.test_id = main_tests.id')
                                    ->get();


                                if (count($result) > 0) {

                                    foreach ($result as $itemsl) {

                                        echo "


                    <option value='$itemsl->testname' data-code='$itemsl- 
                                      >test_code'>$itemsl->test_id</option>



                                         ";
                                    }
                                }

                                echo "</select>"

编辑:

这是我控制器中的代码,该视图为add Patient

    public function addpatient()

{

      $this->load->model("khmodel","Khmodel");


     $this->load->view('addpatient', array('result_array' => 
           $result_array));


}

这是我的观点

      <?php foreach ($result_array as $key => $value) : ?>


        <option value='<?= $value['testno'] ?>' data-code='<?= 
          $value['testno'] ?>'><?= $value['test'] ?></option>


                                <?php endforeach; ?>

这是我用来加载视图的MasterPage函数,告诉我是否需要添加其他内容

    public function MasterPage($view='',$table='',$da='',$spg='',$szpg='')

{
    if (!empty($table)) {
        $data['result']=$this->Khmodel->get($table,$da,$spg,$szpg,"id 
             desc");
        $data['pages']=$this->Khmodel->pagesno($table,$szpg);
    }
    $data['sview']=$view;
    $data['index']=($view == 'home') ? '' : 'iner_page';


    $getlang =$this->uri->segment(1);//$this->input->cookie('shlang', TRUE);

    if($getlang=='en'){



        $this->lang->load('en', 'en');
        $data['lang']='en';
        $data['nav_align']='right';
        $data['xnav_align']='left';


    }
    else{




        $this->lang->load('ar', 'ar');
        $data['lang']='ar';
        $data['nav_align']='left';
        $data['xnav_align']='right';


    }

    //$this->load->view('main/close');
    $this->load->view('main/header',$data);
    if($view!='home'){
        $this->load->view('main/top_header',$data);

    }
    $this->load->view('main/'.$view);

    $this->load->view('main/footer',$data);

}

2 个答案:

答案 0 :(得分:1)

好吧,这和我的魅力一样!

我已经使用@Sherif Salah代码的第一部分在视图内部,没有控制器或模型 它实际上有效!

感谢您的帮助

for (int i = 0; i < 10; i++) {
    continue;
}
cout << i << endl;

答案 1 :(得分:0)

这里是如何在codeigniter中联接表,但是请确保现在有相似的字段名称,或者您必须单独选择它并手动重命名该字段。

$table_one = 'table_one_name';
$table_two = 'table_two_name';
$this->db->select("
    $table_one.*,
    $table_two.*
    ");
$this->db->join($table_two, "$table_two.id = $table_one.table_two_id", 'left');
$this->db->from($table_one);
$query = $this->db->get();

$result_object = $query->result();
$result_array = $query->result_array();

注意:如果上面的代码正确,则必须以$result->result()作为对象或$result->result_array()作为数组来获取结果。


编辑:这是一个有关如何在视图中使用此数组的快速示例,上面的代码将返回数组数组,您可以按以下方式处理该数组:

<?php foreach ($result_array as $key => value) : ?>

    <option value='<?= $value['name'] ?>' data-code='<?= $value['code'] ?>'><?= $value['id'] ?></option>

<?php endforeach; ?>

注意:请保持您的逻辑在控制器中,只需将结果传递给视图即可。


编辑:现在让我们保持简单,假设您的查询工作正常,并且您可以通过var_dump($result)进行检查,所以现在您需要将此数据传递给视图,但是您想做到这一点,但又想像您在控制器中获得了result并且一切正常,现在您只需要将它传递给这样的视图:

$data = array("result" => $result);
$this->load->view('your_view', $data);

,在您看来,只需使用变量result或您命名的任何名称就可以遍历此数组。

恕我直言 ..您应该仔细阅读codeigniter的文档,并按照codeigniter中的任何分步教程进行操作,原因是您的问题不是您不知道如何联接两个表,而是有关如何使用的信息框架本身。