phpbar.de logo

Mailinglisten-Archive

[php] MySQL Query

[php] MySQL Query

Ludwig Ruderstaller ruderstaller_(at)_cwd.at
Wed, 22 Dec 1999 14:50:44 +0100


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