想在我的页面中显示db值。添加和查看应该在一个页面中

时间:2017-11-07 06:33:00

标签: codeigniter

public function unit_list()
  {
    //Redirect in case of session out
    if (!$this->session->userdata ( 'user_id' )) {
      redirect ( $this->config->base_url (), 'refresh' );
      return false;
    }
     $this->load->model('Unit_model');
    $arrWhere = array("vchr_unit_status"=>"A");
        $data ["unit"]=$this->Unit_model->get_all($arrWhere);
        $this->load->view('includes/header');
        $this->load->view('includes/left_menu');
        $this->load->view('unit/manage',$data);
        $this->load->view('includes/footer');
  }

这是我的控制器。 unit_list是我编写的函数,用于从db获取所有数据并在我的视图页面中查看

class Unit_model extends CI_Model{
protected $strTableName = 'suc_unit';
        function __construct(){
            parent::__construct ();
            $CI = &get_instance();
            $this->db->from($this->strTableName);  
        }


        /**
        *
        */
        function get_all($arrWhere)
        {
            $this->db->where($arrWhere);
            $q1 = $this->db->get();
            $result = $q1->result_array();  
            return $result;
        }

这是我的模特

                              <table id="tblListOfUnits" class="table table-bordered table-striped">
                                <tr>
                                  <th style="width: 10px">Sl No</th>
                                  <th>Unit Name</th>
                                  <th>Unit Symbol</th>

                                </tr>
                                <?php
                                if(!isset($unit)){
                                    $count = 1;
                                 foreach ($unit as $key => $units) {  
                                ?>
                                <tr id="tr_<?php echo $units->pk_int_unit_id; ?>">
                                    <td id="tdUntSlNo_<?php echo isset($units) ? $units['int_no_decimal']: ' '; ?>><a href="javascript:unitEdit(<?php echo $unit->pk_int_unit_id; ?>)" ><?php echo $count; ?>.</a></td>
                                    <td id="tdUntNme_<?php echo $units->pk_int_unit_id; ?>"><a href="javascript:unitEdit(<?php echo $unit->pk_int_unit_id; ?>)" ><?php echo $unit->vchr_unit_name; ?></a></td>
                                    <td id="tdUntSymbl_<?php echo $units->pk_int_unit_id; ?>"><a href="javascript:unitEdit(<?php echo $unit->pk_int_unit_id; ?>)" ><?php echo $unit->vchr_unit_symbol; ?></a></td>

                                </tr>
                                <?php  
                                    $count ++;
                                    }
                                }?>
                              </table>

这是我的浏览页面。请帮我查看我的视图页面中的所有数据。我是codeigniter的新手,所以我不知道如何使用get_all函数来查看我页面中的数据。

1 个答案:

答案 0 :(得分:1)

CodeIgniter允许您以多种方式将数据传递给视图。首先,如果您只是使用view方法的第二个参数,那么您的数据将在视图中以$unit的形式提供。

在您的代码中,您似乎正在这样做。这意味着,在您的unit / manage.php视图中,您的查询结果应该以{{1​​}}的形式提供。

但有几件事情。加载模型时,对该模型的调用是小写的。

$unit

可能无关紧要,但该行应该是:

$this->unit_model->get_all( $arrWhere );

我想指出,在你的模型方法中,你假设你总会得到一个结果,那不行。在尝试返回之前,您需要确保有结果。此外,您需要为get():

提供表名
$data["unit"] = $this->unit_model->get_all( $arrWhere );

当然,您正在尝试在模型的构造函数中设置表,但这只适用于对数据库的第一次查询。这是不对的,你应该避免这种情况,因为通常你不会为一个查询创建一个模型。

function get_all( $arrWhere )
{
    // Make sure $arrWhere is an array
    if( ! is_array( $arrWhere ) )
        return FALSE;

    $this->db->where( $arrWhere );

    // Make sure you set the table name!
    $q1 = $this->db->get( $this->strTableName );

    // Make sure there is a result set!
    if( $q1->num_rows() > 0 )
        return $q1->result_array();

    return FALSE; // or NULL, or array(), or whatever you want.
}

现在在您看来,您遇到了问题。总是会设置function __construct() { parent::__construct(); // If you are in a CodeIgniter model, you don't need this line // $CI = &get_instance(); // This is bad. Don't do this ever. // $this->db->from($this->strTableName); } ,所以当你这样做时:

$unit

您永远不会输入该代码块。你应该做的是:

if( ! isset( $unit ) ) ...

在你的foreach循环中,这段代码会抛出错误:

if( ! empty( $unit ) ) ...

这是因为你要从db调用返回一个数组数组,所以它应该是:

$units->pk_int_unit_id

您已经有其他实例尝试使用实际上是数组的对象。基本上您拥有$units['pk_int_unit_id'] 的任何地方都应该是$units->

如果您想使用对象而不是数组,那么在get_all()中你应该使用:

$units['...']

因为return $q1->result(); 是一个数组数组,但result_array()是一个对象数组。

无论如何,希望这有帮助。