Such Abfrage Probleme

Nur mal so als Zwischen-Frage: Ist das OR richtig, oder sollte das eher eine AND-Suche werden? Wenn der Benutzer als Vorname 'Hans' und als Nachname 'Müller' eingibt, dann soll doch nach einem 'Hans Müller' gesucht werden und nicht nach jemanden der 'Hans' mit Vornamen oder 'Müller' mit Nachnamen heißt. Mit AND müßte die Abfrage (ich denke man darf auch Anfrage sagen, oder?) auch ohne die if-Statements funktionieren.
 
ne es müßte schon or sein.
obwohl and müsste es sein wenn ich sowohl vorname als auch nachname eingebe.
aber es soll ja auch so sein, das z.b nur der vorname eingegeben wird. dann müsste ich vorher abfragen wo was drin steht und dann speziell nur nach dem Suchen!

ist schwierig somal ich schon kaum noch durchblick
 
Irgendwo hattest du doch folgenden SQL-Befehl:

PHP:
$q =mysql_query ($s='SELECT * FROM gast WHERE name like "%'.$firma.'%" OR ansp_name like "%'.$nachname.'%" OR ansp_vorname like "%'.$vorname.'%";');

Wenn du dort OR durch AND ersetzt, dann müsste es das richtige Ergebnis liefern, unabhängig davon, wieviele Felder zur Suche verwendet werden. Wenn bspw. nur nach dem Vornamen gesucht wird gäbe es folgende Abfrage:

PHP:
SELECT * FROM gast WHERE name like "%%" AND ansp_name like "%%" AND ansp_vorname like "%hans%";

und die liefert nunmal alle Datensätze mit dem Vornamen hans. Allerdings weiß ich nicht, ob leere(NULL-) Felder bei der Suche berücksichtigt werden, falls du solche Felder in der Datenbank hast.
 
Erstmal sorry, aber ich hatte gestern dann Feierabend :D

Die if's sind zum prüfen da, ob die Variable vorhanden ist.
Da die Möglichkeit bei dir besteht, daß 1,2 oder 3 Sachen gleichzeitig abgefragt werden,
und dann noch in verschiedenen Varianten, bin ich auf die [phpf]implode[/phpf] Variante ausgewichen,
um bei mehreren Kriterien diese mit OR zu verknüpfen.

Da du jetzt anscheinend auch solche Sachen abfangen willst, wie "hans" und "müller", hat Frankdfe Recht. Dann brauchst du nur ne simple AND, so wie sie Frankdfe gepostet hat.

Probier das mal aus.
 
Nein, wenn du es tatsächlich so brauchst, dann reicht das query wie:
PHP:
 $q =mysql_query ($s='SELECT * FROM gast WHERE name like "%'.$firma.'%" AND ansp_name like "%'.$nachname.'%" AND ansp_vorname like "%'.$vorname.'%";');
 
Danke genau das war das Problem jetzt haut es genau hin. Wenn ich jetzt nach dem Vornamen Hans suche, kommt auch wirklich nur diese Person und nicht eine Frau Müller.

Danke Danke Danke

Ihr seit klasse! ;-) :)
 
Zurück