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函数来查看我页面中的数据。
答案 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()
是一个对象数组。
无论如何,希望这有帮助。