Seite 1 von 1

SQL Abfrage in php mit mehreren Abfrageoptionen

Verfasst: 06.11.2006 14:32
von Savage-smoker
Hallo,

ich hoffe ist hier der richtige Platz für die Frage.
Mein Problem:
Ich möchte meine Datenbank nach mehreren sachen abfragen, wo ich per optionsfeld jeweils die suchmöglichkeiten vorgebe (wie zum Beispielbei Autoscout24.de)
habe in meinem Fall jetzt zur Zeit nur 2 Suchpotionen (Bundesland,Geschlecht)und das nur von Usern die aktiviert sind.
Habes erstmal alles in eine Suchanfrage gesteckt also :

Code: Alles auswählen

"SELECT * FROM user WHERE aktiv=1 AND regionid like '%".$regionid."%' AND geschlbin like '%".$geschlbin."%' "
Möchte aber noch meh sachen zum Auswählen vorgeben, aber auch so, daß wenn der User eine sache nicht auswählt das diese dann sozusagen icht brücksichtigt wird und nur die sachen gesucht werden die er auch selektiert.
Also er will zum Beispiel nur User sehen die weiblich sind das Bundesland ist ihm egal.
jetzt habe ich es so gemacht das ich alleBundesländer 001-016 vergeben haben und wenn er sozusagen alle Bundesländer auswählt das dann für die suche like "0" eingesetzt wird weil ja die 0 so in allen vorkommt geht ist aber wie ich finde kein saubere Lösung.
Möchte auch gerne noch die Optionen des Alters dazumachen aber wie.Der User soll frei wählen können halt von 20-30 Jahre also mit zwei Feldern einmal startalter und das maxalter, in eine richtung wäre mir klar mit < oder > und dann die Zahl.
aber wie wenn beide zusammen sein sollen also alles dazwischen genommen werden soll.
Vieleicht hat ja jemand von euch so ein Script fertig wo ich halt die Datenbankbezeichnungen ändern müßte und die entsprechnden Kategorien.
Hoffe es war einigermaßen verständlich.
Schonmal Danke im vorraus.
Mannlernt ja am besten von anderen scripten aber diese Datenbankabfragen findet man ja auf den seiten nicht also die Quelltexte.

Mit freundlichen Grüßen
Savage

Re: SQL Abfrage in php mit mehreren Abfrageoptionen

Verfasst: 06.11.2006 15:22
von gn#36

Code: Alles auswählen

$sql = "SELECT * FROM user WHERE aktiv=1 AND (regionid like '%".$regionid."%' OR  $regionid = 0) AND (geschlbin like '%".$geschlbin."%' OR  $geschlbin = 0)"
Wie wäre es denn mit einem OR :) Wenn die Variable =0 ist dann ist die Abfrage wahr und die andere Abfrage zur Variable wird "überschrieben", die Klammerung verhindert eine fehlerhafte Beziehung...

Verfasst: 06.11.2006 15:34
von mad-manne
Ich würde vorschlagen, die Abfrage mittels einer Batterie entsprechender IFs "zusammenzubauen" um sie dann am Ende immer nur so abzuschicken, dass sie die Elemente enthält, die der User tatsächlich abfragen will.
Dazu gibt es im phpBB-Quellcode durchaus auch einige Beispiele zu finden :wink:

Wie das in deinem konkreten Fall genau auszusehen hat, kann ich jetzt aber nicht an einem Beispiel zeigen.

Gruss,
Manne.

Verfasst: 06.11.2006 15:39
von Savage-smoker
erstmal Danke schon über so schnelle Antworten.

Genau mit den if sachen würd ich es gern machen wollen.
Was muß ich denn hier als suchwort dafür eingeben um mich drüber anzulesen, denn mit den if's kenn ich mich noch nicht aus?

Danke