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 :

Afficher données d'une requête dans un tableau


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 79
    Points : 62
    Points
    62
    Par défaut Afficher données d'une requête dans un tableau
    Bonsoir,

    je viens quérir votre aide car je me trouve face à un problème qui me laisse perplexe quant à sa résolution...
    Je vous pose l'histoire depuis A jusqu'à Z:
    J'ai un site web concernant une entreprise de transport dans lequel sont répertoriées plusieurs tournées saisies par les chauffeurs.
    D'après ma BDD, une tournée est caractérisée avec:

    Un id "ID"
    Un numéro (de tournée) "Numero"
    Le nombre de points de livraison "Nb_pt_liv"
    Le nombre de ramasses "Pickup"
    Le nom du chauffeur "Chauffeur"
    La date du jour de la tournée "Date_liv"
    Et son email "Email"
    Voilà ma table Tournee. Maintenant je souhaiterais afficher dans un tableau à double entrées (En colonne: Numero et en Ligne: Date_liv) les données concernant "Nb_pt_liv" et "Pickup" dans la colonne correspondant à une tournée et sur la ligne correspondant à une date.

    Bon comme je suis sûr que ça n'est pas clair pour tout le monde (y compris pour moi ><) et comme une image vaut mille mots, voici une capture:
    Nom : tab9.png
