i hope ihr könnt bei meinem problem helfen..
So...ich habe eine sehr umfangreiche Datenbankabfrage geplant, wo man nach allen möglichen kriterien(bereichen) sich daten anzeigen lassen kann!
da habe ich ein option select feld...bzw. 4
das erste für Tmin
zweite für Tmax
dritte für rr
vierte für snow
nun will ich ja nicht tausend zeilen schreiben und dachte mir das ich das mit "Where" und dann den "AND" verknüpfungen auslesen kann...
if($Tmin != ""){$Tminn = "Tmin < $Tmin";}else{$Tminn = "Tmin";}
if($Tmax != ""){$Tmaxx = "Tmax < $Tmax";}else{$Tmaxx = "Tmax";}
if($rr != ""){$rrr = "rr < $rr";}else{$rrr = "rr";}
if($snow != ""){$snoww = "snow < $snow";}else{$snoww = "snow";}
$abfrage = "SELECT * FROM msw_$jahr WHERE $Tminn AND $Tmaxx AND $rrr AND $snoww $sort";
geht soweit wunderbar..wenn ich in allen 4 option select feldern was ausgewählt habe...wenn ich aber dort nichts ausgewählt habe gibt es nur schei*e...keine fehlermeldung..aber falsche datenbereiche...
beispiel:
ich habe für tmin = -5, für tmax = 5, und die restlichen leer...
dann lautet der code volsltändig ja...
SELECT * FROM msw_2002WHERE Tmin < -5.0 AND Tmax < 5.0 AND rr AND snow ORDER BY bla bla bla...
blöder weise zeigt er mir jetzt nur werte an die erstens Tmin unter -5 haben, Tmax unter 5 haben UND wo in rr etwas vorhanden ist und in snow etwas vorhanden ist...
problem: es gibt auch tage mit tmin unter -5, tmax unter 5 und ohne rr und ohne snow...:/
mir fällt aber nicht ein wie ich das anders schreiben könnte.
ich muß ja die AND's machen...kann die ja nicht bei $Tminn etc einsetzen da ich ja nicht weiß welches das erste sein wird, dort müßte dann ja "Where" stehen...
ich hatte auch schon versucht statt wenn nix ausgewählt wird bei z.b. snow, statt "snow"..nichts ausgeben zu lassen...aber dann meckert er wegen den vielen "And's"...
vollständiger code:
<?
if($Tmin != ""){$Tminn = "Tmin < $Tmin";}else{$Tminn = "Tmin";}
if($Tmax != ""){$Tmaxx = "Tmax < $Tmax";}else{$Tmaxx = "Tmax";}
if($rr != ""){$rrr = "rr < $rr";}else{$rrr = "rr";}
if($snow != ""){$snoww = "snow < $snow";}else{$snoww = "snow";}
$abfrage = "SELECT * FROM msw_$jahr WHERE $Tminn AND $Tmaxx AND $rrr AND $snoww $sort";
$ergebnis = mysql_query($abfrage);
$row = mysql_num_rows($ergebnis);
while($row = mysql_fetch_object($ergebnis))
{
$mittel = ($row->Tmax + $row->Tmin) / 2;
echo "<tr align=\"center\"><td>";
echo "$row->tag.$row->monat.$jahr";
echo "</td><td>";
echo(sprintf ("%01.1f°C", $row->Tmin));
echo"</td><td>";
echo(sprintf ("%01.1f°C", $row->Tmax));
echo"</td><td>";echo(sprintf ("%01.1f°C", $mittel));echo"</td><td>";
if($row->rr != "0.0"){echo(sprintf ("%01.1f l/m²", $row->rr));}
echo"</td><td>";
if($row->snow != "0.0"){echo(sprintf ("%01.1f cm", $row->snow));}
echo"</td></tr>";
}
echo "</table>";
?>
ich hoffe ihr könnt mir helfen. oder geht das gar nicht?
muß ich mir die arbeit machen und die mehreren möglichkeiten ausschreiben. ich hoffe nicht, da es noch 6 andere kriterien gibt..:/
vielen dank im vorraus
te
So...ich habe eine sehr umfangreiche Datenbankabfrage geplant, wo man nach allen möglichen kriterien(bereichen) sich daten anzeigen lassen kann!
da habe ich ein option select feld...bzw. 4
das erste für Tmin
zweite für Tmax
dritte für rr
vierte für snow
nun will ich ja nicht tausend zeilen schreiben und dachte mir das ich das mit "Where" und dann den "AND" verknüpfungen auslesen kann...
if($Tmin != ""){$Tminn = "Tmin < $Tmin";}else{$Tminn = "Tmin";}
if($Tmax != ""){$Tmaxx = "Tmax < $Tmax";}else{$Tmaxx = "Tmax";}
if($rr != ""){$rrr = "rr < $rr";}else{$rrr = "rr";}
if($snow != ""){$snoww = "snow < $snow";}else{$snoww = "snow";}
$abfrage = "SELECT * FROM msw_$jahr WHERE $Tminn AND $Tmaxx AND $rrr AND $snoww $sort";
geht soweit wunderbar..wenn ich in allen 4 option select feldern was ausgewählt habe...wenn ich aber dort nichts ausgewählt habe gibt es nur schei*e...keine fehlermeldung..aber falsche datenbereiche...
beispiel:
ich habe für tmin = -5, für tmax = 5, und die restlichen leer...
dann lautet der code volsltändig ja...
SELECT * FROM msw_2002WHERE Tmin < -5.0 AND Tmax < 5.0 AND rr AND snow ORDER BY bla bla bla...
blöder weise zeigt er mir jetzt nur werte an die erstens Tmin unter -5 haben, Tmax unter 5 haben UND wo in rr etwas vorhanden ist und in snow etwas vorhanden ist...
problem: es gibt auch tage mit tmin unter -5, tmax unter 5 und ohne rr und ohne snow...:/
mir fällt aber nicht ein wie ich das anders schreiben könnte.
ich muß ja die AND's machen...kann die ja nicht bei $Tminn etc einsetzen da ich ja nicht weiß welches das erste sein wird, dort müßte dann ja "Where" stehen...
ich hatte auch schon versucht statt wenn nix ausgewählt wird bei z.b. snow, statt "snow"..nichts ausgeben zu lassen...aber dann meckert er wegen den vielen "And's"...
vollständiger code:
<?
if($Tmin != ""){$Tminn = "Tmin < $Tmin";}else{$Tminn = "Tmin";}
if($Tmax != ""){$Tmaxx = "Tmax < $Tmax";}else{$Tmaxx = "Tmax";}
if($rr != ""){$rrr = "rr < $rr";}else{$rrr = "rr";}
if($snow != ""){$snoww = "snow < $snow";}else{$snoww = "snow";}
$abfrage = "SELECT * FROM msw_$jahr WHERE $Tminn AND $Tmaxx AND $rrr AND $snoww $sort";
$ergebnis = mysql_query($abfrage);
$row = mysql_num_rows($ergebnis);
while($row = mysql_fetch_object($ergebnis))
{
$mittel = ($row->Tmax + $row->Tmin) / 2;
echo "<tr align=\"center\"><td>";
echo "$row->tag.$row->monat.$jahr";
echo "</td><td>";
echo(sprintf ("%01.1f°C", $row->Tmin));
echo"</td><td>";
echo(sprintf ("%01.1f°C", $row->Tmax));
echo"</td><td>";echo(sprintf ("%01.1f°C", $mittel));echo"</td><td>";
if($row->rr != "0.0"){echo(sprintf ("%01.1f l/m²", $row->rr));}
echo"</td><td>";
if($row->snow != "0.0"){echo(sprintf ("%01.1f cm", $row->snow));}
echo"</td></tr>";
}
echo "</table>";
?>
ich hoffe ihr könnt mir helfen. oder geht das gar nicht?
muß ich mir die arbeit machen und die mehreren möglichkeiten ausschreiben. ich hoffe nicht, da es noch 6 andere kriterien gibt..:/
vielen dank im vorraus
te
Kommentar