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 : Sélectionner tout - Visualiser dans une fenêtre à part
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