SQL Mehrere SQL Abfragen definieren

Weidmann

Newbie
Registriert
Sep. 2014
Beiträge
3
Hallo,

Es geht um folgende SQL Abfrage:

Code:
$query = "
SELECT YEAR(datetime) AS dy, MONTH(datetime) -1 AS dm, DAY(datetime) AS dd, 
HOUR(datetime) AS th, MINUTE(datetime) AS tm, temperatur, feuchte, druck, wind, windboen, taupunkt, regen
FROM wettertabelle
WHERE datetime >= (SELECT datetime - INTERVAL 3 DAY AS endDate  FROM wettertabelle ORDER BY datetime DESC LIMIT 1) 
ORDER BY datetime

Ausgabe z.B.:

Code:
{date: new Date(2015,6,28,23,59),t:15.1,f:74.0,d:1012.8,w:0.3,wb:4.3,tp:10.5,r:0.2,rs:0.2}

Die oben genannte Abfrage bringt ja nur die Wetterdaten der letzten 3 Tage. Ich will nun aber mehrere Abfragen auf der Seite definieren per Radio o.ä.

Code:
<INPUT TYPE="RADIO" NAME="Letzten3Tage" VALUE="S">Letzten 3 Tage<BR>

Wo muss ich nun den Wert definieren? Bei der SQL Abfrage, oder im PHP Script?

Hier der komplette PHP Abfrage Script:

PHP:
<?php
 
//GET Parameter "datum" in variable $datum speichern
$datum = $_GET["datum"];
 
//Inhalt der Variable $datum in ein Timestamp überführen
$datum = strtotime($datum);
 
//Timestamp in beliebiges Format überführen
$datum = date("Y-m-d",$datum);
 
//db verbindung

mysql_connect("SERVER", "BENUTZER","PASSWORT");
mysql_select_db("DATENBANK");
 
 
//db abfrage
 
$query = "
SELECT YEAR(datetime) AS dy, MONTH(datetime) -1 AS dm, DAY(datetime) AS dd, 
HOUR(datetime) AS th, MINUTE(datetime) AS tm, temperatur, feuchte, druck, wind, windboen, taupunkt, regen
FROM wettertabelle
WHERE datetime >= (SELECT datetime - INTERVAL 3 DAY AS endDate  FROM wettertabelle ORDER BY datetime DESC LIMIT 1) 
ORDER BY datetime 


";

//variables for temp High and Low
$temperaturHigh = -9999;
$temperaturLow = 9999;
$taupunktHigh = -9999;
$taupunktLow = 9999;
$feuchteHigh = -9999;
$feuchteLow = 9999;
$druckHigh = -9999;
$druckLow = 9999;
$windHigh = -9999;
$windboenHigh = -9999;
 
// NEU: Variable definieren
$zeilenzaehler = 1;
 
 
//ausgabe der zeilen
 
$result = mysql_query($query)
OR die("Error: $query <br>".mysql_error());
 
