2017-04-26 6 views
0

Ich habe ein Problem mit einem Suchformular. Es funktioniert nur, wenn ich alle 4 Felder verwende, aber wenn ein Feld leer gelassen wird, gibt die while-Schleife alle Datensätze der Tabelle wieder.Suchformular php/sql mehrere Eingaben

Kann jemand mir bitte helfen?

Das ist mein PHP-Code für die Suchfunktion

<?php 

if (isset($_POST['cerca'])){ 


    $cerca_tt = $_POST['tt_carrier']; 
    $cerca_risorsa = $_POST['risorsa_cerca']; 
    $cerca_team = $_POST['team_cerca']; 
    $cerca_linea = $_POST['linea_cerca']; 


    $sql_cerca = "SELECT * FROM normal WHERE 
       tt LIKE '%".$cerca_tt."%' 
       OR risorsa LIKE '%".$cerca_risorsa."%' 
       OR team LIKE '%".$cerca_team."%' 
       OR linea LIKE '%".$cerca_linea."%'"; 

     if($sql_cerca) { 

      $trovati = mysql_query($sql_cerca); ?> 
+0

Vielen Dank im Voraus –

+0

wo ist die While-Schleife? – Akintunde007

+0

Das 'if ($ sql_cerca) {' ist redundant. Es ist nur eine Zeichenfolge, Sie wissen – Akintunde007

Antwort

0

wenn der POST Rohling wird dann die Variable leer ist also passt auf alles wie ‚%%‘

zum Beispiel, wenn $ cerca_tt leer ist . Ihre Abfrage wäre

"SELECT * FROM normal WHERE tt like '%%'" 

das alles passt.

Erstellen Sie die Abfrage basierend auf der POST-Antwort.

$sel = "SELECT * from normal"; 

// Sie müssen sich mit dem WHERE-Teil der Abfrage befassen.

if (!empty($cerca_tt)){ 
    $sel .= " OR tt like '%".$cerca_tt."'"; 
} 

etc .... ///

+0

Gelöst, habe ich 4 Eingabefelder im oberen Code verwendet, jetzt suche ich nur mit 1 Feld alle Werte, die ich brauche. –

0

Wenn Sie nur ein Suchparameter zur Verfügung stellen und den Rest leere Strings sind, die Sie mit% wickeln, Sie suchen effektiv alles. Sie müssen Ihre Abfrage erstellen. Zum Beispiel (einfach):

$sqlParts = []; 

if(isset($_POST['tt_carrier'])) { 
    $sqlParts[] = "tt LIKE '%".$cerca_tt."%'"; 
} 
if(isset($_POST['risorsa_cerca'])) { 
    $sqlParts[] = "risorsa LIKE '%".$cerca_risorsa."%'"; 
} 
if(isset($_POST['team_cerca'])) { 
    $sqlParts[] = "team LIKE '%".$cerca_team."%'"; 
} 
if(isset($_POST['team_cerca'])) { 
    $sqlParts[] = "linea LIKE '%".$linea_cerca."%'"; 
} 

if(!empty($sqlParts)) { 
    $sql = "SELECT * FROM normal WHERE " . implode(' OR ', $sqlParts); 
} 
+0

Gelöst, habe ich 4 Eingabefelder im oberen Code verwendet, jetzt suche ich nur mit 1 Feld alle Werte, die ich brauche. –