Affichages : 63
Taille : 7,9 Ko

    Donc voici le tableau que je génère avec du code HTML et PHP pour afficher les données de ma BDD dans un tableau. Vous pouvez ici retrouver ce que vous ai dit concernant "Numero" en colonne et "Date_liv' en ligne.
    Voici l'algorithme pour remplir le tableau:

    On regarde le numéro de tournée, si cette tournée a été enregistré à une date référencée en ligne mettre le nombre de points et de ramasses dans la colonne correspondant au numéro de tournée.

    Par exemple, un chauffeur dont la tournée est 155 et la date est 2013-06-05 a rentré 26 points de livraison et 16 ramasses, alors il y aura, à la ligne correspondant à la date 2013-06-05 à la colonne de la tournée 155, 26 pour le champ "Points" et 16 pour celui de "Pickups".
    Seulement je n'arrive pas à faire ça. En effet les données sont affichées selon la date mais pas aussi selon le numéro de tournée.
    Ce qui fait qu'en reprenant l'exemple précédent, si le chauffeur qui a la tournée 100 n'a rien saisie à la même date que le chauffeur de la tournée 155, et bien les données correspondant à la tournée 155 vont être placées dans la colonne de la tournée 100 (comme représenté dans le tableau dans l'image).
    Ce qui veut dire que les données sont saisies à la suite, en partant de la 1er position dans le tableau.

    Je vous poste mon code PHP qui réalise le tableau posté en image:

    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
    $numero = mysql_query('SELECT * FROM tournee_tnt ORDER BY Numero');
    ?>
     
    <table data-role="table" id="table-custom-2" data-mode="" class="ui-body-d ui-shadow table-stripe ui-responsive">
    	<tbody>
    	<tr><td></td>
    		<?php
    		while($donnees = mysql_fetch_array($numero))
    		{
    		?>
    			<th COLSPAN=2><?php echo $donnees['Numero'];?></th>
    		<?php
    		}
    		?>
    		<tr><td></td>
    			<?php
    				$nb_tournees="SELECT count(Numero) AS compteur FROM tournee_tnt";
    				$req_nb_journee=mysql_query($nb_tournees); 
    				$tab_nb_journee=mysql_fetch_array($req_nb_journee) ;
    				$i = 0;
    				while($i < $tab_nb_journee["compteur"])
    				{
    			?>
    					<td>Points</td><td>Pickups</td>
    			<?php
    					$i++;
    				}
    			?>
    		</tr>
    	</tr>
    	<?php
    		$date = mysql_query('SELECT DISTINCT Date_liv FROM tournee_tnt ORDER BY `Date_liv`');
    		while($donnees = mysql_fetch_array($date))
    		{
    	?>
    		<tr>
    			<td><?php echo $donnees['Date_liv'];?></td>
    		<?php
    			$date_c = $donnees['Date_liv'];
    			$pt_pick = mysql_query("SELECT Nb_pt_liv, Pickup FROM tournee_tnt WHERE Date_liv ='$date_c' ORDER BY Numero");
    			while($donnees = mysql_fetch_array($pt_pick))
    			{
    		?>
    				<td><?php echo $donnees['Nb_pt_liv'];?></td><td><?php echo $donnees['Pickup'];?></td>
    		<?php
    			}
    		?>
    		</tr>
    	<?php
    		}
    	?>
    	</tbody>
    </table>
    Donc ma question est: Pouvez-vous quant à ce que les données soient placées au bon endroit (bonne ligne et bonne colonne)?

    Si quelque chose n'est pas clair n'hésitez pas à me le dire. Je me suis peut-être mal exprimé, mais j'ai fait de mon mieux sachant que c'est pas évident de le dire par écrit

    Je vous remercie !

    PS: Je sais qu'il existe de nombreux sujets similaires à ma requête mais je ne trouve pas de réponse précise à ce que je cherche

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Fais simple et présente proprement ton code, tu t'y retrouveras mieux.

    Quand tu pars sur des requêtes imbriqués, tu peux déjà te dire que tu montes une usine à gaz.

    Recupère toutes les données en une fois, classe les et affiche les :

    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
     
    $result = mysql_query('SELECT DISTINCT Numero FROM tournee_tnt');
    while($row= mysql_fetch_array($result)) {
         $tblNumero[] = $row['Numero'];
    }
     
     
    $result = mysql_query('SELECT Numero, Nb_pt_liv, Pickup, Date_liv FROM tournee_tnt');
    while ($row = mysql_fetch_assoc($result)) {
         $data[$row['Date_liv']][$row['Numero']] = array('points'=>$row['Nb_pt_liv'], 'pickup'=>$row['Pickup']);
    }
     
    echo '<table><tr><td></td>';
     
    foreach ($tblNumero as $numero) {
       echo '<th colspan="2">' . $numero . '</th>';
    }
     
    echo '</tr>';
     
    foreach($data as $date=>$data_numeros) {
        echo '<tr><td>'. $date . '</td>';
        foreach ($tblNumero as $numero) {
             if (isset($data_numero[$numero])) {
                    $points = $data_numero[$numero]['points'];
                    $pickup = $data_numero[$numero]['pickup'];
              }
             else {
                    $points = '';
                    $pickup = '';
             }
             echo '<td>' . $points . '</td><td>' . $pickup . '</td>';
         }
         echo '</tr>';
    }
    echo '</table>';

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2012
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 79
    Points : 62
    Points
    62
    Par défaut
    Effectivement tu as raison.
    J'ai procédé par étapes pour créer mon tableau (d'abord afficher les Numéros, ensuite les Dates, etc...) ce qui fait que je me suis retrouvé avec de nombreuses requêtes ^_^

    Merci d'avoir vraiment beaucoup simplifié mon code

    Tout s'affiche correctement, par contre je ne comprends pas pourquoi à ce niveau là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    foreach ($tblNumero as $numero) {
    	if (isset($data_numero[$numero])) {
    		$points = $data_numero[$numero]['points'];
    		$pickup = $data_numero[$numero]['pickup'];
    	}
    	else {
    		$points = '';
    		$pickup = '';
    	}
    	echo '<td>' . $points . '</td><td>' . $pickup . '</td>';
    }
    La condition du "if" n'est jamais validé et du coup $points et $pickup sont toujours vides.

    Je précise que les valeurs de points et pickup existent dans la BDD.

    Merci beaucoup !

    EDIT=C'est bon c'est résolu, juste un "s" qui manquait à une variable ($data_numeros) ^^
    Je te remercie beaucoup pour cette aide précieuse que tu m'as apporté, c'est vraiment génial ! Merci beaucoup !

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

Discussions similaires

  1. Afficher les données d'une requête dans un tableau
    Par Elasnaoui dans le forum ASP.NET
    Réponses: 6
    Dernier message: 27/02/2010, 20h52
  2. Afficher le contenu d'une requête dans un tableau
    Par Parmenion dans le forum Langage
    Réponses: 9
    Dernier message: 22/02/2009, 19h15
  3. afficher les données d'une requête dans une ListView
    Par modafine dans le forum Windows Forms
    Réponses: 4
    Dernier message: 14/12/2008, 04h44
  4. Afficher les données d'une requête dans un composant
    Par DashRendar dans le forum VB.NET
    Réponses: 3
    Dernier message: 04/02/2008, 09h58
  5. [MySQL] Afficher le résultat d'une requête dans un tableau
    Par magobouli dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/02/2007, 14h41

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