Volltextsuche Probleme bei keinem Treffer

Moin moin,

ich habe eine Suche mit php und mysql geschrieben.
Es funktioniert alles bis auf den else-Teil in der while-Schleife unten.

Wenn es keine Sucherergebnisse gibt, $ausgabe also leer ist soll der else-Text angezeigt werden… tu aber nicht :frowning:

Ist die MATCH AGAINST Abfrage nicht leer wenn keine Ergebnisse angezeigt werden?

Wie kann ich das lösen?

Vielen Dank schon mal

Gruß tifi

<?php include('html_header.php');
include('db.php'); include('db\_login\_txt.php'); $suchstring = $\_POST['suchstring']; $option = $\_POST['option']; $leer = " "; $op = "\*"; $suchstring\_spilt = str\_word\_count($suchstring, 1, 'öäüßàáãç3'); $suchwort1 = $suchstring\_spilt[0]; $suchwort2 = $suchstring\_spilt[1]; $suchwort3 = $suchstring\_spilt[2]; $suchwort4 = $suchstring\_spilt[3]; $suchwort5 = $suchstring\_spilt[4]; echo $header; echo ""; echo " Suchergebnisse "; if(!$suchstring\_spilt[5] == "") { echo "Bitte maximal 5 Suchbegriffe eingeben! "; echo ""; echo $end; exit(); } if (!isset($suchwort1)) { echo "Kein Suchbegriff eingegeben! "; echo ""; echo $end; exit(); } if(isset($suchwort1) and isset($suchwort2) and isset($suchwort3) and isset($suchwort4) and isset($suchwort5)) { $suche = $option.$suchwort1.$op.$leer.$option.$suchwort2.$op.$leer.$option.$suchwort3.$op.$leer.$option.$suchwort4.$op.$leer.$option.$suchwort5.$op.$leer; } else { if(isset($suchwort1) and isset($suchwort2) and isset($suchwort3) and isset($suchwort4)) { $suche = $option.$suchwort1.$op.$leer.$option.$suchwort2.$op.$leer.$option.$suchwort3.$op.$leer.$option.$suchwort4.$op; } else { if(isset($suchwort1) and isset($suchwort2) and isset($suchwort3)) { $suche = $option.$suchwort1.$op.$leer.$option.$suchwort2.$op.$leer.$option.$suchwort3.$op; } else { if(isset($suchwort1) and isset($suchwort2)) { $suche = $option.$suchwort1.$op.$leer.$option.$suchwort2.$op; } else { if(isset($suchwort1)) { $suche = $option.$suchwort1.$op; } } } } } @mysql\_connect(host, user, pass) or exit($db\_login\_faild); @mysql\_select\_db(db) or exit($select\_faild); $volltext = "; var\_dump($ausgabe); echo ""; } else { echo "Keine Treffer für die/den Suchbegriff/e $suche "; } } echo $end; ?\>

moin

  1. warum postest Du denn diesen ellenlangen code und nicht nur den relevanten Teil?

  2. welchen else-Teil meinst Du?

  3. Du gibst doch hier:

$suchwort1 = $suchstring_spilt[0];
$suchwort2 = $suchstring_spilt[1];
$suchwort3 = $suchstring_spilt[2];
$suchwort4 = $suchstring_spilt[3];
$suchwort5 = $suchstring_spilt[4];

den ganzen Variablen einen Wert…
Demnach kann das:

if(isset($suchwort1) and isset($suchwort2) and
isset($suchwort3) and isset($suchwort4) and isset($suchwort5))

eigentlich nur true sein und bleiben…?
Oder seh ich das falsch?

moin

  1. warum postest Du denn diesen ellenlangen code und nicht nur
    den relevanten Teil?

Weil sonst wieder jemand kommt und alles sehen will

  1. welchen else-Teil meinst Du?

Ich meine den else-Teil in der while-Schleife unten (dachte icch hätte das geschrieben)

  1. Du gibst doch hier:

$suchwort1 = $suchstring_spilt[0];
$suchwort2 = $suchstring_spilt[1];
$suchwort3 = $suchstring_spilt[2];
$suchwort4 = $suchstring_spilt[3];
$suchwort5 = $suchstring_spilt[4];

den ganzen Variablen einen Wert…
Demnach kann das:

if(isset($suchwort1) and isset($suchwort2) and
isset($suchwort3) and isset($suchwort4) and isset($suchwort5))

eigentlich nur true sein und bleiben…?
Oder seh ich das falsch?

ich denke schon…

wenn z.B. als Suchanfrage aus einem Formular $string =„wer weiss was“ kommt, wäre nach $split = str_word_count($string) $split[4] leer.
Wenn ich mich nicht vertan habe nimmt mysql keine unsets Strings an und gibt einen Fehler raus… muss aber nicht stimmen :wink:

Hallo,

while ($ausgabe = mysql_fetch_assoc($suchergebnis))
{

Ausgabe ist von Anfang an false falls nichts gefunden wird, daher wird die komplette while-Schleife übersprungen. Die Abfrage in der Schleife ist daher nicht sonderlich sinnvoll…

Besser:

if (mysql\_num\_rows($suchergebnis)==0) {
 echo "Nichts gefunden";
}

Alexander

Danke
probier ich gleich aus

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]