while($row = mysql_fetch_array($result))
{
 
    //max searcher
    if ($row['temperatur'] > $temperaturHigh)
    {
        $temperaturHigh = $row['temperatur'];
        $temperaturHighDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	elseif ($row['taupunkt'] > $taupunktHigh)
    {
        $taupunktHigh = $row['taupunkt'];
        $taupunktHighDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	elseif ($row['feuchte'] > $feuchteHigh)
    {
        $feuchteHigh = $row['feuchte'];
        $feuchteHighDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	elseif ($row['druck'] > $druckHigh)
    {
        $druckHigh = $row['druck'];
        $druckHighDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	elseif ($row['wind'] > $windHigh)
    {
        $windHigh = $row['wind'];
        $windHighDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	elseif ($row['windboen'] > $windboenHigh)
    {
        $windboenHigh = $row['windboen'];
        $windboenHighDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	//min searcher
    if ($row['temperatur'] < $temperaturLow)
    {
        $temperaturLow = $row['temperatur'];
        $temperaturLowDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	elseif ($row['taupunkt'] < $taupunktLow)
    {
        $taupunktLow = $row['taupunkt'];
        $taupunktLowDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	elseif ($row['feuchte'] < $feuchteLow)
    {
        $feuchteLow = $row['feuchte'];
        $feuchteLowDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	elseif ($row['druck'] < $druckLow)
    {
        $druckLow = $row['druck'];
        $druckLowDate = "new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm'].")";
    }
	
	//eine neue Variable "$regensumme" erstellen, und die spalte "rain" dazu addieren.
	$regensumme = $regensumme + $row['regen']; 

	//in einer zusätzlichen Variable kann das Resulat für die Ausgabe auch gerundet werden. (Nicht direkt die $regensumme runden)
	$regensummeGerundet = round($regensumme, 3);
     
 
// echo
 
if ($zeilenzaehler != 1)
{
echo ",";
}
 
echo "{date: new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm']."),t:".$row['temperatur'].",f:".$row['feuchte'].",d:".$row['druck'].",w:".$row['wind'].",wb:".$row['windboen'].",tp:".$row['taupunkt'].",r:".$row['regen'].",rs:".$regensummeGerundet."}";
 
//Variable jetzt auf 2
$zeilenzaehler = 2;
 
};?>

Ich danke euch für eure Antworten
 
das ist so falsch :D
schnelle aber halt ekelige lösung

HTML:
<label>
    <input type="radio" name="days" value="3">Letze 3 Tage
</label>

PHP:
$days = 0;
if (isset($_GET['days']) {
    $days = (int)$_GET['days'];
}

$query = "
SELECT YEAR(datetime) AS dy, MONTH(datetime) -1 AS dm, DAY(datetime) AS dd, 
HOUR(datetime) AS th, MINUTE(datetime) AS tm, temperatur, feuchte, druck, wind, windboen, taupunkt, regen
FROM wettertabelle
WHERE datetime >= (SELECT datetime - INTERVAL " .  $days . " DAY AS endDate  FROM wettertabelle ORDER BY datetime DESC LIMIT 1) 
ORDER BY datetime 
 
 
";

überigens sollte man die mysql funktionen nicht mehr verwenden.. sind ja seit php 5.5 nicht mehr drin
 
kling1 schrieb:
das ist so falsch :D
schnelle aber halt ekelige lösung

HTML:
<label>
    <input type="radio" name="days" value="3">Letze 3 Tage
</label>

PHP:
$days = 0;
if (isset($_GET['days']) {
    $days = (int)$_GET['days'];
}

$query = "
SELECT YEAR(datetime) AS dy, MONTH(datetime) -1 AS dm, DAY(datetime) AS dd, 
HOUR(datetime) AS th, MINUTE(datetime) AS tm, temperatur, feuchte, druck, wind, windboen, taupunkt, regen
FROM wettertabelle
WHERE datetime >= (SELECT datetime - INTERVAL " .  $days . " DAY AS endDate  FROM wettertabelle ORDER BY datetime DESC LIMIT 1) 
ORDER BY datetime 
 
 
";

überigens sollte man die mysql funktionen nicht mehr verwenden.. sind ja seit php 5.5 nicht mehr drin

Vielen Dank für deine Antwort, allerdings scheint der code nicht zu funktionieren, da bei Abruf mir nur eine Leere seite angezeigt wird.
 
Wenn ich den php script mit der von dir modifizierten sql abfrage in amcharts integriere bekomm ich eine leere php seite als Antwort, sprich das ist das Problem ^^
 
Dann solltest du erstmal die Fehlermeldungen aktivieren und uns den Fehler mitteilen :)

Am einfachsten ganz oben in der betreffenden php datei:

Code:
error_reporting(E_ALL ^ E_NOTICE);
ini_set("display_errors", 1);

Leere Seite heißt vermutlich entweder dass ein Fehler auftritt aber keine Fehlermeldung aktiviert ist oder dass dein Code in eine Situation läuft in der einfach keine Ausgabe stattfindet.
 
Zuletzt bearbeitet:
Zurück
Oben