Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Volltextsuche php mysql

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
ben78
PostRank 4
PostRank 4
Beiträge: 153
Registriert: 30.03.2007, 17:15

Beitrag von ben78 » 09.02.2010, 13:00

Jetzt schaut's aus als ob es klappen würde.

Problem lag bei der Übernahme.

Very BIG THX @Synonym

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 09.02.2010, 17:03

Code: Alles auswählen

// 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: Alles auswählen

// vollwertiger Query
$sql = "SELECT * FROM beauty WHERE id <> 0"

if &#40;$suchwort&#41; &#123;
$sql .= ' AND MATCH....';
&#125;

if &#40;$marke&#41; &#123;
$sql .= ' AND marke = ...';
&#125;
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: Alles auswählen

$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.
Ich kaufe Dein Forum!
Kontaktdaten

ben78
PostRank 4
PostRank 4
Beiträge: 153
Registriert: 30.03.2007, 17:15

Beitrag von ben78 » 11.02.2010, 10:43

@mgutt & Synonym...BIG THX

Der Tipp von Synonym hat funktioniert. Ich konnte meine Tabelle so durchsuchen, wie ich es wollte.

Jedoch bin ich jetzt soweit, der Suma eine Blätterfunktion zu verpassen...und da hapert es schon wieder bei der Query. :cry:

Ich habe hierzu ein neues Thema (Suma mit Blätterfunktion) eröffnet und gehe dabei auch auf die zuletzt hier gemachten Vorschläge von mgutt und Synonym ein, damit das hier nicht zu lang wird und bis ins unendliche ausschweift.

@ALL...VERY BIG THX 4 HLP...:wink: :idea: :wink: ...!!!
...und speziell @Mork vom Ork &@mgutt...ihr seit super...vielen DANK LEUTZ!!!

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag