Hallo Leute,
ich soll eine Suche über mehrere Tabellenfelder basteln und stoße dabei auf ernsthafte Probleme. Bin da jetzt schon mehrere Stunden mit beschäftigt, aber komm zu keinem echten Ergebnis.
Ich suche eine Möglichkeit für folgende Suchanforderung:
Seien a,b,c,d Teilwörter.
Suche nach "a b c d" soll Einträge finden, deren Bezeichnung und Hersteller und Kategorie (und Kommentar) einen oder mehrere dieser Strings enthält.
Ich brauche also entweder eine Zauber-MySQL-Abfrage oder irgendwas in PHP, was mir diese Abfrage zurechtbastelt.
Begonnen habe ich mit Bezeichnung und Hersteller, um einen Ansatz zu finden.
Ich habe eine Monster-Verschleifung gebastelt, die mir beinahe die richtige Abfrage bastelt. (siehe unten)
eigentlich fehlt (glaube ich) "nur noch" das richtige aufrufen der einzelnen Teilwörter. Zur Zeit werden immer a,b,c ausgegeben. Es soll aber a,b,c – b,c,a – c,a,b ausgegeben werden. Vielleicht hab ich einfach zu lange davor gesessen... kann mir jemand auf die Sprünge helfen?
Am liebsten mit der erwähnten Zauberformel, aber über einen Tip meinen Code fertigzustellen (oder zu vereinfachen) wäre ich natürlich auch glücklich!
Vielen Dank!
ich soll eine Suche über mehrere Tabellenfelder basteln und stoße dabei auf ernsthafte Probleme. Bin da jetzt schon mehrere Stunden mit beschäftigt, aber komm zu keinem echten Ergebnis.
Ich suche eine Möglichkeit für folgende Suchanforderung:
Seien a,b,c,d Teilwörter.
Suche nach "a b c d" soll Einträge finden, deren Bezeichnung und Hersteller und Kategorie (und Kommentar) einen oder mehrere dieser Strings enthält.
Ich brauche also entweder eine Zauber-MySQL-Abfrage oder irgendwas in PHP, was mir diese Abfrage zurechtbastelt.
Begonnen habe ich mit Bezeichnung und Hersteller, um einen Ansatz zu finden.
Ich habe eine Monster-Verschleifung gebastelt, die mir beinahe die richtige Abfrage bastelt. (siehe unten)
eigentlich fehlt (glaube ich) "nur noch" das richtige aufrufen der einzelnen Teilwörter. Zur Zeit werden immer a,b,c ausgegeben. Es soll aber a,b,c – b,c,a – c,a,b ausgegeben werden. Vielleicht hab ich einfach zu lange davor gesessen... kann mir jemand auf die Sprünge helfen?
Am liebsten mit der erwähnten Zauberformel, aber über einen Tip meinen Code fertigzustellen (oder zu vereinfachen) wäre ich natürlich auch glücklich!
PHP-Code:
$suchwoerter = array ("a","b","c");
$suche = "";
$anzahl = count($suchwoerter);
$counter = 0;
for ($t=0; $t<=$anzahl; $t++){
$hilfscounter=0;
$durchlauf=0;
$a = 0;
for ($zeichenzaehler=0;$zeichenzaehler<$anzahl;$zeichenzaehler++){
for($i=0; $i<$anzahl-$counter; $i++){
if ($hilfscounter >= $anzahl) {
$hilfscounter = 0;
}
$suche .= ($i == 0) ? " OR" : "AND";
$suche .= " bezeichnung LIKE '%".$suchwoerter[$hilfscounter]."%' ";
$hilfscounter++;
}
$suche .= " ";
for($j=0; $j<$counter; $j++){
if ($hilfscounter>=$anzahl){
$hilfscounter=0;
}
else $ausgabe = $hilfscounter;
$suche .= ($hilfscounter==0) ? " OR": "AND";
$suche .= " hersteller LIKE '%".$suchwoerter[$hilfscounter]."%' ";
$hilfscounter++;
}
}
$counter++;
}
echo str_replace (" ", "<br>",$suche);
Kommentar