Page 1 sur 1
requête MySql (Résolu)
Posté : 05 avr. 2019, 21:56
par Javier
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
Re: requête MySql
Posté : 06 avr. 2019, 10:22
par jturlier
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.
Re: requête MySql
Posté : 06 avr. 2019, 22:49
par Javier
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
Javier
Re: requête MySql
Posté : 07 avr. 2019, 11:32
par jturlier
C'est ok, tiens moi informé STP
Cordialement
Jean
Re: requête MySql
Posté : 09 avr. 2019, 13:49
par Javier
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:
Si je modifie par:
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
Re: requête MySql
Posté : 09 avr. 2019, 18:18
par jturlier
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 !
Re: requête MySql
Posté : 09 avr. 2019, 18:27
par jturlier
/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 !
Re: requête MySql
Posté : 10 avr. 2019, 00:54
par Javier
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