
|
|
Auteur
|
Message
|
1
|
|
|
|
Hello encore moi
Bon cette fois j'ai un problème assez bizarre :
J'ai fais un script qui récupère mes observations de ma station, par exemple la température, l'heure du relevé & la date.
Je mets tout ça dans une BDD pour moi trier les minima-maxima & faire la moyenne sur une journée, mois ou année.
Je me retrouve avec un tri fait n'importe comment, avec parfois le minima supérieur au maxima voilà mon script :
Exemple d'observation récupérée : Le 1er Novembre 2007 à 15h30, il faisait 15,2°C
Affichage dans la base de donnée "temperature":
Champs : id , jour , mois , annee , heure , valeur
1 01 11 2007 15:30 15,2
Script utilisé pour récupérer la température minimale :
<?
$jour = date('d');
$mois = date('m');
$annee = date('Y');
mysql_connect("serveur", "pseudo", "mdp") or die ("pb de connexion au serveur !");
mysql_select_db("base de donnee") or die ("pb de connexion à la BDD !");
$rep = mysql_query("SELECT * FROM temperature WHERE jour='$jour' AND mois='$mois' AND annee='$annee' ORDER BY valeur LIMIT 0,1");
while ($temp = mysql_fetch_array($rep) )
{
$temperature_mini = $temp['valeur'];
echo $temperature_mini;
}
mysql_close();
?>
Script utilisé pour récupérer la température maximale :
<?
$jour = date('d');
$mois = date('m');
$annee = date('Y');
mysql_connect("serveur", "pseudo", "mdp") or die ("pb de connexion au serveur !");
mysql_select_db("base de donnee") or die ("pb de connexion à la BDD !");
$rep = mysql_query("SELECT * FROM temperature WHERE jour='$jour' AND mois='$mois' AND annee='$annee' ORDER BY valeur DESC LIMIT 0,1");
while ($temp = mysql_fetch_array($rep) )
{
$temperature_maxi = $temp['valeur'];
echo $temperature_maxi;
}
mysql_close();
?>
Script pour la température moyenne :
<?
$jour = date('d');
$mois = date('m');
$annee = date('Y');
mysql_connect("serveur", "pseudo", "mdp") or die ("pb de connexion au serveur !");
mysql_select_db("base de donnee") or die ("pb de connexion à la BDD !");
$rep = mysql_query("SELECT * FROM temperature WHERE jour='$jour' AND mois='$mois' AND annee='$annee' ORDER BY valeur DESC LIMIT 0,1");
while ($temp = mysql_fetch_array($rep) )
{
$temperature_maxi = $temp['valeur'];
}
$rep2 = mysql_query("SELECT * FROM temperature WHERE jour='$jour' AND mois='$mois' AND annee='$annee' ORDER BY valeur LIMIT 0,1");
while ($temp2 = mysql_fetch_array($rep2) )
{
$temperature_mini = $temp2['valeur'];
}
mysql_close();
$temp_moyenne = ($temperature_mini + $temperature_maxi) / 2;
echo $temperature_moyenne;
?>
Pour en voir les effets : Cliquer Ici (il n'y a que les valeurs journalière en focntion, mensuelles & annuelles sont en exemple).
Toute la syntaxe fonctionne, à part ces valeurs incongrues. J'ai mis ce qu'il est marqué dans ma BDD, ce que le script doit trier.
Merci à celui qui pourrait me die où est mon problème
|
|
|
|
|
les valeurs sont bien enregistrées dans un champ pour des valeurs numériques?
edit: sinon le problème vient surement du fait que le 01 novembre il ne fait pas 15°C dans notre région
-->Message édité par Beno@ le 07/11/2007 17:39:37<--
|
|
|
|
|
|
|
Re
J'ai cherché sur le net & je n'ai pas trouvé quel type de champs mettre pour mes valeur numérique.
Quel type dois-je mettre ??? Ce sont des valeurs numériques décimales.
|
|
Geekitude !!! =D
|
|
|
|
|
Salut,
Il faut un champ FLOAT pour stocker tes températures.
Ensuite, pour les minima et maximas, ainsi que pour la moyenne, tu peux faire calculer ça à MySQL plutôt qu'à PHP.
Pour avoir le Maxima d'une journée par exemple, tu fais (grossièrement) :
$requete = mysql_query("SELECT MAX(t.valeur) AS maxima FROM temperature AS t WHERE t.jour='$jour' AND t.mois='$mois' AND t.annee='$annee'");
$temp = mysql_fetch_assoc($requete );
$temperature_maxi = $temp['maxima'];
Pour le minima, c'est MIN(valeur) et la moyenne AVG(valeur)
-> beaucoup plus propre
Enfin, j'espère répondre à ta question car je ne suis pas certain d'avoir bien compris quelles sont les données stockées dans ta base (par ex, le nombre de températures enregistrées par journée). En espérant avoir aidé !
-->Message édité par Aztazt le 16/11/2007 23:48:08<--
|
|
|
|
|
Merci de vos réponse, je vais jeter un oeil dés que j'ai le temps.
Oui comme tu dis, j'avais essayé FLOAT, mais il se passe que tout mes nombres s'arrondissent à l'entier le plus proche dans la BDD alors je sais pas à quoi c'est dû, je vais essayer ton script dés que j'ai le temps.
En tout cas je vous tiens au courant et merci pour le lien et le bout de script qui va en effet me permettre de rendre propre mon script.
Bonne nuit
|
|
1
|
|

|






|