requête MySql (Résolu)

Un problème, une question sur la partie PHP des graphiques

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 :

requête MySql (Résolu)

Message par Javier » 05 avr. 2019, 21:56

Salut à tous

Je ne sais pas si c'est le bon forum à poser, mais j'ai une question à propos d'une requête mysql

Je suis intéressé à obtenir des données simples à partir de la table "minimaxi":

1) Température maximale d'hier
2) la température minimale d'aujourd'hui
3) la date d'hier

La raison de cette requête est de pouvoir mettre à jour un script de comparaison entre les prévisions et les données réelles d'hier.

La requête est effectuée à 08h00 du matin pour obtenir les valeurs maximales de température d'hier et les températures minimales d'aujourd'hui jusqu'à 08h00 (qui correspond au moment où la requête est effectuée).

Le résultat du 06/04/2019, serait du type:

14.4,7.6,05/05/04/2019

Ces données compléteront la ligne du 05/04/2019

Pour mieux le comprendre, vous pouvez regarder ici:

http://kocher.es/test-fc.php
Modifié en dernier par Javier le 10 avr. 2019, 08:43, modifié 1 fois.
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: requête MySql

Message par jturlier » 06 avr. 2019, 10:22

Bonjour Javier,
il vaudrait mieux que tu récupères ces infos dans noaa_jour.
Qu’entends-tu par date d’hier ?
De quel type de script veux-tu te servir (php je suppose ?)
Tu vas devoir faire 2 interrogations une pour hier et une pour aujourd’hui.

Code : Tout sélectionner

<?php

$server="localhost";
$user="utilisateur";
$pwd="mot_de_passe";
$db='meteo';
 $conn=mysqli_connect($server,$user,$pwd,$db);
 If(! $conn) {
  exit("Echec de la connexion<br>". mysqli_connect_error());
  }

    $hier=strtotime(date("m")."/".date("d")-1."/". date("Y")); // tu as le timestamp d’hier. La date doit être entrée en format US
    $jour = strtotime(date("m")."/".date("d")."/". date("Y")); //tu as le timestamp aujourd’hui 0:00

// temp maxi pour hier
// si tu souhaites la température maxi à partir de 8:00 il suffit de modifier la requête ainsi :
//  $sql="select tstamp, Max_T, H_Max_T from noaa_jour where where tstamp >= ".$hier+28800." and tstamp< ".$jour." order by 1 desc limit 1;";


 $sql="select tstamp, Max_T, H_Max_T from noaa_jour where where tstamp >= ".$hier." and tstamp< ".$jour." order by 1 desc limit 1;";
 $query = mysqli_query($conn,$sql);  
 $list=mysqli_fetch_array($query);  
 $temperature_maxi_hier==$list['Max_T']*1;
 $heure_temperature_maxi_hier==$list['H_Max_T']*1;
 mysqli_free_result($query);



//temp mini pour aujourd’hui
// si tu souhaites la température mini avant  8:00 il suffit de modifier la requête ainsi :
//  $sql="select tstamp, Min_T, H_Min_T from noaa_jour where where tstamp >= ".$jour." and tstamp< ".$jour.-28800" order by 1 desc limit 1;";

 $sql="select tstamp, Min_T, H_Min_T from noaa_jour where where tstamp >= ".$jour." order by 1 desc limit 1;";
 $query = mysqli_query($conn,$sql);  
 $list=mysqli_fetch_array($query);  
 $temperature_mini_aujourdhui==$list['Min_T']*1;
 $heure_temperature_mini_aujourdhui=$list['H_Min_T']*1;
 mysqli_free_result($query);
?>
Tout ceci aux erreurs de typo près.
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: requête MySql

Message par Javier » 06 avr. 2019, 22:49

Bonsoir jean

Merci beaucoup pour cet exemple de code.
Je vais le mettre en œuvre immédiatement. Votre idée est déjà comprise.

En Espagne il y a un dicton:

"Una vez visto, todo el mundo es listo (inteligente)"

"Une fois vus, tout le monde est malin"



Merci beaucoup :D


Javier
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: requête MySql

Message par jturlier » 07 avr. 2019, 11:32

C'est ok, tiens moi informé STP
Cordialement
Jean
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: requête MySql

Message par Javier » 09 avr. 2019, 13:49

Saludos Jean

J'ai exécuté vos instructions, mais cela n'a pas fonctionné.
Cela me donne du mal à abuser de votre intérêt et je me suis renseigné sur ce dossier:

