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 :

Comment affiché un résultat avec plusieurs lignes et plusieurs champs dans un tableau [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut Comment affiché un résultat avec plusieurs lignes et plusieurs champs dans un tableau
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql2 = "SELECT * FROM `personnel` WHERE Id_Section='$id'";
    $query2 = mysql_query($sql2) or die($sql2 . ' : '  . mysql_error());
    $data2 = mysql_fetch_assoc($query);

    Cette requêtes me donne des employés, avec leur nom, leur prénom, leur service, leur emploi, leur salaire etc...

    J'aimerais afficher tous ces employés dans un tableau avec plusieurs colonnes correspondant aux noms, aux prénoms, aux services etc...

    Merci beaucoup pour votre aide !

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Deux étapes :

    1/ tu fais un affichage en html de l'entête du tableau avec <table> et <tr> .. </tr>

    2/ tu fais une boucle en php qui va se charger de récupérer un a un les résultats de ta requete et qui va afficher une nouvelle ligne du tableau.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <table>
       <tr>
            <td> ID </td>    
            <td> Nom </td>
       </tr>
    <?php while ($vResult = mysql_fetch_assoc_array($link))
        {?>
       <tr>
             <td><?php echo $vResult['ID'];?></td>
             <td><?php echo $vResult['Nom'];?></td>
       </tr>
    <?php } //fin du while ?>
    </table>

  3. #3
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Ok merci je vais testé ca de suite !!

  4. #4
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Au fait je ne vois pas ce que représente vResult et $link ??
    Pourrait-tu m'aider via la requête que j'ai posté ?

  5. #5
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Voila ce que j'ai fait :

    Code php : 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
    $sql2 = "SELECT * FROM `personnel` WHERE Id_Section='$id'";
    $query2 = mysql_query($sql2) or die($sql2 . ' : '  . mysql_error());
    $data2 = mysql_fetch_assoc($query2);
    ?>
    <table>
    <tr>
    	<td> ID </td>    
    	<td> Nom </td>
    	<td> Prénom </td>
    	<td> Emploi </td>
    	<td> Section </td>
    	<td> Salaire </td>
    </tr>
     
    <?php while ($data2 = mysql_fetch_assoc_array($query2))
    	{?>
    		<tr>
    		<td><?php echo $data2['ID'];?></td>
    		<td><?php echo $data2['Nom'];?></td>
    		<td><?php echo $data2['Prenom'];?></td>
    		<td><?php echo $data2['Emploi'];?></td>
    		<td><?php echo $data2['Section'];?></td>
    		<td><?php echo $data2['Salaire'];?></td>
    		</tr>
    	<?php } //fin du while 
    ?>
    </table>

    Mais j'ai une erreur :

    Fatal error: Call to undefined function: mysql_fetch_assoc_array() in u:\pc stagiaire\hamza slimani\site php\autres pages\liste_perso.php on line 40

    Info : La ligne 40 est celle-ci

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php while ($data2 = mysql_fetch_assoc_array($query))

  6. #6
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    fais une boucle comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while($data2 = mysql_fetch_assoc($query))
       {
     
       }

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 23
    Points : 25
    Points
    25
    Par défaut
    $link est le retour de ta fonction connect je pense

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $link=mysql_connect(serveur, compte, pass) or die(mysql_error());

    Le vResult est une variable que tu crées qui va prendre tour a tour chaque ligne de ton resultat et t'en faire un tableau aliasé.

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    rahhh, désolé j'ai tout posté/écrit un peu vite...
    la fonction s'appelle mysql_fetch_assoc() et pas fetch_assoc_array()

    Il ne fallait pas prendre mon code a la lettre, c'était un exemple et je me suis mélangé avec les noms de mes propres fonctions de base de données désolé

  9. #9
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    C'est à peu pres ca, hormis que tu fais un fetch au début de ton code et apres tu boucles en refaisant un fetch donc tu perds un résultat:

    Code php : 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
     
    $sql2 = "SELECT * FROM `personnel` WHERE Id_Section='$id'";
    $query2 = mysql_query($sql2) or die($sql2 . ' : '  . mysql_error());
    ?>
    <table>
    <tr>
    	<td> ID </td>    
    	<td> Nom </td>
    	<td> Prénom </td>
    	<td> Emploi </td>
    	<td> Section </td>
    	<td> Salaire </td>
    </tr>
    <?php while($data2 = mysql_fetch_assoc($query2))
       {
    ?>
    		<tr>
    		<td><?php echo $data2['ID'];?></td>
    		<td><?php echo $data2['Nom'];?></td>
    		<td><?php echo $data2['Prenom'];?></td>
    		<td><?php echo $data2['Emploi'];?></td>
    		<td><?php echo $data2['Section'];?></td>
    		<td><?php echo $data2['Salaire'];?></td>
    		</tr>
    	<?php } //fin du while 
    ?>
    </table>

    Ca devrait fonctionner comme ca, enfin j'espère

  10. #10
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Non toujours pas!
    J'ai les entêtes "Nom Prénom etc..." mais rien ne se passe

    Merci à vous !!

  11. #11
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Et utilisant mysql_fetch_array ?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    while($data2 = mysql_fetch_array($query2))
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  12. #12
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Code php : 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
    $sql2 = "SELECT * FROM `personnel` WHERE Id_Section='$id'";
    $query2 = mysql_query($sql2) or die($sql2 . ' : '  . mysql_error());
    $data2 = mysql_fetch_assoc($query2);
    
    		?>
    		<table>
    			<tr>
    				<td> ID </td>    
    				<td> Nom </td>
    				<td> Prénom </td>
    				<td> Emploi </td>
    				<td> Section </td>
    				<td> Salaire </td>
    			</tr>
    			
    		<?php while($data2 = mysql_fetch_array($query2))
    		{
    		?>
    		<tr>
    		<td><?php echo $data2['ID'];?></td>
    		<td><?php echo $data2['Nom'];?></td>
    		<td><?php echo $data2['Prenom'];?></td>
    		<td><?php echo $data2['Emploi'];?></td>
    		<td><?php echo $data2['Section'];?></td>
    		<td><?php echo $data2['Salaire'];?></td>
    		</tr>
    	<?php } //fin du while 
    ?>
    </table>

    Toujours rien, que les entêtes !!

    Merci beaucoup

  13. #13
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    l'autre raison serait que tu ne rentres jamais dans ta boucle...

    ajoutes ca a l'entrée de ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    echo "boucle while<br>";
    print_r($data2)
    a l'entrée de ta boucle (juste après le while).

    A mon avis tu ne verras toujours que les entêtes.

    Ca signifie, dans ce cas, que ta requête ne te retourne pas de résultat et qu'il faut creuser de ce coté la.

  14. #14
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Oui tu as raison je ne vois que les entêtes encore une fois !

    Merci

  15. #15
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Voila, l'erreur vient donc de ta requete qui ne retourne aucun résultat. Essaie de l'afficher avant de l'exécuter pour voir son contenu et t'assurer que c'est bien ce que tu veux!

  16. #16
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    voilà un code qui marche pour moi:
    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
     
    <?php
    // connexion
    $link = mysql_connect("localhost", "root", "") ;
    mysql_select_db ("Base_DE_Donnée");
    $sql="select * from Table";
    $req1=mysql_query($sql);?>
     
    <form name="form1" method="post" action="supprimer_c.php">
      <p>&nbsp;</p>
      <table width="595" border="2" align="center" bordercolor="#000000">
        <tr>
          <td>Num&eacute;ro</td>
          <td>Numg</td>
          <td>Nom</td>
          <td>Pr&eacute;nom</td>
          <td><p align="center">Circonscription </p></td>
          <td><p align="center">Province </p></td>
          <td>R&eacute;gion</td>
          <td>&nbsp;</td>
        </tr>
        <tr>
    	<?php $compteur = 1;
    while ($ligne = mysql_fetch_array($req1) ){
    ?>
     
          <td><? echo $ligne['NUMC'];?>&nbsp;</td>
     
          <td><? echo $ligne['NUMG'];?>&nbsp;</td>
          <td><? echo $ligne['NOM'];?>&nbsp;</td>
          <td><? echo $ligne['PRENOM'];?>&nbsp;</td>
          <td><? echo $ligne['CIRCONSCRIPTION'];?>&nbsp;</td>
          <td><? echo $ligne['PROVINCE'];?>&nbsp;</td>
          <td><? echo $ligne['REGION'];?>&nbsp;</td>
          <td><input type="radio" name="radio" value="<? echo $ligne['NUMC'];?>"></td>
        </tr>
    	<? $compteur = $compteur + 1;
    }
     
    mysql_free_result();
     
    ?>
      </table>
      </form>

  17. #17
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    oups....c'est bon j'ai trouvé l'erreur (erreur bête, excusez moi encore une fois)

    Le problème se trouvait dans la requête :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql2 = "SELECT * FROM `personnel` WHERE Id_Section='$id'";

    J'ai mis WHERE Id_Section=$id alors que Id_Section correspond à un numéro de service et $id correpond à l'identifiant du chef de service !!

    Voila la bonne solution:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // on récupère le numéro identifiant de l'utilisateur grâce à la variable session.
    $id = $_SESSION['Id_CDS'];
    // Grâce à l'identifiant on récupère le service de l'utilisateur pour qu'il ne puisse insérer qu'au sein de son service
    $sql ="SELECT Service FROM `chef_de_service` WHERE Id_CDS='$id'";
    $query = mysql_query($sql) or die($sql . ' : '  . mysql_error());
    $data=  mysql_fetch_assoc($query);
    $service=$data['Service'];	
    		
    $sql2 = "SELECT * FROM `personnel` WHERE Id_Section='$service'";
    
    Merci pour tout en tout cas !!! TOUS TOUS !!!
    $query2 = mysql_query($sql2) or die($sql2 . ' : '  . mysql_error());
    $data2 = mysql_fetch_assoc($query2);

  18. #18
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Et voila !

    Pensez a la majorité des cas, avec des if et leurs else correspondant, et un affichage de résultats plus précis ca aide genre "attention pas de résultats" ou "requete incorrecte" etc.

    Penses au tag résolu !

  19. #19
    Membre du Club Avatar de Yagami_Raito
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 106
    Points : 55
    Points
    55
    Par défaut
    Oui désolé en tout cas, j'espère que vous m'en voulez pas trop !

    Balise [résolu] ok !

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/11/2012, 15h28
  2. fusionner plusieurs lignes d'un champs dans un select?
    Par gwena54 dans le forum Requêtes
    Réponses: 13
    Dernier message: 25/01/2008, 13h29
  3. Réponses: 2
    Dernier message: 22/06/2007, 09h26
  4. Réponses: 3
    Dernier message: 29/09/2006, 09h48
  5. PL/SQL - Comment afficher une image avec HTP ?
    Par patmaba dans le forum PL/SQL
    Réponses: 2
    Dernier message: 08/07/2004, 09h28

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