formen eines sql-queries aufgrund von comboboxen
harald
- php
0 aitee
hi leute!
ich brauche dringend rat, ob ich auf dem richtigen weg bin, bzw. wie ihr mein problem lösen würdet. ich hab nun mittlerweile 3h in dieses skript investiert, und irgendwie stoß ich immer an meine grenzen wenn ich fast fertig bin... bin noch nicht sonderlich versiert als progger...
--------------------------------------------------------------------
erstmal mein problem:
--------------------------------------------------------------------
ich hab eine mySQL-Datenbank, in der die Adressdaten von Kunden stehn. Im Feld landid steht 1 fuer Österreich, 2 fuer Deutschland und 3 fuer Schweiz. Im Feld bundeslandid steht 1-9 fuer die bundeslander von österreich, 10-25 fuer deutsche gaue (heisst so, oder?) und von 26-51 gehen die schweizer kantone.
jetzt hab ich ein suchformular, in dem es 3 comboboxen gibt, ein input und 3 checkboxen. die checkbosen stehen fuer kategorien der kunden (alt, neu, inaktiv) das input fuer den namen. die suche nach name und/oder kategorie funktioniert perfekt.
jedoch hab ich starke probleme mit den laendern...
ich bekomms nicht hin, dass z.b. kunden aus salzburg, sachsen und valis gesucht werden. oder z.b. gesamt österreich, gesamt deutschland und nur valis. wie gehe ich das am besten an?
--------------------------------------------------------------------
hier meine loesung:
--------------------------------------------------------------------
//irgendwo am anfang meines skripts
$beginnsql = "SELECT kunden.id, kunden.firma, kunden.strasse, kunden.plz, kunden.ort, kunden.telnr, kunden.faxnr, kunden.email, kunden.website, kunden.kategorie, land.symbol FROM dienstleister, land WHERE land.id = kunden.landid";
$endsql =" ORDER BY kunden.firma ASC";
$maskaustria = $_GET['austria'];
$maskdeutschland = $_GET['deutschland'];
$maskschweiz = $_GET['schweiz'];
//dann hab ich mir gedacht ich unterscheide mal die beiden extremfaelle:
//Wenn alle Laenderauwahlen auf "gar nicht" gesetzt sind wird die fehlermeldung gebracht
if ($maskaustria =="NOT" and $maskdeutschland =="NOT" and $maskschweiz =="NOT"){
print "Sie müssen ein Land angeben, um Ihre Suche ausführen zu können";
exit;
}
//Wenn alle Laenderauwahlen auf "gesamt" gesetzt sind wird die laendereinschraenkung nicht beruecksichtigt
if ($maskaustria =="ALL" and $maskdeutschland =="ALL" and $maskschweiz =="ALL"){
$landsql = "";
}
//so, und jetzt hakts:((
// ich hab mir gedacht, ich SO KOENNTE DAS GEHN
if ($maskaustria != "NOT";){
elseif ($maskaustria == "ALL";){
$austria ="'1'";
}
else{
$austriabund ="$maskaustria";
}
}
if ($maskdeutschland != "NOT";){
elseif ($maskdeutschland == "ALL";){
$deutschland ="'2'";
}
else{
$deutschlandbund ="$maskdeutschland";
}
}
if ($maskschweiz != "NOT";){
elseif ($maskschweiz == "ALL";){
$schweiz ="'3'";
}
else{
$schweizbund ="$maskschweiz";
}
}
// hier bau ich dann den bereich der sql-query zusammen, der die laender verarbeitet
$landsql = " AND kunden.landid IN ($austria$deutschland$schweiz) OR kunden.bundeslandid IN ($austriabund$deutschlandbund$schweizbund)";
//meine sqlquery ist dann so
$query ="$beginnsql$landsql$endsql";
--------------------------------------------------------------------
aber so gehts natürlich nicht...
wahrscheinlich durchblick ich die struktur von if else und co nicht, bin fuer jede hilfe dankbar!
beste grüße aus salzburg,
harald
Hab zwar keine Lösung aber ...
Gaue?? Noch nie gehört, hier in D heisst es Bundesland, bzw. die Mehrzahl Bundesländer :)