2016-05-29 7 views
-1

私は単純なプロファイルページを開発していますが、結果配列をコントローラーに渡すのが少し難しかったです。結果配列をcodeigniterのコントローラーに渡す

モデル:

class Login_model extends CI_Model{ 

function get_profile() 
{ 

    $this->db->where('email', $this->input->post('email')); 
    $query = $this->db->get('user'); 

    if($query->num_rows == 1) 
    { 
     return $query->result_array(); 
    } 

} 
} 

コントローラ:私はそれが動作するかどうかを確認するためのテストとして、$ qを[ 'ユーザー']をアウトエコーしようとしたが、それはうまくいきませんでした

  class Login extends CI_Controller { 
     function show_profile{ 
     $this->load->model('login_model'); 
     $q['user'] = $this->login_model->get_profile(); 
     echo $q['user']; 
     } 
     } 

+0

によってあなたのビューページへの配列を、これを渡すことができます。 'echo'言語構造はそれらを扱うことができません。 'var_dump($ q ['user'])'でデバッグしてください。 – Tpojka

答えて

0

結果の配列は、結果が1つ以上戻ってきた場合に発生します。あなただけ戻ってきているので、1つの結果、あなたはこの

// example of what NOT to do 
$this->db->where('email', $this->input->post('email'));// NO NO NO 

はCodeIgniterのフォームバリデーションを使用して最初のメールを確認してから

ようにそれを送る決してしない

if($query->num_rows == 1) 
{ 
    return $query->row_array(); 
} 
    else 
{ 
    return false; 
} 

を(row_arrayを行う)ので、のようなことができます

// if no user comes back then deal with it right away 
if(! $user = $this->login_model->get_profile($email)) 
{ 
    $this->showNoUserFor($email) ; 
} 
else 

{ // carry on.... 

そうでなければ、コードマニュアルマニュアルのチュートリアルを最初に実行すると、時間が大幅に節約できます。

0

$ q ['user']は配列なのでエコーすることはできません。

`print_r($q['user']); exit; 

を使用して、あなたが存在しない場合は、空の結果は、それが(ここにも、あなたのケースで)いずれかのオブジェクトであるのいずれかに設定

`$this->load->view('yourViewPage',$q); 
関連する問題