Suchskript sucht nicht

Zum Thema RegEx gibt es auch hier ein Tutorial.

Allerdings halte ich für einfach Suchen RegEx für zu aufwendig.

Zusätzlich zum Debuggen mit echo, wäre print_r eine einfache Möglichkeit, um dir ein gesamtes Array ausgeben zu lassen (in deinem Fall würde es auf $_POST angewenet Sinn machen!).
 
da brauch ich nicht zu debuggen, weil ich oben scho ngesagt hab wo der Fehlr liegt. Das Skript durchläuft die If-abfrage nicht. Und wenn ich $_POST['suchen'] per echo ausgeben will wird nichts angegeben. Habe k.A warum es nicht geht. der <form> Teil ist wei bei denn anderen Skripten auch, und diese gehen.
 
Hier mal mein klassisches Query für "die Suche":
PHP:
$sql = "SELECT * FROM news WHERE titel LIKE '%".addslashes($_POST['search'])."%' OR text LIKE '%".addslashes($_POST['search'])."%' ORDER BY datum DESC ";
 
dieser klassihe Query nutzt mir nichts, da ich mehre Wörte eingeb und diese dann zerlegt werden müssen, wie oben, und er startet diesen Query erstgarnciht bei mir, weil er die If-Abfrage ja ignoriert.
 
$_POST['suchen'] ... naja, probier mal phpinfo() und da sind dann ja alle _POST Variablen aufgelistet und wenn's da nicht steht, existiert die Variable nicht. Dann muss was am Formular falsch sein.
 
So nun sucht er zwar, aber es sind imemr noch Fehelr drin.
Und zwar,

1.
wenn ich nichts eintrage, und dann den submit Button drücke, wirft er mir alle Einträge der Db zurück. Dies soll er nicht.
2. wenn ich etwas eingebe, dann muss ich 3 begriffe eingeben, damit er mir ein Ergebniss zurück gibt. Und diese 3 Begriffe müssen auch korrekt geschrieben sein. (groß oder klein) und diese müssen auch vorkommen. Dies soll aber nicht so sein. ER soll alle Ergebnisse zurück geben, z.B nur der Ort, Name oder Nachname richtig ist.

Jetzt steh ich ziemlich auf den Schlauch, weil ich nciht weiß wie ich das anstelle.
Das 2. Problem betrifft auch mein 2. Suchskript.

Hier nochmals der Code:

PHP:
if ($_POST['suchen']) //ueberprueft ob der submit button gedrückt wurde
{ 
               
$eingabe_array = explode(' ',$_POST['begriff']);
 $query = 'SELECT id, vorname_kunden, nachname_kunden, ort_kunden FROM kunden WHERE '; //anfang der abfrage 
    for($i=0; $i<count($eingabe_array); $i++){ 
     
$query .= "(vorname_kunden like '%".$eingabe_array[$i]."%' or nachname_kunden like '%".$eingabe_array[$i]."%' or ort_kunden like '%".$eingabe_array[$i]."%')";

            //ob der $i-te begriff in einer der drei spalten enthalten ist (mit oder verknüpft) 
        if($i<count($eingabe_array)-1){ 
            $query .= ' and '; 
        } 
        //verknüpfung der einzelnen worte mit und 
    } 

echo mysql_errno() . ": " . mysql_error() . "\n";
 $result = mysql_query($query); //anfrage an die datenbank 

    $num_kunden = mysql_num_rows($result); //anzahl der zurückgegebenen datensätze 
    for($i=0; $i<$num_kunden; $i++){ 
        $kunden_id = mysql_result($result,$i,'id'); //abfrage der kunden_id von der datenbank 
        $vorname = mysql_result($result,$i,'vorname_kunden'); //abfrage des Vornamen 
        $nachname = mysql_result($result,$i,'nachname_kunden'); //abfrage des Nachnamen
        $ort = mysql_result($result,$i,'ort_kunden'); //abfrage des Ortes
 
      
        echo '<a href="intern.php?site=kunden&kunden_id='.$kunden_id.'">'.$vorname.' '.$nachname.' '.$ort.'</a><br>'; //links auf die seite show_news.php 
        
    } 
}

?>
 
Na das liegt an dem "OR".

Wenn du keinen Wert eingibst, steht ja im Statement %% und das mit einem OR verknüpft holt dir alle Datensätze.

Mach mal ein AND draus, dann sollte das passen.

Wenn nicht, poste bitte mal das generierte Statement.

@dolphon: Gruß an N.R. :p
 
Zuletzt bearbeitet:
Leider gibt er immer noch alles aus. Haste auch ne Idee wie ich das 2. Problem lösen kann.

Hier den Query, der ausgegeben wird.:

PHP:
SELECT id, vorname_kunden, nachname_kunden, ort_kunden FROM kunden WHERE (vorname_kunden like '%%' AND nachname_kunden like '%%' AND ort_kunden like '%%')0:

@lambda
Werd ich machen, wenn ich ihn sehe, oder wenn er online ist.
 
Zurück