Tutorial - Wetterdaten Diagramme mit amcharts - Teil 3 - Datenquellen: MySQL Datenbank

Teil 3 - Datenquellen: MySQL Datenbank


Achtung: Neue und aktualisierte Versionen der Tutorials finden Sie hier:

http://www.pscl.ch


Für die Speicherung von Wetterdaten eigenen sich Datenbanken besonders. Sie erlauben z.B. das schnelle filtern und sortieren umfangreicher Datenbeständen.

(Wie die Wetterdaten in eine Datenbank kommen wird später beschrieben.)

Die Datenbank

Hier die Struktur und einige Zeilen der Beispiel DB:









Die Datenabfrage

Nun  ein einfaches php script welches die gewünschten Daten aus der DB zieht.

Wir schreiben den php Code direkt in den  Datenbereich des Diagrammscripts.

var chartData = [   HIER DAS PHP SCRIPT   ];



1. Datenbankverbindung

Zuerst mit der Datenbank Verbindung aufnehmen:

mysql_connect("SQL Host", "Username","Password");
mysql_select_db("Database Name");
(mit Ihren Zugangsdaten ersetzen)

2. Die SQL Abfrage

Jetzt die MySQL Abfrage definieren:
$query = "

Zuerst wird das Feld Datetime zerlegt (dy, dm, dd etc) dann folgen die Wetterwerte "temp", "hum" und "pressure". Zudem wird die Monatszahl auf das Javascript Format geändert (-1).
SELECT YEAR(datetime) AS dy, MONTH(datetime) -1 AS dm, DAY(datetime) AS dd, HOUR(datetime) AS th, MINUTE(datetime) AS tm, temp, hum, pressure

Die Datenbanktabelle ausgewählt. (hier "wettertabelle")
FROM wettertabelle

Der Filter (hier mal nur Daten vom 25 Nov. 2013)
WHERE DATE(datetime) = '2013-11-25'

Sortiert nach Datum:
ORDER BY datetime


Hier nochmals die gesamte Abfrage der $query zugewiesen:
$query = "
SELECT YEAR(datetime) AS dy, MONTH(datetime) -1 AS dm, DAY(datetime) AS dd, HOUR(datetime) AS th, MINUTE(datetime) AS tm, temp, hum, pressure

FROM wtr2

WHERE DATE(datetime) = '$inputDate'

ORDER BY datetime
";


3. Die Ausgabe

Nun müssen wir die selektierten Daten mit echo ausgeben:

Wir beginnen mit:
$result = mysql_query($query)
OR die("Error: $query <br>".mysql_error());

while($row = mysql_fetch_array($result))
{

...dann das Echo:
echo "{date: new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm']."),t:".$row['temp'].",h:".$row['hum'].",p:".$row['pressure']."},";

Zur Erinnerung: Der echo Befehl sollte folgende Zeile ausgeben:
{date: new Date(2013,10,25,0,0),t:3.7,h:90.0,p:1022.9},

Klammer schließen:
};


Zusammenfassung:

Hier nochmals das gesamte php script:

<?php

//db verbindung

mysql_connect("Hostname", "Username","Password");
mysql_select_db("Database Name");



//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, temp, hum, pressure

FROM wettertabelle

WHERE DATE(datetime) = '2013-11-25'

ORDER BY datetime
";


//ausgabe der zeilen

$result = mysql_query($query)
OR die("Error: $query <br>".mysql_error());

while($row = mysql_fetch_array($result))
{

echo "{date: new Date(".$row['dy'].",".$row['dm'].",".$row['dd'].",".$row['th'].",".$row['tm']."),t:".$row['temp'].",h:".$row['hum'].",p:".$row['pressure']."},";
   
};

?>


Bitte beachten:

Dieses Ausgabe enthält noch einen Fehler welcher bestimmte Browser (IE) evtl. abstürzen lassen kann. Schuld ist das letzte Komma im Datenbereich der echo Ausgabe. Es gibt diverse Methoden dieses Komma nicht auszugeben, würde jedoch die Überschaubarkeit dieses Beispiels sprengen. In Teil 3.1 wird eine mögliche Lösung aufgezeigt: Teil 3.1 - Datenbank Trennkomma

Keine Kommentare:

Kommentar veröffentlichen