MYSQL - Wie selektiere ich das richtig?
AKi
- datenbank
Hallo.
Ich habe in einer Tabelle die Spalten Vorname und Name. In einem Schnellsuchefeld kann es nun vorkommen, dass "Vorname Name" oder "Name Vorname" in diesem Feld stehen.
Wie suche ich am geschicktesten nach Übereinstimmungen mit der Datenbank ohne groß mit PHP herumbasteln zu müssen zu müssen.
Kann ich überprüfen, ob ein Teil des Feldes in einer der Zelle vorkommt? Oder gibt es einen Ausdruck wie "where vorname.name like $suchfeld"?
Würde mich über schnelle Hilfe freuen.
Vielen Dank
Andreas
Hallo Andreas,
versuchs doch mal so:
suche.php:
<form action="abfrage.php" method="post">
<input type="text" name="suche">
<input type="submit" value="Suchen">
</form>
abfrage.php:
SELECT * from datenbank WHERE vorname LIKE "%'.$suche.'%" AND name LIKE "%'.$suche.'%"
Grüße
Kathrin
Hallo.
Vielen Dank für deine Antwort allerdings ist mir glaube ich damit nicht viel geholfen.
Nehmen wir mal an, dann in meiner Datenbank steht
... | vorname | name | ...
... | Thomas | Müller | ...
Und jemand gibts ins Suchfeld ein "Thomas Müller", dann ergibt deine Suchanfrage ja eine leere Antwort, weil "%Thomas Müller%" in keinem der beiden Felder vollständig vorkommt.
Wie schaffe ich es also, dass Mysql trotzdem ein Ergebnis findet?
Lg
Andreas
hi,
Und jemand gibts ins Suchfeld ein "Thomas Müller", dann ergibt deine Suchanfrage ja eine leere Antwort, weil "%Thomas Müller%" in keinem der beiden Felder vollständig vorkommt.
dann musst du wohl den suchbegriff vorher in zwei wörter aufteilen, z.b. in dem du ihn am leerzeichen auftrennst. funktionen dazu findest du im php-manual bei den string-funktionen.
allerdings musst du dir dann immer noch überlegen, was du mit dem suchbegriff "george walker bush" machst ...
gruss,
wahsaga
Vielen Dank. Dann werde ich wohl versuchen müssen, das nochmal um zu strukturieren.
Ich habe eigentlich gehofft, in diesem Forum auf eine Funktion zu stossen, wie man bei Mysql einen Suchbegriff über zwei Spalten erstrecken kann. Aber so etwas wird es wahrscheinlich nicht geben ...
Andreas
yo,
Ich habe eigentlich gehofft, in diesem Forum auf eine Funktion zu stossen, wie man bei Mysql einen Suchbegriff über zwei Spalten erstrecken kann. Aber so etwas wird es wahrscheinlich nicht geben ...
du hast das noch nicht ganz verstanden, was wahasaga dir geschrieben hat. das problem liegt nicht bei mysql, sondern bei der formulareingabe. wenn du nur ein feld zur verfügung stellst und dort ein benutzer mehrere suchbegrifffe eingeben kann, dann liegt es an dir und nicht an mysql, das vorher zu "parsen".
natürlich kann man alle zeichen oder die einzelnen wörter über mehrere spalten einer tabelle jagen, um zu sehen, ob es übereinstimmungen gibt. aber ist das sinnvoll ?
Ilja
Ich denke ich hab den Beitrag von wahasaga schon verstanden. Ich hab mich wohl nur in eine Lösung vernarrt, die in meinem Kopf ganz toll klang.
Aber ich werde jetzt eine Lösung machen, die die Eingabe vorher aufteilt.
Vielen Dank für eure Hilfe
Andreas
yo,
Aber ich werde jetzt eine Lösung machen, die die Eingabe vorher aufteilt.
ganz genau, denn die datenbanken bilden ja nur eine logik ab, können aber noch keine logik erschaffen. das wäre der KI sehr nahe, wenn ein benutzer einfach mal ein paar schlagwörter zum besten gibt und die datenbank sagt, kleinen moment, das haben wir gleich. ;-)
oder mit anderen worten, die logik müssen immer noch (zum glück) wir menschen einbringen. die maschinen bilden das nur ab.
Ilja