http://kocher.es/temp-maxmin-fc-compare-sql.php

J'ai découvert que le script se connecte correctement à la base de données, mais la variable "$ hier" génère une erreur:

    

Code : Tout sélectionner

$ hier = strtotime (date ("m"). "/".date ("d")-1."/".date("Y")); // vous en tant que timestamp d'hier. La date doit être entrée au format US
Contient:

Code : Tout sélectionner

."/".Date("d")-1."/".
Si je modifie par:

Code : Tout sélectionner

 "/".Date(("d")-1)."/".
La connexion fonctionne, mais les données ne sont pas obtenues:

http://kocher.es/temp-maxmin-fc-compare-sql-modif.php

Je ne sais pas où est le problème, peut-être les ".....

Je suis désolé de vous déranger avec mes doutes de recrue et je vous en suis très reconnaissant.

Javier
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: requête MySql

Message par jturlier » 09 avr. 2019, 18:18

essaie ceci
$jour = strtotime(date("m")."/".date("d")."/". date("Y")); //tu as le timestamp aujourd’hui 0:00
$hier=$jour-86400; //timestamp hier

sans le timestamp d'hier il n'y a pas grand chose qui peut fonctionner ... à mon avis !

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

Re: requête MySql

Message par jturlier » 09 avr. 2019, 18:27

/temp mini pour aujourd’hui
// si tu souhaites la température mini avant 8:00 il suffit de modifier la requête ainsi :
// $sql="select tstamp, Min_T, H_Min_T from noaa_jour where where tstamp >= ".$jour." and tstamp< ".$jour +28800" order by 1 desc limit 1;";

C'est entre 0:00 et 8:00 (le timestamp $jour est celui de 0 heure)
Excuse pou l'erreur !

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

Re: requête MySql

Message par Javier » 10 avr. 2019, 00:54

Merci à vos instructions, le script fonctionne déjà exactement comme j'en avais besoin:

http://kocher.es/temp-maxmin-fc-compare-sql-modif.php

Voici comment était le code définitif:

Code : Tout sélectionner

<?php

$server="xxxxx";
$user="xxxxx";
$pwd="xxxxx";
$db='xxxxx';
 $conn=mysqli_connect($server,$user,$pwd,$db);
 If(! $conn) {
  exit("Echec de la connexion<br>". mysqli_connect_error());
  }

$jour = strtotime(date("m")."/".date("d")."/". date("Y")); //tu as le timestamp aujourd’hui 0:00
$hier=$jour-86400; //timestamp hier

// echo "tstamp hier: ".$hier."<br>";
// echo "tstamp jour: ".$jour."<br>";

// temp maxi pour hier
// si tu souhaites la température maxi à partir de 8:00 il suffit de modifier la requête ainsi :
//  $sql="select tstamp, Max_T, H_Max_T from noaa_jour where where tstamp >= ".$hier+28800." and tstamp< ".$jour." order by 1 desc limit 1;";


 $sql="SELECT tstamp, Max_T, H_Max_T FROM noaa_jour where tstamp = ".$hier." order by 1 desc limit 1;";
 $query = mysqli_query($conn,$sql);  
 $list = mysqli_fetch_array($query);  
 $temperature_maxi_hier = $list['Max_T']*1;
 $heure_temperature_maxi_hier = $list['H_Max_T']*1;
 mysqli_free_result($query);

   echo $temperature_maxi_hier.","; 

//temp mini pour aujourd’hui
// si tu souhaites la température mini avant  8:00 il suffit de modifier la requête ainsi :
//  $sql="select tstamp, Min_T, H_Min_T from noaa_jour where where tstamp >= ".$jour." and tstamp< ".$jour.-28800" order by 1 desc limit 1;";

 $sql="select tstamp, Min_T, H_Min_T from noaa_jour where tstamp >= ".$jour." order by 1 desc limit 1;";
 $query = mysqli_query($conn,$sql);  
 $list=mysqli_fetch_array($query);  
 $temperature_mini_aujourdhui=$list['Min_T']*1;
 $heure_temperature_mini_aujourdhui=$list['H_Min_T']*1;
 mysqli_free_result($query);
 
 echo $temperature_mini_aujourdhui.",";
 
date_default_timezone_set('Europe/Madrid');
$date = date('m/d/Y G:i a', time());
echo $date; 
 
mysqli_close($conn);
  
?>
Merci beaucoup jean

Vous êtes un vrai maître

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