2017-03-21 2 views
0

mein Problem ist ich, wann immer ich fname und mname gebe ich einen Fehler von der Datenbank erhielt. Ich möchte nur beide fname und mname im Suchfeld suchen.Suchfunktion mit Rahmen codeigniter, php

meine search Reglerfunktion

public function search() 
    { 
    $li = $this->session->userdata('logged_in'); 
    $id = $this->session->userdata('idnumber'); 
    if($li == TRUE) 
    { 
     $this->load->model('users_model'); 
     $this->load->helper('smiley'); 
     $this->load->library('table'); 
     $image_array = get_clickable_smileys('http://localhost/efg/images/smileys', 'status'); 
     $col_array = $this->table->make_columns($image_array, 8); 
     $image_array2 = get_clickable_smileys('http://localhost/efg/images/smileys', 'status'); 
     $col_array2 = $this->table->make_columns($image_array2, 8); 
     $this->data['smiley_table1'] = $this->table->generate($col_array); 
     $this->data['smiley_tables'] = $this->table->generate($col_array2);   
     if($this->input->post()) 
     { 
     $search = $this->input->post('search'); 
     $memb = $this->users_model->search($search); 
     $usersearch = $this->users_model->search($search); 
     $grpsearch = $this->users_model->searchgrp($search); 
     redirect ('home/profile/'.$memb); 
     } 
    } 
} 

Mein users_model Modell

public function search($search) 
{ 
    $this->db->select('*'); 
    $this->db->from('users'); 
    $this->db->like('username',$search); 
    $this->db->or_like('fname',$search); 
    $this->db->or_like('lname',$search); 
    $this->db->or_like('mname',$search); 
    $query = $this->db->get(); 
    foreach ($query->result_array() as $row) 
    { 
     $memb = $row['idnumber']; 
    } 
    $error = 'There is no record for the one you searched. Please go Back.'; 
    $query1 = $this->db->query("SELECT * FROM users WHERE idnumber ='$memb'"); 
    $hehe = $query1->result_array(); 
    if($hehe==NULL) 
    { 
    echo $error; exit; 
    } 
    else 
    { 
    return $memb; 
    } 
} 
+0

können Sie Ihren genauen Fehler posten? –

+0

Okay, Sir warten :) –

+0

Ich habe es bereits geschrieben, Sir. –

Antwort

1

immer die Zugriffe auf Variablen in Zustand unter Verwendung prüfen sind, bevor die Bedingung erklärt. Wenn es um den Zustand passieren tut, was der Ausgang

 public function search($search) 
     { 
      $this->db->select('*'); 
      $this->db->from('users'); 
      $this->db->like('username',$search); 
      $this->db->or_like('fname',$search); 
      $this->db->or_like('lname',$search); 
      $this->db->or_like('mname',$search); 
      $query = $this->db->get(); 
      $memb = null; 
      foreach ($query->result_array() as $row) 
      { 
       $memb = $row['idnumber']; 
      } 
      $error = 'There is no record for the one you searched. Please go Back.'; 
      $query1 = $this->db->query("SELECT * FROM users WHERE idnumber =$memb"); 
      $hehe = $query1->result_array(); 
      if($hehe==NULL) 
      { 
      return $error; 
      } 
      else 
      { 
      return $memb; 
      } 
     } 
+0

Eine Fehlermeldung wird auftreten, wenn die Bedingung nicht besteht. –

+0

Also sollten wir immer beide Szenarien überprüfen, wenn wir irgendeine Variable in den Bedingungen verwenden –

+0

Ich habe versucht, sowohl 'fname' und' mname' einzugeben und der genannte Fehler wird nicht mehr angezeigt, sondern der "$ error = 'Es gibt keinen Datensatz für die, die du gesucht hast. Bitte geh zurück. '; " ist derjenige, der anzeigt. –

0

Sicherstellen, dass die Variablen, die youll in Abfragen verwenden gesetzt wäre. Trap vor dem Ausführen von Abfragen. Verwenden Sie auch Query Builder (Active Record), wenn Sie können.

public function search($search) 
{ 
    $this->db->select('*'); 
    $this->db->from('users'); 
    $this->db->like('username',$search); 
    $this->db->or_like('fname',$search); 
    $this->db->or_like('lname',$search); 
    $this->db->or_like('mname',$search); 
    $query = $this->db->get(); 

    $memb = ''; 
    if ($query->result_array() > 0) { 
     foreach ($query->result_array() as $row) { 
     $memb = $row['idnumber'];   
     } 
     if ($memb) { 

     $this->db->select("*"); 
     $this->db->where("idnumber", $memb); 
     $query1 = $this->db->get("users"); 

     //$query1 = $this->db->query("SELECT * FROM users WHERE idnumber ='$memb'"); 

     $hehe = $query1->result_array(); 
     return ($hehe) ? $memb : false; 
     } 
     return false; 
    } 

    $error = 'There is no record for the one you searched. Please go Back.'; 
    return $error; 
} 
+0

Es funktioniert nicht :(Entschuldigung für eine späte Antwort. –

+0

was funktioniert nicht? irgendwelche Fehler? –