Hallo,
Ich möchte eine Suche in eienr MySQL Adressdatenbank realisieren. Dazu soll es nur EIN Suchfeld geben in das der Nutzer eine beliebige Anzahl an begriffen eingeben kann.
Ein Leerzeichen würde als Trennzeichen für die Begriffe dienen.
Nach Verarbeiten des Formulars habe ich alle einzelnen Begriffe in einem Array vorliegen.
Als Beispiel sieht die Datenbankstruktur so aus:
ID, Vorname, Name, Strasse, PLZ, Ort
Der User soll aber die Möglichkeit haben mit den Begriffen beliebige Felder zu durchsuchen.
Das heißt er kann in das Eingabefeld eingeben: "Hans Meier", "Müller Berlin" oder "Hauptstraße Frank" oder auch nur "Müller"
Es soll jeder Datensatz gefunden werden der ALLE Suchbegriffe einthält. Ob dabei alle Begriffe in der gleichen Spalte oder in verschiedenen Spalten stehen und in welcher Reihenfolge sie vorkommen soll egal sein.
Das einzige was mir bisher eingefallen ist wäre eine Abfrage wie:
...
WHERE
(Vorname LIKE '%begriff1%' OR NAME LIKE '%begriff1%' OR Strasse LIKE '%begriff1%' OR ...)
Bei jedem weiteren Begriff käme dann ein:
AND (Vorname LIKE '%begriff2' ...)
Diese Bedingung würde ich dann für jeden Begriff mit einer Schleife generieren lassen. Würde gehen, aber gäbe es noch einen einfacheren Weg?
Ich möchte eine Suche in eienr MySQL Adressdatenbank realisieren. Dazu soll es nur EIN Suchfeld geben in das der Nutzer eine beliebige Anzahl an begriffen eingeben kann.
Ein Leerzeichen würde als Trennzeichen für die Begriffe dienen.
Nach Verarbeiten des Formulars habe ich alle einzelnen Begriffe in einem Array vorliegen.
Als Beispiel sieht die Datenbankstruktur so aus:
ID, Vorname, Name, Strasse, PLZ, Ort
Der User soll aber die Möglichkeit haben mit den Begriffen beliebige Felder zu durchsuchen.
Das heißt er kann in das Eingabefeld eingeben: "Hans Meier", "Müller Berlin" oder "Hauptstraße Frank" oder auch nur "Müller"
Es soll jeder Datensatz gefunden werden der ALLE Suchbegriffe einthält. Ob dabei alle Begriffe in der gleichen Spalte oder in verschiedenen Spalten stehen und in welcher Reihenfolge sie vorkommen soll egal sein.
Das einzige was mir bisher eingefallen ist wäre eine Abfrage wie:
...
WHERE
(Vorname LIKE '%begriff1%' OR NAME LIKE '%begriff1%' OR Strasse LIKE '%begriff1%' OR ...)
Bei jedem weiteren Begriff käme dann ein:
AND (Vorname LIKE '%begriff2' ...)
Diese Bedingung würde ich dann für jeden Begriff mit einer Schleife generieren lassen. Würde gehen, aber gäbe es noch einen einfacheren Weg?

Kommentar