01net    Web


Actuellement en ligne : 752 Utilisateurs dont 35 dans Programmation et développement >S'inscrire      >S'identifier      >Recherche      >Aide  
modéré par A.Ouloube, Beno@  
01net > Forum de 01net > Programmation et développement > PHP
> Problème de tri dans une BDD
Auteur
Message
 
<     1       >
meteo59223
  
   
      ?   @     Posté le 07/11/2007 17:07:42  
Voter pour ce message
Hello encore moi :jap:

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 :pt1cable: 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 :??:
Beno@
  
  :-)
      ?   @     Posté le 07/11/2007 17:38:40  
Voter pour ce message
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 :o
-->Message édité par Beno@ le 07/11/2007 17:39:37<--
meteo59223
  
   
      ?   @     Posté le 07/11/2007 21:16:03  
Voter pour ce message
Loool c'est un exemple, mais ce jour-là il devait faire moins :fume:

Ben apparement c'est peut-être à cause de ça, le champ "valeur" est au format Text ; mais à ce moment je mets quoi comme format ??? :heink:

Mais ce qui est bizarre, c'est que ça le fait de temps en temps aussi :??:

Au passae, je me suis trompé dans l'adresse précédemment, la voiçi corrigée : Cliquer ICI
-->Message édité par meteo59223 le 07/11/2007 21:18:44<--
meteo59223
  
   
      ?   @     Posté le 12/11/2007 13:09:44  
Voter pour ce message
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.
Daniel_P
  Geekitude !!! =D
   
      ?   @     Posté le 12/11/2007 13:33:45  
Voter pour ce message
Salut,

petit lien qui va sûrement t'aider :)

http://dev.mysql.com/doc/refman/5.0/fr/numeric-types.html
Aztazt
  
   
      ?   @     Posté le 16/11/2007 23:47:05  
Voter pour ce message
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<--
meteo59223
  
   
      ?   @     Posté le 17/11/2007 01:58:52  
Voter pour ce message
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       >

01net > Forum de 01net > Programmation et développement > PHP
> Problème de tri dans une BDD

Aller à :

Page générée en : 0.095s - X2board 2.2

Nous contacter | Charte de confiance | Voir notice légale

Tous droits réservés © 1999 - 2008 Groupe Tests - 01net.


Sites du réseau 01net Network : 01net - 01men - Rmc.fr - Bfmtv.fr - Radiobfm.com - TousLesPodcasts - Micro Achat

Calendrier
Réalisez de A à Z des calendriers originaux pour partager les grands moments !
Jeux
Nouveauté : Les chats et les chiens, c’est mignon, mais avez-vous déjà essayé d’élever un requin ?