2016-04-15 13 views
2

ich ein Verzeichnis für Buchhalter erstellen möchten, und ich möchte erstellen und erweiterte Suche, wie:Bedingungen für eine Suchformular

Wenn der Benutzer eingeben: Lara und es gibt keine Buchhalter mit diesem Name Ich möchte Buchhaltern vorschlagen, dass sein Name "L" "A" "R" enthält?

So ist das Problem, wie dies mit SQL-Abfrage zu erstellen, weil ich nicht die Anzahl der Buchstaben des Benutzers eingeben?

+3

Es ist eine Programmierung Wahl, wenn der Benutzer die Suche, dann zuerst einen Volltext-Match. Wenn diese Abfrage null Zeilen zurückgibt, dann versuchen Sie, eine weitere Abfrage mit den ersten 3 Buchstaben des Namens wie zu tun: Wählen Sie * aus Tabl wo Name wie '%'. substr ($ _ POST ['name'], 0, 3) und so weiter .. – vishwakarma09

Antwort

1

Wenn der Benutzer nicht gefunden wird, verwenden Sie str_split, um die Zeichenfolge in ein Array mit 1 Buchstaben zu zerlegen. Führen Sie dann eine Schleife durch das Array und fragen Sie sie mit LIKE '% $ string%' ab.

// If user not found 
if(!(mysqli_num_rows > 0)) { 
    $array = str_split($search); 
    // If search is two separated words, to remove space and reorder array, use this line instead: 
    // $array = str_split(str_replace(" ", "", $array)); 

    for($i = 0; $i < count($array); $i++) { 
     $char = $array[$i]; 
     $sql = "SELECT * FROM table WHERE name LIKE '%$char%'"; 
     $result = mysqli_fetch_array(mysqli_query($con, $sql)); 
     echo $result['name']; 
    } 
+0

dies hilft mir, eine Idee zu haben, werde ich 4 Schleifen hinzufügen, um nach 4,3,2 und 1 Brief, Nizza –

+0

Sie suchen Sie können dies auch tun, jedoch müssen Sie berücksichtigen, wenn die Suche nach Benutzer> 10 Zeichen lang ist, dauert das Laden Ihres Skripts möglicherweise länger. Freue mich zu helfen. – Charas