Générer fichier xml avec php
Bonjour à tous,
Afin d'établir un graphique météo (avec amCharts), je dois générer via php un fichier xml.
Ceci est fait avec ce script php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
<?php
header('Content-Type: text/xml');
//Configuration database
include("../aaaa.php");
// connect to database
mysql_connect($host, $user, $passwd)
or die ('Unable to connect to server.');
mysql_select_db($dbname)
or die ('Unable to select database.');
// select last entries
$query = "SELECT timestamp_mesure, valeur_mesure FROM releves WHERE timestamp_mesure BETWEEN DATE_ADD(NOW(),INTERVAL -24 HOUR) AND NOW() ORDER BY timestamp_mesure DESC";
$res = mysql_query($query);
// put all the data inside an array
$arr = array();
while($obj = mysql_fetch_object($res)){
$arr[] = $obj;
}
// echo xml
echo "<"."?xml version=\"1.0\" encoding=\"UTF-8\"?".">\n";
echo "<chart>\n";
echo "<series>\n";
// echo series
for ($i = sizeof($arr) - 1; $i > 0; $i--) {
$date = $arr[$i]->timestamp_mesure;
echo "<value xid=\"$i\">$date</value>\n";
}
echo "</series>\n";
// echo graphs
echo "<graphs>\n";
// first graph
echo "<graph title=\"Aujourd'hui\" gid=\"0\">\n";
for ($i = sizeof($arr) - 1; $i > 0; $i--) {
$valeurs = $arr[$i]->valeur_mesure;
echo "<value xid=\"$i\">$valeurs</value>\n";
}
echo "</graph>\n";
echo "</graphs>\n";
echo "</chart>";
?> |
Mon problème est que une ligne est inserée dans la BDD, chaque fois qu'une donnée est reçu du capteur de température et que celle-ci a évolué par rapport à la précédente. S'il n'y a pas d'évolution, aucune data n'est insérée.
Je voudrais générer le fichier xml de la façon suivante.
- 1 données toutes les 15 minutes
- Si pas de données depuis 2h par exemple, sélectionner la valeur précédente.
Dans ma base, les valeurs timestamp_mesure sont au format 20110921123000.
Je ne vois pas trop comment faire, il faut faire une boucle, mais comment récupèrer la dernière valeur, et si celle-ci n'existe pas.
Merci pour votre aide. Mikael