MYSQL-Abfrage/Suche mit Regexp

Caralynn

Mitglied
Hallo,

Ich doktore zur Zeit an einem Query für eine Datenbanksuche herum, der bisher auch zufriedenstellend funktioniert. Allerdings gibt es noch eine Bedingung, die nicht richtig funktioniert... :rolleyes:
Normalerweise verwende ich bei Suchen ja immer das LIKE-Statement, aber irgendwie habe ich das Gefühl, dass für diesen bestimmten Teil eine Regexp sinniger wäre.

In der Datenbank ist eine Spalte namens Art eingetragen, die mit bis zu vier Begriffen (Arten) gefüllt sein kann, sagen wir mal: Kindergarten Vorschule Hauptschule Gymnasium. Bei einem Eintrag in der Tabelle kann nun "Kindergarten Vorschule 0 0" angegeben sein und der Eintrag wäre also ein Kindergarten und eine Vorschule. Ein anderer Eintrag wäre "0 0 Hauptschule Gymnasium".

Bei dem Suchformular kann man jetzt also Kreuzchen setzen und es wird im verarbeitenden Formular eine Variable $hauptschule, eine $gym, eine $kindergarten und eine $vorschule requestet.
Ja... nur wie durchsuche ich die Datenbank nach Einträgen, die diesen Suchkriterien entsprechen? Möchte mit "Oder" durchsuchen lassen, also wenn man Kindergarten und Hauptschule ankreuzt, kommen Eintrag 1 und Eintrag 2.
Da ich die Abfrage leider nicht hier habe (habe sie im Büro), kann ich auch keinen Quellcode posten - dürfte aber in etwa so aussehen, ist ein zusammengesetzter Query:

PHP:
$query .= "AND typ REGEXP "($hauptschule|$kindergarten|$gym|$vorschule)"";

Naja... wenn man bei dem Formular bestimmte Sachen nicht ankreuzt, wird die Variable eben 0 gesetzt, aber das soll wohl nicht sein, bräuchte also immer einen String aus den requesteten Variablen ohne 0er, denk ich? Auf jeden Fall funktioniert meines bisher nicht richtig, wenn ich nach $kindergarten suche, kommen alle Einträge, die den übrigen Suchkriterien entsprechen.
Wenn auch jemand eine Idee hat, wie ich das mit der "Art-Spalte" sinnvoller lösen kann, bin ich für Verbesserungsvorschläge offen ^^;;


Liebe Grüße,
Cara
 
Hallo Cara,

ich kann zwar kein PHP (programmiere momentan in JAVA) aber ich glaube, dass ich dir trotzdem weiterhelfen kann.
Du kannst doch im PHP die 4 Variablen $hauptschule, $gym, $kindergarten und $vorschule auf einen Inhalt abfragen.
Dadurch erstellst du dann deine SQL Abfrage:

Beispiel: $hauptschule, $gym, $kindergarten sind gefüllt und $vorschule ist leer (0)

Dann würdest du folgende Abfrage aufbauen:

typ REGEXP "$hauptschule" AND typ REGEXP "$gym," AND typ REGEXP "$kindergarten"

Durch die AND Verknüpfung stellst du sicher, dass in dem Datenbankfeld typ die eingegebenen Inhalte enthalten sind.

Gruß

Harald
 
Zurück