2016-08-17 5 views
0

私は2つのテーブル、すなわちユーザーとリクエストを持っていて、ユーザーにフォームを記入してもらい、他のデータと共にメールを記入する必要があります。ユーザーが電子メールを入力すると、単にユーザーのテーブルにデータを追加して最後のIDをピックアップし、最後に挿入したID +要求テーブルにIDを保存してメッセージを表示する必要があります。コードシニターを使用してデータベースにデータが存在するかどうかを確認します

アカウントは、私はコーディングを行っているここティル

...作成したが、私は立ち往生午前の部分は、私が欲しい

であることを利用者は、すでにユーザーがテーブル内に存在する電子メールを入力した場合コードは、その電子メールに対して存在するIDを選択し、フォームデータとともに要求テーブルに格納して表示する必要がありますメッセージは

usersテーブル

id name   email 
1 sam  [email protected] 
2 demo_user [email protected] 

要求テーブル "要求が提出されていますが、既にアカウントを持っている、 チェックfurthur詳細にログインしてください"

id  email userid 
1  [email protected] 2 

コントローラ

public function submit() 
    { 

     $this->form_validation->set_rules('email','Email','trim|required'); 

     if($this->form_validation->run() == FALSE) 
      { 
       $erdata = array 
        (
         'error' => validation_errors() 
        ); 
       $this->session->set_flashdata($erdata); 

       redirect('home/index'); 
      } 
     else 
      { 
       if($this->user_model->instant_submit()) 
        { 
         $this->session->set_flashdata('msg','Your account is created'); 
        } 
       else 
        { 
         echo "failed"; 
        } 
       redirect('home/index'); 
      } 

    } 

モデル

public function instant_submit() 
    { 
     $userdata = array(
      'email' => $this->input->post('email') 
     ); 

     $insert_data = $this->db->insert('users', $userdata); 
     $lastid = $this->db->insert_id(); 

     $reqdata = array(
      'email' => $this->input->post('email'), 
      'userid' => $lastid, 
      'status'=>'pending' 
      ); 

     $insert_request = $this->db->insert('request', $reqdata); 
     return $insert_data; 
    } 

ビュー

<?php if($this->session->flashdata('msg')): ?> 
    <?php echo $this->session->flashdata('msg'); ?> 
<?php endif; ?> 

    <?php 
     $reg_attributes = array('id'=>'form','role'=>"form"); 
     echo form_open('home/submit', $reg_attributes); 
    ?> 


    <?php 
     $data = array(
      'type'=>'text', 
      'name'=>'email', 
      'placeholder'=>'Email', 
      'class'=>'form-control', 
      'id'=>'form-email' 
     ); 

     echo form_input($data);            
    ?> 


    <?php 
     $data = array(
      'type'=>'submit', 
      'class'=>'btn-primary', 
      'name'=>'submit', 
      'content'=>'Submit!' 

     ); 

     echo form_button($data); 
    ?> 


<?php echo form_close(); ?> 
+0

ここに問題がありますか? userdataが検証をパスするたびに挿入しないでください....そのデータに関連付けられたDBにユーザーが存在するかどうかを確認し、それに応じて行動します。 –

答えて

2

is_unique返しFALSEフォーム要素は、パラメータにテーブルとフィールド名に固有でない場合。

構文:

is_unique[table.field] 

例:あなたはこれを呼び出す前に、これはあなたのコントローラでは、あなたの問題

0

を解決する

$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]'); 

$this->user_model->instant_submit()電子メールIDがすでに存在しているかどうかを確認するために、1つの以上の条件を追加以下のようにしてください。お使いのモデルで今

コントローラ

public function submit() 
     { 

      $this->form_validation->set_rules('email','Email','trim|required'); 

      if($this->form_validation->run() == FALSE) 
       { 
        $erdata = array 
         (
          'error' => validation_errors() 
         ); 
        $this->session->set_flashdata($erdata); 

        redirect('home/index'); 
       } 
      else 
       { 
        if(!$this->user_model->check_user_exist($this->input->post('email'))) { 
         if($this->user_model->instant_submit()) 
         { 
          $this->session->set_flashdata('msg','Your account is created'); 
         } 
         else 
         { 
          echo "failed"; 
         } 
        } else { 
         //do whatever operation you want to do if user is already exist; 
         $this->session->set_flashdata('msg','Request is submitted but you already have an account, please login to check furthur details '); 
       } 

        redirect('home/index'); 
       } 

     } 

ユーザー

public function check_user_exist($email_id) { 
    $this->db->select('id'); 
    $this->db->where('email',$email_id); 
    $query = $this->db->get('users'); 
    $data = $query->row(); 
    if($query->num_rows() == 1) { 
     return $data->id; 
    } else { 
     return false; 
    } 
} 

ノートのデータをチェックすることができる機能を作成します。ユーザーはそれよう見つからない場合はfalseお送りします覚えているがそのユーザーの新しいエントリを作成します。

関連する問題