2016-08-17 9 views
0

Ich habe ein Szenario, wo ich 2 Tabellen haben d. H. Benutzer und Anfrage und ich bitte den Benutzer ein Formular ausfüllen, in dem er zusammen mit anderen Daten auch E-Mail ausfüllen muss. Jetzt möchte ich, dass, wenn der Benutzer eine E-Mail eingibt, es einfach die Daten in der Benutzer-Tabelle hinzufügen und die letzte Einfüge-ID auswählen und dann die Daten + zuletzt eingefügte ID in Anforderungstabelle speichern und die NachrichtÜberprüfen Sie, ob Daten in der Datenbank mit codenigniter existieren

anzeigen soll Ihr Konto wird erstellt ..

Bis hier ich die Codierung getan haben, aber der Teil, wo ich stecken bin, ist

ich möchte, dass, wenn der Benutzer gibt eine E-Mail, die in Benutzer-Tabelle bereits vorhanden ist, dann ist die code sollte die ID auswählen, die für diese E-Mail vorhanden ist, und sie zusammen mit Formulardaten in der Anforderungstabelle speichern und anzeigen die Nachricht

"Antrag gestellt wird, aber Sie bereits ein Konto haben, melden Sie sich bitte an Scheck furthur Details"

Benutzer Tabelle

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

Anforderungstabelle

id  email userid 
1  [email protected] 2 

Controller

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

    } 

Modell

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

Ansicht

<?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

was ist das Problem hier ?? nur nicht einfügen, wenn userdata die Validierung besteht ....Überprüfen Sie, ob ein Benutzer in der Datenbank vorhanden ist, die diesen Daten zugeordnet ist, und handeln Sie entsprechend. –

Antwort

2

is_unique Returns FALSE, wenn das Formularelement nicht eindeutig zuzuordnen ist in den Parametern an die Tabellen- und Feldnamen.

Syntax:

is_unique[table.field] 

Beispiel:

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

Dies Ihr Problem

0

In Ihrem Controller lösen, bevor Sie diese anrufen $this->user_model->instant_submit() addiert eine weitere Bedingung zu überprüfen, ob E-Mail-ID bereits vorhanden oder nicht wie unten.

-Controller

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

     } 

Jetzt in Ihrem Modell eine Funktion erstellen, die die Daten des Benutzers überprüfen

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

Hinweis: Denken Sie daran, es wird falsch senden, wenn der Benutzer nicht so gefunden erstellt einen neuen Eintrag für diesen Benutzer.

Verwandte Themen