Page 1 sur 1

Adapter certain code à une autre table

Posté : 28 oct. 2015, 14:01
par Javier
Je suis intéressé adapter le code créé pour une table nommée "dayfile" pour la table MiniMaxidata (création de Jean Turlier).

Je ai la table "dayfile" suivante:

http://kocher.es/images/dayfile1.PNG

Avec la suivante code:

Code : Tout sélectionner

$query = "SELECT AVG(MaxTemp), AVG(MinTemp) FROM dayfile WHERE DATE_FORMAT(LogDate, '%d')= ".$day." and DATE_FORMAT(LogDate, '%m')= ".$month;

$result = mysql_query($query);
if (!$result) {
	die("ERROR - Bad Select Statement");
}

while($row = mysql_fetch_row($result)) {
	$maxRec = (float)$row[0];
	$minRec = (float)$row[1];
}

$query = "SELECT DATE_FORMAT(LogDate,'%Y'),maxtemp, mintemp, avgtemp FROM dayfile WHERE DATE_FORMAT(LogDate, '%d')= ".$day." and DATE_FORMAT(LogDate, '%m')= ".$month." ORDER BY DATE_FORMAT(LogDate,'%y')";
//print_r ($query);
$result = mysql_query($query);
if (!$result) { printf ("ERROR - Bad Select Statement"); exit; }

// import the rows and put the data into arrays
while($row = mysql_fetch_row($result)) {
	$title[] = $row[0];
	$valMax[] = (float)$row[1];
	$valMin[] = (float)$row[2];
	$valAvg[] = (float)$row[3];
	//$valAvg[] = array((float)$row[3]-0.1,(float)$row[3]+0.1);
	$valTemp[] = array((float)$row[2], (float)$row[1]);
}

// put into a single array
$ret = array($title, $valMax,$valMin,$valAvg,$valTemp,$maxRec,$minRec);

Je obtiens ce qui suit:
[["2012","2013","2014","2015"],[17.7,21.6,21.8,15.8],[10.7,15.9,14.2,4.7],[13.1,18.7,18.6,10],[[10.7,17.7],[15.9,21.6],[14.2,21.8],[4.7,15.8]],19.225,11.375]

Je suis intéressé adapter le code pour la table MiniMaxidata, mais je ne sais pas comment traiter le champ "recdateTZ» du MiniMaxidata pour atteindre les mêmes résultats

Re: Adapter certain code à une autre table

Posté : 28 oct. 2015, 15:09
par jturlier
Salut Javier,
les champs recdate ( tz ou utc) sont des champs alphanumériques, il faut donc extraire la partie que tu veux comparer puisque tu ne peux pas la formater comme une date.
$query = "SELECT AVG(MaxTemp), AVG(MinTemp) FROM dayfile WHERE substring(recdatetz,7,2)= ".$day." and substring(recdatetz,5,2)== ".$month;
Tu appliqueras la même formule à tes autres requêtes.
Si ce n'est pas suffisamment clair n'hésites pas à le dire.
Il existe une autre solution à partir du timestamp, mais elle est plus compliquée puisqu'il faut convertir tstamp en datetime avec DATE_FORMAT(FROM_UNIXTIME(tstamp) ,%d) par exemple pour les jours.
N'oublie pas de modifier le nom des champs maxtemp et mintemp par le nom correct dans la table des minimaxi

Re: Adapter certain code à une autre table

Posté : 28 oct. 2015, 18:30
par Javier
Bonjour Jean
Avec ton explication, tout est beaucoup plus clair.
Je apprécie vraiment les deux variantes que tu m' avez fournis. :D
Je porter doit travailler

Saludos desde San Sebastian

Javier