Adapter certain code à une autre table

Un problème avec votre base de données MySQL, PostgreSQL ou autres.

Modérateurs : jturlier, Météo Villarzel

Répondre
Javier
Messages : 263
Enregistré le : 15 févr. 2014, 09:23
Localisation : San Sebastián, España
Contact :

Adapter certain code à une autre table

Message par Javier » 28 oct. 2015, 14:01

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
Davis Vantage Pro2 +, Windows 10, Windows 7 (64), Graphweather 3.0.15, Weatherlink 6.0.3, template Pierre-André, template Jachym
Image

Avatar du membre
jturlier
Administrateur du site
Messages : 393
Enregistré le : 10 déc. 2014, 10:20
Localisation : Sérignan 34410
Contact :

Re: Adapter certain code à une autre table

Message par jturlier » 28 oct. 2015, 15:09

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
Jean

Station :
VP2pro + anémomètre ultrasons et console Vue
Cumulus 1.9.4 + Cumulus2SQL + MySQL

Audio :
FR
PC :
W10 64bits migré
http://meteoserignan.ddns.net
Image

Javier
Messages : 263
Enregistré le : 15 févr. 2014, 09:23
Localisation : San Sebastián, España
Contact :

Re: Adapter certain code à une autre table

Message par Javier » 28 oct. 2015, 18:30

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
Davis Vantage Pro2 +, Windows 10, Windows 7 (64), Graphweather 3.0.15, Weatherlink 6.0.3, template Pierre-André, template Jachym
Image

Répondre