mgutt


: 08.03.2005 : 3135
|
| : 09.02.2010, 17:03 : Volltextsuche php mysql |
|
|
| Code: |
// Querey
$sql = "SELECT * FROM beauty WHERE";
if ($suchwort) $sql .= " MATCH (Bezeichnung, Beschreibung, Marke) AGAINST('" . mysql_real_escape_string($suchwort) . "')";
if ($marke)
{
if ($suchwort) $sql .= " AND";
$sql .= " Marke = '%" . mysql_real_escape_string($marke) . "%'";
}
|
Das Konstrukt macht konzeptionell gesehen keinen Sinn.
Suchwort ist sowieso immer gegeben, daher macht eine Aufteilung des Queries an dieser Stelle keinen Sinn. Aufteilen macht nur Sinn, wenn Du optional den Query erweiterst.
if ($suchwort) macht wenn nur um die gesamte Queryausführung Sinn oder aber wenn Du sowohl nach $suchwort als auch nach $marke suchen lassen willst. In dem Fall würde sowas Sinn machen:
| Code: |
// vollwertiger Query
$sql = "SELECT * FROM beauty WHERE id <> 0"
if ($suchwort) {
$sql .= ' AND MATCH....';
}
if ($marke) {
$sql .= ' AND marke = ...';
} |
id <> 0 musst Du so anpassen, dass es bei Dir Sinn macht. Das heißt einfach nur, dass er die Produkte auslesen soll, deren id nicht gleich 0 ist. Also alle Produkte. Du kannst das auf ein x-beliebiges Feld anwenden, wo Du weißt, dass es immer gefüllt ist. z.B. auf die bezeichnung mit WHERE bezeichnung <> ''
Danach die Bedingungen sind entsprechend optional.
Wie gesagt macht sowas aber nur Sinn, wenn Du die überhaupt optional haben möchtest. Soll die Suche immer mit suchwort sein und marke nur optional sein, dann solltest Du das Query so lassen:
| Code: |
| $sql = "SELECT * FROM beauty WHERE MATCH ..." |
Dein Fehler mit dem "Produktfinder" ist, dass überhaupt "Produktfinder" übertragen wird. Hast Du da im Formular eine Vorgabe drin oder wie? Die hat da nichts zu suchen oder meinst Du, dass der Besucher das Wort entfernt. Die sind zu dumm dazu.
» Adsense & Vibrant Alternative
» Ankauf von Communities und Forendomains |
|