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 :

Mise en forme requete [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Octobre 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Employé
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 51
    Par défaut Mise en forme requete
    Bonsoir à toutes et tous

    J'ai de nouveau un problème avec ma mise en page et surtout mon code php pour obtenir ce que je souhaite après une requete MySql.

    En pièce jointe, une copie écran de ce que j'arrive à obtenir, mais qui n'est pas bon.
    Pourquoi pas bon ? Simplement que la colone TJ ne contient que la valeur 7:50 alors qu'elle devrait avoir N valeurs reçues de la base. Il 'y a d'affiché que la première valeur correspondant au select.

    Par ailleurs, puisque c'est un tableau, toujours dans la colone TJ, n'avoir que la valeur dans la cellule correspondant à la somme des différences d'heures.

    Dans l'image jointe, vous constatez que dans la colone TJ parfois il y a 2 ou n fois la valeur souhaitée. Je ne la voudrais qu'une seule fois.

    Je m'adresse à vous car....je sèche, n'étant développeur.

    Voici mon code (inutile de dire qu'il est nul. Pour autant je suis avide d'informations )

    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
    44
    45
    46
    47
     
    <?php
     
        $sql = "SELECT * from heure";
        $sql2 = "SELECT date, SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(hfs, hps)))) AS 'TJ' FROM heure GROUP BY date ORDER BY date";  
     
    $result = requete($sql) or die(mysql_error());
    $result2 = requete2($sql2) or die(mysql_error());
     
     
     
                $prev_date = '';
     
             while ($totaljour = mysql_fetch_assoc($result2)) {
     
             	  while ($row = mysql_fetch_assoc($result)) {    
     
                  if ($row['date'] != $prev_date) {
                  	$madate = $row['date'];
                  	$datefr = $madate{8}.$madate{9}."-".$madate{5}.$madate{6}."-".$madate{0}.$madate{1}.$madate{2}.$madate{3}; 
     
                echo '<tr><td style="vertical-align: top; background-color: rgb(213, 229, 218); "><font color="blue">' . $datefr . '</font></td>';
     
     
               echo '<td style="vertical-align: top; background-color: rgb(213, 229, 218);"></td><td style="vertical-align: top; background-color: rgb(213, 229, 218);"></td>';
     
     
     
               echo '<td style="vertical-align: top; text-align: center; background-color: rgb(213, 229, 218);">';
     
     
           echo "<td style='vertical-align: top; background-color: rgb(213, 229, 218);'></td></tr>";
     
     
             $prev_date = $row['date'];
     
                   } //fin du if
     
                $totj = $totaljour['TJ'];
     
         echo '<td></td><td style="vertical-align: top;text-align: center;">' . $row['hps'] .'</td><td style="vertical-align: top;text-align: center;">' . $row['hfs'] . '</td><td>' . $totj . '</td><td></td></tr>';
     
       } //fin premier while  
     
     } //fin du second while   
     
      ?>
    Images attachées Images attachées  

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu ne peux pas "fetcher" deux fois une requête : une fois que tu as atteind le dernier résultat, c'est fini.

    Que contient la table heure ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Octobre 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Employé
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 51
    Par défaut
    voici, en image
    Images attachées Images attachées  

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Comme je t'ai dit, tes deux boucles ça ne peut pas marcher : tu as un seul total par jour, donc une boucle sur les totaux n'a pas de sens.

    Stocke les résultats de ta requête sur les totaux dans un tableau PHP avec le jour comme index.
    Dans ta boucle qui dessine le tableau HTML, basée sur la requête du détail, tu pourras ressortir facilement le total du jour de la ligne.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Octobre 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Employé
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 51
    Par défaut
    Merci pour l'info.
    Je posterai plus tard mon code lorsque je l'aurai finalisé. Donc discussion non close pour le moment

    Eric

  6. #6
    Membre averti
    Homme Profil pro
    Employé
    Inscrit en
    Octobre 2013
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Employé
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 51
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
    <?php
     
        $sql = "SELECT * from heure"; //selection des données de la base
     
     
    $result = requete($sql) or die(mysql_error());
     
     
              //sélection des différences d'heures et implémentation dans un tableau
              $tab=array(); 
              $res= mysql_query("SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(hfs, hps)))) AS 'TJ' FROM heure GROUP BY date");
              {while($ligne= mysql_fetch_array ($res))
              array_push($tab,$ligne['TJ']);
              } 
     
     
                $prev_date = '';
     
                 $i = 0;  //initialisation variable i pour lire ensuite les données du tableau "tab"
     
     
             	  while ($row = mysql_fetch_assoc($result)) {    
     
                  if ($row['date'] != $prev_date) {
                  	$madate = $row['date'];
                  	//affichage du format date mysql en date française jj-mm-aaaa
                  	$datefr = $madate{8}.$madate{9}."-".$madate{5}.$madate{6}."-".$madate{0}.$madate{1}.$madate{2}.$madate{3}; 
     
                echo '<tr><td style="vertical-align: top; background-color: rgb(213, 229, 218); "><font color="blue">' . $datefr . '</font></td>';
     
     
               echo '<td style="vertical-align: top; background-color: rgb(213, 229, 218);"></td><td style="vertical-align: top; background-color: rgb(213, 229, 218);"></td>';
     
     
               if ($i<sizeof($tab)) { //si la variable i est toujours inférieure au nombre total des données du tableau tab, on affiche la valeur correspondante du tableau
               echo '<td style="vertical-align: top; text-align: center; background-color: rgb(213, 229, 218);">' . $tab[$i] . '';
              }
     
           echo "<td style='vertical-align: top; background-color: rgb(213, 229, 218);'></td></tr>";
     
     
             $prev_date = $row['date'];
                    $i++; //incrémentation de la variable I
     
                   } //fin du if
     
         echo '<td></td><td style="vertical-align: top;text-align: center;">' . $row['hps'] .'</td><td style="vertical-align: top;text-align: center;">' . $row['hfs'] . '</td><td></td><td></td></tr>';
     
     } //fin du  while   
     
     
      ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] mise en forme d'une requete sql
    Par allhambra dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/12/2007, 11h04
  2. Mise en forme des résultats d'une requete
    Par johanlft dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/10/2007, 12h28
  3. Réponses: 41
    Dernier message: 02/05/2006, 14h17
  4. Export requete vers excel et mise en forme
    Par ston dans le forum Access
    Réponses: 2
    Dernier message: 27/10/2005, 16h55
  5. export de requete vers excel(pb de mise en forme)
    Par syl221 dans le forum Access
    Réponses: 13
    Dernier message: 20/10/2004, 15h15

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