2017-11-07 2 views
0
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からすべてのデータを取得し、私の見解ページ私のページにdb値を表示したいですか?追加と表示は1ページにする必要があります

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

CodeIgniterでは、いくつかの方法でビューにデータを渡すことができます。まず、ビューメソッドの2番目のパラメータを単に使用すると、データはビュー内で$unitとして利用可能になります。

コードでは、そうしているようです。つまり、unit/manage.phpビューでは、クエリの結果は$unitであるはずです。

しかし、いくつかのことがあります。モデルを読み込むと、そのモデルへの呼び出しは小文字になります。

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

それは問題ではないかもしれませんが、その行は次のようになります。私はあなたのモデルの方法では、あなたは常に結果を持っていることを想定していることを指摘したい

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

、それはありませんOK。あなたはそれを返そうとする前に結果があることを確認する必要があります。また、あなたが)(取得するには、テーブル名を提供する必要があります。

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); 
} 

あなたの意見では問題があります。

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

あなたは、コードのブロックに入ることはありません:$unitはいつもあなたがこれを行うときに、設定されます。あなたはデシベルの呼び出しから配列の配列を返すので、それされているためです

$units->pk_int_unit_id 

:何があるやるべきこと:

あなたのforeachループでは
if(! empty($unit)) ... 

、このコードは、エラーがスローされます

$units['pk_int_unit_id'] 

実際には配列であるオブジェクトを使用しようとしている他のインスタンスがあります。基本的には$units->の場合は$units['...']となります。もしGET_ALL内部その後、配列の代わりにオブジェクトを使用するWANY場合

()あなたが使用する必要があります配列の配列であるが、result()は、オブジェクトの配列である

return $q1->result(); 

result_array()ので。

とにかく、これが役立つことを願っています。

+0

まだ同じ問題が出る – Neethu

+0

あなたはいくつかのことをする必要があります。クエリ結果セットに実際に行があることを確認します。つまり、get_all()が返す値をデバッグすることです。 var_dump()を使うことも、ChromePHPを使ってブラウザのコンソールにログインすることもできます。第2に、あなたの改訂コードを表示するために質問を編集すると、問題のどこにあるのかを知るのに役立ちます。コードインデントを改善して、それが非常に明確になるようにしてください。 –

関連する問題