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 :

Adapter l'affichage par rapport à ma requête [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Adapter l'affichage par rapport à ma requête
    Comment faire pour afficher plusieurs noms à la fois dans un boucle.
    exemple: un db avec une table titres de livres et une table auteurs ;
    y'a plusieurs auteurs pour un même livre.
    comment afficher tous les auteurs pour un même livre?

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT DISTINCT nom_auteur 
    FROM table 
    WHERE titre_livre = $Titre_livre;
    Heu ... a moins que ce soit un probleme PHP .. desole ...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 4
    Points
    4
    Par défaut affichage php
    ben oui pb php!
    voici le 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
    mysql_connect ("localhost","root","")
    or die ("Impossible de se connecter");
      mysql_select_db ("dvd")
    or die ("Impossible de se connecter");
    if (!isset ($tri))
      $sql="select * FROM t_livre JOIN t_auteurWHERE id_livre= num_livre ORDER BY titre";
     
      else
     $sql="FROM t_livre JOIN t_auteurWHERE id_livre= num_livre ORDER BY '".$tri."'";
     
    $result=mysql_query($sql);
     
      while ($data=mysql_fetch_array($result))
     {
          echo "<table border=\"1\">";
          echo "<tr> <td rowspan=\"3\"><img src=\"img/".$data["affiche"]."\"/> </td>";  
          echo "<td><a href=\"index.php?choix=catalogue&tri=titre\"> Titre:&nbsp</a>".$data["titre"]."</td><td>&nbsp;</td>";
     
        //a partir de là il m'affiche autant de fois le livre qu'il y a d'auteur
     
     echo "<td rowspan=\"2\">".$data["nom"]."</td></tr>";
     
     
          echo "<tr><td><a href=\"index.php?choix=catalogue&tri=genre\"> Genre:&nbsp</a>".$data["genre"]."</td><td>&nbsp;</td></tr>";
          echo "<tr><td>".$data["annee"]."</td><td>&nbsp;</td>";
     
          echo "<tr><td colspan=\"4\">".$data["resume"]."</td></tr>";
          echo "<tr><td>Commentaires</td>";
     
    echo "</table>";
    }
    ?>

  4. #4
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    C'est normal tu as mis tout ton tableau dans la boucle. Que veux tu au juste? afficher tous les auteurs ds une même cellule ou sur des lignes différentes?

    PS: Pense à utiliser les balises code pour que l'on voit mieux ton code

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2006
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 109
    Points : 131
    Points
    131
    Par défaut
    Dans tes requetes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $sql="select * FROM t_livre JOIN t_auteurWHERE id_livre= num_livre ORDER BY titre"; 
     
    else 
    $sql="FROM t_livre JOIN t_auteurWHERE id_livre= num_livre ORDER BY '".$tri."'";
    Tu cherche a faire quoi ?
    Premeire requete : Select * => tu recupere tous les champs
    Deuxiement requete : => Pas de select

    Ou alors il y a un truc qui m'echape ?

    Si tu veux un/les auteurs pour un livre:
    Select t_auteur

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    ben excuse sur le code orginal y'a le $sql="select * FROM...
    donc je cherche à mettre dans la même cellule tous les auteurs pour un même livre.
    merci pour votre aide!

  7. #7
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    Mainjin quand on faion s'attend a une instruction qui doit en principe commer par { et se terminer par }.il est ou dans ton script

  8. #8
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    pas besoin quand il n'y a qu'une instruction

  9. #9
    Membre actif
    Inscrit en
    Septembre 2005
    Messages
    185
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 185
    Points : 220
    Points
    220
    Par défaut
    Merçi Yobs je ne le savais pas .mais je prefererai pour une meilleure lisibilité

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    merci pour tous les commentaires. Suis pas pro mais j'voudrais juste savoir comment faire cette cellule avec plusieurs auteurs.
    Y'aurait-il quelqu'un qui sait?

  11. #11
    kum
    kum est déconnecté
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 27
    Points : 33
    Points
    33
    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
     
      echo "<table border=\"1\">"; 
      $titreDuLivre = "";
      while ($data=mysql_fetch_array($result)) { 
     
        if ($titreDuLivre!=$data["titre"]) {
          echo "<tr> <td rowspan=\"3\"><img src=\"img/".$data["affiche"]."\"/> </td>"; 
          echo "<td><a href=\"index.php?choix=catalogue&tri=titre\"> Titre:&nbsp</a>".$data["titre"]."</td><td>&nbsp;</td>"; 
        }
     
        echo "<td rowspan=\"2\">".$data["nom"]."</td></tr>"; 
     
        if ($titreDuLivre!=$data["titre"]) {
          echo "<tr><td><a href=\"index.php?choix=catalogue&tri=genre\"> Genre:&nbsp</a>".$data["genre"]."</td><td>&nbsp;</td></tr>"; 
          echo "<tr><td>".$data["annee"]."</td><td>&nbsp;</td>"; 
          echo "<tr><td colspan=\"4\">".$data["resume"]."</td></tr>"; 
          echo "<tr><td>Commentaires</td>"; 
        }
     
        $titreDuLivre = $data["titre"];
      } 
      echo "</table>";
    essaye cela

  12. #12
    kum
    kum est déconnecté
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    Essaye plutot cela, il avai pas tout compris le monsieur

    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
     
       echo "<table style=\"border : 1 solid #000000;\">"; 
      $etat = 0;
      $dataOld = array();
      while ($data=mysql_fetch_array($result)) { 
     
        if ($dataOld["titre"]!=$data["titre"] && $etat==1) {
     
          echo "  </td>
                </tr>
                <tr>
                  <td colspan=\"4\"><a href=\"index.php?choix=catalogue&tri=genre\"> Genre:&nbsp</a>".$dataOld["genre"]."</td>
                  </tr>"; 
          echo "<tr>
                  <td colspan=\"4\">".$dataOld["annee"]."</td><td>&nbsp;</td>"; 
          echo "<tr>
                 <td colspan=\"4\">".$dataOld["resume"]."</td>";
          echo "</tr>"; 
          echo "<tr>
                  <td style=\"border-bottom : 1 solid #000000;\" colspan=\"4\">Commentaires</td></tr>"; 
          $etat = 0 ;
     
        }    
     
        if ($data["titre"]!=$dataOld["titre"] && $etat==0) {
          echo "<tr > 
                  <td><img src=\"img/".$data["affiche"]."\"/> </td>"; 
          echo "  <td><a href=\"index.php?choix=catalogue&tri=titre\"> Titre:&nbsp</a>".$data["titre"]."</td>
                  <td>&nbsp;</td>
                  <td>"; 
          $etat = 1;
        }
     
        echo "".$data["auteur"]."<br>"; 
     
        $dataOld = $data;
      } 
      if ($etat==1) {    
          echo "  </td>
                </tr>
                <tr>
                  <td colspan=\"4\"><a href=\"index.php?choix=catalogue&tri=genre\"> Genre:&nbsp</a>".$dataOld["genre"]."</td>
                  </tr>"; 
          echo "<tr>
                  <td colspan=\"4\">".$dataOld["annee"]."</td><td>&nbsp;</td>"; 
          echo "<tr>
                 <td colspan=\"4\">".$dataOld["resume"]."</td>";
          echo "</tr>"; 
          echo "<tr>
                  <td colspan=\"4\">Commentaires</td></tr>"; 
      }
      echo "</table>";

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    moi pas avoir tout compris... mais ça marche.
    si t'as encore du temps tu peux me mettre des commentaires pour que je comprenne mieux.
    merci !!!!!!!!!!!!!!!!!!!

  14. #14
    kum
    kum est déconnecté
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 27
    Points : 33
    Points
    33
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
      //ouverture de ton tableau
      echo "<table style=\"border : 1 solid #000000;\">"; 
     
      //etat de ton tableau 0 = derniere balise tr fermée, si 1 = derniere balise tr ouvert
      $etat = 0; 
      //initialisation d'un objet tableau
      $dataOld = array(); 
      while ($data=mysql_fetch_array($result)) { 
     
        //si le titre de $dataOld (ligne precedente de ta requete) != du titre de $data (ligne courante de ta requete)
        //et que la ligne du tableau HTML est ouverte
        //alors nouveau livre =>
        // et donc fermeture de la ligne du tableau HTML 
        //affectation de $etat = 0 pour signifier que la ligne du tableau HTML est refermée
        if ($dataOld["titre"]!=$data["titre"] && $etat==1) { 
     
          echo "  </td> 
                </tr> 
                <tr> 
                  <td colspan=\"4\"><a href=\"index.php?choix=catalogue&tri=genre\"> Genre:&nbsp</a>".$dataOld["genre"]."</td> 
                  </tr>"; 
          echo "<tr> 
                  <td colspan=\"4\">".$dataOld["annee"]."</td><td>&nbsp;</td>"; 
          echo "<tr> 
                 <td colspan=\"4\">".$dataOld["resume"]."</td>"; 
          echo "</tr>"; 
          echo "<tr> 
                  <td style=\"border-bottom : 1 solid #000000;\" colspan=\"4\">Commentaires</td></tr>"; 
          $etat = 0 ; 
     
        }    
     
        //si le titre de $dataOld (ligne precedente de ta requete) != du titre de $data (ligne courante de ta requete)
        //et que la ligne du tableau HTML est fermée
        //alors nouveau livre =>
        // creation du debut de la ligne du tableau HTML 
        //affectation de $etat = 1 pour signifier que la ligne du tableau HTML est ouvert
        if ($data["titre"]!=$dataOld["titre"] && $etat==0) { 
          echo "<tr > 
                  <td><img src=\"img/".$data["affiche"]."\"/> </td>"; 
          echo "  <td><a href=\"index.php?choix=catalogue&tri=titre\"> Titre:&nbsp</a>".$data["titre"]."</td> 
                  <td>&nbsp;</td> 
                  <td>"; 
          $etat = 1; 
        } 
     
        echo "".$data["auteur"]."<br>"; 
     
        //affectation de l'array $data (issue de ta ligne courante de ta requete) à $dataOld 
        $dataOld = $data; 
      } 
     
        //sila ligne du tableau HTML est ouverte
        //alors ne pas oublier de fermer de la ligne du tableau HTML 
      if ($etat==1) {    
          echo "  </td> 
                </tr> 
                <tr> 
                  <td colspan=\"4\"><a href=\"index.php?choix=catalogue&tri=genre\"> Genre:&nbsp</a>".$dataOld["genre"]."</td> 
                  </tr>"; 
          echo "<tr> 
                  <td colspan=\"4\">".$dataOld["annee"]."</td><td>&nbsp;</td>"; 
          echo "<tr> 
                 <td colspan=\"4\">".$dataOld["resume"]."</td>"; 
          echo "</tr>"; 
          echo "<tr> 
                  <td colspan=\"4\">Commentaires</td></tr>"; 
      } 
      echo "</table>";
    En fait, à la fin de chaque traitement de la ligne courante de ta requête, je la sauvegarde dans un array dateOld afin de comparer la ligne précédente a la ligne courant pour savoir si nous sommes en face d'un nouveau livre.
    Si oui je referme ma ligne du tableau HTML (bien sur si un début de ligne du tableau HTML a déjà été créée: grâce à la variable état)

    Voila. Est-ce clair ????

    Désolé pour cette réponse tardive

  15. #15
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    merci kum! absent je n'ai pu te répondre mais merci beaucoup

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

Discussions similaires

  1. Réponses: 18
    Dernier message: 03/07/2009, 16h19
  2. affichage par rapport à une condition sur 2 variables
    Par kilian67 dans le forum Langage
    Réponses: 3
    Dernier message: 22/07/2008, 14h32
  3. Réponses: 2
    Dernier message: 19/04/2006, 17h29
  4. [MySQL] Affichage page par page et requêtes du type $sql .=
    Par carelha dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/04/2006, 18h12
  5. Réponses: 7
    Dernier message: 05/04/2006, 12h22

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