!!!THREAD CLOSED!!!
Hi PHP-Leutz,
ich hoffe mich mit meinem gestrigen (1.) Beitrag (Crossposting) nicht all zu unbeliebt in diesem Forum gemacht zu haben. Jetzt weiss ich wenigstens, was man unter Crossposting versteht und vor allem weshalb dies gemieden werden soll. THX Leutz. Ich dachte eben auf diese Art mein Problem schneller lösen zu können. Naja, wie dem auch sei, aller Anfang ist schwer...ich hoffe, dass jetzt wieder alles Passt und ich nicht so wie gestern auf die Schnauze fliege.
Der User soll für seine Suche die Möglichkeit haben entweder das Texteingabefeld und das Sprungmenü gleichzeitig zu benutzen ODER für seine Such nur eines der beiden Felder zu benutzen. Also entweder er tippt einen Suchbegriff in das Texteingabefeld ein und lässt dabei das Sprungmenü (Marke auswählen) unberührt oder er wählt nur eine Marke aus dem Sprungmenü und lässt dabei das Texteingabefeld unberührt.
Ich möchte, dass der User im Texteingabefeld das Wort "Produktfinder" sehen bzw. lesen kann solange er nichts darin eintippt aber das Wort "Produktfinder" nicht für die Suche berücksichtigt wird. Also wenn das Texteingabefeld bei der Suche unberührt bleibt, soll folgende Querey erscheinen:
SELECT * FROM test WHERE Marke LIKE '%Adidas%'
Um das zu erreichen, habe ich meine Querey zerteilt die jetzt so aussieht:
PHP-Code:
// Querey
$sql = "SELECT * FROM test WHERE";
if ($suchwort) $sql .= " MATCH (Bezeichnung, Beschreibung, Marke) AGAINST('" . mysql_real_escape_string($suchwort) . "')";
if ($marke)
{
if ($suchwort) $sql .= " AND";
$sql .= " Marke LIKE '%" . mysql_real_escape_string($marke) . "%'";
}
// if sucheingabe
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}
...Vor der Zerteilung sah meine Query im Skript so aus:
PHP-Code:
// Querey
$sql = "SELECT * FROM test WHERE MATCH (Bezeichnung, Beschreibung, Marke) AGAINST('" . mysql_real_escape_string($suchwort) . "')";
if ($marke)
{
if ($suchwort) $sql .= " AND";
$sql .= " Marke LIKE '%" . mysql_real_escape_string($marke) . "%'";
}
// if sucheingabe
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
die('Ungültige Abfrage: ' . mysql_error());
}
Trotz der Zerteilung erhalte ich weiterhin folgende Query bei unberührtem Texteingabefeld:
SELECT * FROM test WHERE MATCH (Bezeichnung, Beschreibung, Marke) AGAINST('Produktfinder') AND Marke LIKE '%Adidas%'
...und somit 0 Suchergebnisse, weil hier nach dem Suchbegriff "Produktfinder" gesucht wird.
Alle anderen Suchkombis funzen einwandfrei. Also wenn in das Texteingabefeld ein Suchbegriff getippt wird und gleichzeitig eine Marke aus dem Sprungmenü gewählt wird oder nur ein Suchbegriff in das Texteingabefeld getippt wird, ohne dass eine Marke aus dem Sprungmenü ausgewählt wird.
Sobald ich aber das Texteingabefeld unberührt lasse, wird automatisch nach dem Wort "Produktfinder" gesucht und es werden mir 0 Suchergebnisse ausgegeben.
War die Zerteilung überhaupt der richtige Ansatz zu meinem Problem oder kann hier eine Stoppwortliste mit folgender Zeile besser helfen:
PHP-Code:
$stopwords["de"][] = "Produktfinder";
...und wenn nein, was wäre hier die beste bzw. richtigste Lösung???
Schonmal
VERY BIG THX im Voraus!