IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Parcours des résultats


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 91
    Par défaut Parcours des résultats
    Bonjour,

    J'avance pas mal sur mon projet, mais j'ai quelques soucis. Je récupère par un formulaire quatre valeurs: date_ (date debut), date_f, capteur_d, capteur_f. Ensuite j'interroge ma base de données pour obtenir les valeurs correspondants à cette requête.

    Voici les principales lignes de mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    <?php
     
    if ($_POST['display']=='highvoltage'){
     
    $voltage=array();
    $datetime=array();
    $matrice = array();
     
    for($capteur=$capteur_d;$capteur<=$capteur_f;$capteur++){
     
    $requete = "SELECT datetime,voltage
                FROM testtable_data
               WHERE '$date_d'<=datetime AND datetime<='$date_f'
    	AND '$capteur'=id_captor
    	";
     
    $pg_result = mysql_query($requete);
     
    while ($row = mysql_fetch_array($pg_result, MYSQL_ASSOC)) {
     
    	$datetime[$capteur]=($row["datetime"]);
    	$voltage[$capteur]=($row["voltage"]);
    	$matrice[$capteur] = array($datetime[$capteur],$voltage[$capteur]); 
     
     
    	echo '<pre>';  
    	print_r($matrice[$capteur]);
    	echo '</pre>';
     
    	}
    	}	
     
    	echo ok;
     
     
    for($capteur=$capteur_d;$capteur<=$capteur_f;$capteur++){
     
    	echo '<pre>';  
    	print_r($matrice[$capteur]);
    	echo '</pre>';
     
    }
    Avec ceci, je n'obtiens que la dernière valeur pour chacun des capteurs. Je dois écraser à chaque fois que je fais ma boucle la valeur précédente, ce qui fait qu'à la fin je n'ai plus que ma dernière valeur. Je ne vois pas comment corriger ce problème. Si quelqu'un peut me donner des idées parceque là je bloque, merci beaucoup

  2. #2
    Membre confirmé
    Inscrit en
    Août 2006
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 163
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    <?php
     
    if ($_POST['display']=='highvoltage'){
     
    $voltage=array();
    $datetime=array();
    $matrice = array();
     
    for($capteur=$capteur_d;$capteur<=$capteur_f;$capteur++){
     
    $requete = "SELECT datetime,voltage
                FROM testtable_data
               WHERE '".$date_d."'<=datetime AND datetime<='".$date_f."'
    	AND '".$capteur."'=id_captor
    	";
     
    $pg_result = mysql_query($requete);
     
    while ($row = mysql_fetch_array($pg_result, MYSQL_ASSOC)) {
     
    	$datetime[$capteur]=($row["datetime"]);
    	$voltage[$capteur]=($row["voltage"]);
    	$matrice[$capteur] = array($datetime[$capteur],$voltage[$capteur]); 
     
     
    	echo '<pre>';  
    	print_r($matrice[$capteur]);
    	echo '</pre>';
     
    	}
    	}	
     
    	echo ok;
     
     
    for($capteur=$capteur_d;$capteur<=$capteur_f;$capteur++){
     
    	echo '<pre>';  
    	print_r($matrice[$capteur]);
    	echo '</pre>';
     
    }

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    91
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 91
    Par défaut
    Merci pour ta réponse. J'ai effectué le changement que tu m'as proposé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE '".$date_d."'<=datetime AND datetime<='".$date_f."'
              AND '".$capteur."'=id_captor
    Ta correction est plus propre, mais elle ne change rien au code. Aurais tu d'autres idées?Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 59
    Par défaut
    tu devrais mettre des noms plus claire à tes variables par exemple la variable capteur devrait s'appeler numero_capteur ou quelque chose du genre ça permettrait à tes lecteurs de savoir ce qu'ils lisent précisement.

    après ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row = mysql_fetch_array($pg_result, MYSQL_ASSOC)
    Aujourd'hui on le fait plus, on fait plutot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $row = mysql_fetch_assoc($pg_result)
    qui fait exactement pareil mais qui est plus propre.

    Même chose dans ta requête, écris la plus proprement en mettant à gauche les noms de colonne et à droit du égal les valeurs plutot qu'à gauche un coup sur 2, ça donne ça et même mettre un BETWEEN c'est encore mieux:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $requete = "SELECT datetime,voltage
                FROM testtable_data
               WHERE datetime BETWEEN '".$date_d."' AND '".$date_f."'
    	AND id_captor = '".$capteur."'";
    Et pour ta question il faudrait que tu expliques ce que tu veux faire des données car là effectivement tu écrases tout ton résultat mysql dans les var $datetime $voltage et $matrice car ta variable $capteur n'es pas incrémenté dans le while...

    je ne suis donc pas sur d'avoir bien saisis t'a problématique mais je pense que ceci devrait fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while( $row = mysql_fetch_assoc($pg_result) )
    {
    $datetime[$capteur][] =($row["datetime"]);
    $voltage[$capteur][] =($row["voltage"]);
    $matrice[$capteur][] = array($datetime[$capteur],$voltage[$capteur]);

Discussions similaires

  1. [MySQL] Parcours des résultats d'une requête
    Par vjbda dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/04/2008, 18h01
  2. Parcours des résultats d'une requête
    Par RodEpsi dans le forum Bases de données
    Réponses: 5
    Dernier message: 18/02/2007, 17h58
  3. Grouper et concatener des résultats
    Par Koo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 07/07/2004, 10h09
  4. Select, union, éliminer des résultats.
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/06/2004, 09h42
  5. Réponses: 3
    Dernier message: 18/05/2003, 00h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo