Mailinglisten-Archive |
Hallo, ich bastle jetzt schon die längste zeit an einer suchabfrage rum, und bekomm das nicht hin :( das suchformular besteht aus 4 multiplen select feldern (http://server.cwd.at/jobforum1/suchen.php3) momentan implementiert sind alle 4 felder + die wahl zwischen ausschreibung und gesuch (stichwortsuche und Datum werden noch nicht abgefragt) der code von search.php3 (übergabe per post) siehe unten. wenn ich nur 2 felder abfrage, zb. berufsgruppe und spezialbereich funktioniert es, sind es mehrere nicht nicht mehr (timeout) wird dem mysql der join über die 5 tabellen zuviel? Gibt es eine bessere möglichkeit die suche abzufragen? (klar nur pulldown menüs nehmen und den user nur eines auswählen lassen *ggg* aber das ist ja nicht sinn der sache) Es muß auch noch wo anderes ein fehler sein hinter dem ich nicht komme, wenn ich ALLE auswähle bekomm ich weniger ergebnisse geliefert als wenn ich jede zb. berufsgruppe wähle, wie kann das sein? Danke für euere hilfe Ludwig PS: die funktion TEST schickt nur den query an die DB und printet die Ausschreibungsids und den abgeschickten query. ---------------------- $query = "SELECT DISTINCT ausschreibung.ausschreibungsid FROM ausschreibung,berufsgruppezw,spezialbereichzw,regionzw,artzw WHERE ausschreibung.ausart = '$gesuch'"; /* BERUFSGRUPPE */ $leer = "0"; for ($i=0;$i<count($berufsgruppe);$i++): if ($berufsgruppe[$i] == "alle") { /* echo "alle ausgewählt<br>"; */ }else{ if ($leer == "0") { $query .= " AND berufsgruppezw.berufsgruppeid = '$berufsgruppe[$i]'"; $leer = "1"; }else{ $query .= " OR berufsgruppezw.berufsgruppeid = '$berufsgruppe[$i]'"; } } endfor; $leer="0"; /* END BERUFSGRUPPE */ /* SPEZIALBEREICH */ for ($i=0;$i<count($spezialbereich);$i++): if ($spezialbereich[$i] == "alle") { /* echo "alle ausgewählt<br>"; */ }else{ if ($leer == "0") { $query .= " AND spezialbereichzw.spezialbereichid = '$spezialbereich[$i]'"; $leer = "1"; }else{ $query .= " OR spezialbereichzw.spezialbereichid = '$spezialbereich[$i]'"; } } endfor; /* END SPEZIALBEREICH */ /* Region */ for ($i=0;$i<count($region);$i++): if ($region[$i] == "alle") { /* echo "alle ausgewählt<br>"; */ }else{ if ($leer == "0") { $query .= " AND regionzw.regionid = '$region[$i]'"; $leer = "1"; }else{ $query .= " OR regionzw.regionid = '$region[$i]'"; } } endfor; $leer = "0"; /* END REGION */ /* ART */ for ($i=0;$i<count($art);$i++): if ($art[$i] == "alle") { /* echo "alle ausgewählt<br>"; */ }else{ if ($leer == "0") { $query .= " AND artzw.artid = '$art[$i]'"; $leer = "1"; }else{ $query .= " OR artzw.artid = '$art[$i]'"; } } endfor; $leer = "0"; /* ART */ $query .= ";"; test($query); -- CWD - Creative Web Design http://www.cwd.at Ludwig Ruderstaller mailto:ruderstaller_(at)_cwd.at A. Baumgartnerstr. 44/B6/034 Tel/Fax: +43 1 6673289 A-1230 Wien Mobil: +43 676 4208221
php::bar PHP Wiki - Listenarchive