Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2689 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Blocage de débutant sur une boucle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Blocage de débutant sur une boucle

n°1967597
lofo7
Posté le 19-02-2010 à 14:43:52  profilanswer
 

Bonjour,
je vais aller droit au but. Je gère mes bandes dessinées avec la bdd mysql. J'ai deux tables : bd_albums qui regroupe mes albums et bd_series pour mes series.
 
Voilà comment elle se présente en simplifiant (pour bd_series):

Code :
  1. id_serie     titre_serie
  2.    11          Asterix
  3.    12         Lanfeust
  4.    13          Tintin


 
Pour bd_albums :

Code :
  1. id_album     numero_album       liens_id_serie
  2.    200            1                   12
  3.    201            2                   12
  4.    202            3                   11


Le lien entre les deux tables est donc (id_serie et liens_id_serie).
Maintenant, j'aimerais faire une liste des albums que je possède en affichant le titre de la série et le numéro :
Asterix : 1, 2, 3, 4, 7, 8, ...
Lanfeust : 2, 5, 9, 10, 11, 15, ...
...
 
J'ai fait cette requête :

Code :
  1. <?php
  2. $sql= "SELECT * FROM bd_series, bd_albums WHERE bd_series.id_serie = bd_albums.liens_id_serie ORDER BY titre_serie, numero";
  3. $result= mysql_query($sql);
  4. while($row = mysql_fetch_assoc ($result)){
  5.     $titre_serie = $row["titre_serie"];
  6.     $numero = $row["numero"];
  7.  
  8. echo"$titre_serie: $numero<br>";
  9. }
  10. ?>


 
Mais comme vous vous en doutez, je n'ai pas ce que je veux mais j'obtiens :
Astérix : 1
Astérix : 2
Astérix : 3
Astérix : 4
Astérix : 7
...
 
Bref, ce n'est pas en ligne mais en colonne. Je comprends bien où est le problème puisque je fais une boucle sur le titre de la série en plus d'en faire sur les numéros.
Mais je ne comprends quelle est la solution. Voilà pourquoi je viens vous demander de l'aide  :)  
 
Merci !
Maxime


Message édité par lofo7 le 19-02-2010 à 15:46:22
mood
Publicité
Posté le 19-02-2010 à 14:43:52  profilanswer
 

n°1967613
macgawel
Posté le 19-02-2010 à 15:08:53  profilanswer
 

Bonjour.
 
La solution la plus simple, à mon avis, c'est de vérifier à chaque enregistrement si tu changes de série.
Exemple largement améliorable (gestion des sauts de lignes et des virgules, entre autres)

Code :
  1. <?php
  2. $sql= "SELECT * FROM bd_series, bd_albums WHERE bd_series.id_serie = bd_albums.liens_id_serie ORDER BY titre_serie, numero";
  3. $result= mysql_query($sql);
  4. $serie_en_cours = "";
  5. while($row = mysql_fetch_assoc ($result)){
  6.     $titre_serie = $row["titre_serie"];
  7.     $numero = $row["numero"];
  8.     if ($titre_serie !== $serie_en_cours) ) {
  9.         echo"<br>$titre_serie: ";
  10.         $serie_en_cours = $titre_serie;
  11.     }
  12.     echo $numero;
  13. }
  14. ?>


 
(Au passage : utilise la balise [ code=php] ...[ /code] plutôt que cpp, c'est plus clair  ;) )

n°1967637
lofo7
Posté le 19-02-2010 à 15:51:02  profilanswer
 

C'est bon j'ai changé la balise du code :).
J'avais l'idée d'incrémenter à chaque fois l'id_serie. Problème : si il y a des "trous" dans les enregistrements, je ne sais pas trop ce que ça aurait affiché.
Merci de ta réponse. C'est tout bête mais fallait trouver. Déjà, tu m'as mis sur la voie avec ce code, je vais rajouter ce que je veux dessus.


Message édité par lofo7 le 19-02-2010 à 15:51:26
n°1969713
laaaaaapin
ouai §
Posté le 26-02-2010 à 15:25:10  profilanswer
 

Un truc comme ça devrait te retourner, pour chaque série, 2 colonnes:

  • nom de la série
  • liste des numéros d'albums, séparés par une virgule (tu peux faire un explode() sur ce résultat pour avoir un tableau contenant chaque numéro d'album)
Code :
  1. SELECT bd_series.titre_serie, GROUP_CONCAT(bd_albums.numero_album) FROM bd_series, bd_albums WHERE bd_series.id_serie = bd_albums.liens_id_serie
  2. GROUP BY bd_series.titre_serie


pas testé mais c'est l'idée


---------------
www.TASOEUR.biz / "Le lundi au soleil, c'est une chose qu'on n'aura jamais." - Claude François.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Blocage de débutant sur une boucle

 

Sujets relatifs
afficher plusieurs éléments en une seule boucleBoucle, générateur de boucles
VBA Fin de la fonction je reviens dans ma boucle ???[résolu] eviter blocage navigateur lors de recherche de ville
Problème de BoucleProblème de débutant
une question sur une boucle dans se prog[Résolu] boucle for ne retient que la dernière ligne du fichier
Boucle for et pointeurDébutant intégral cherche langage orienté objet
Plus de sujets relatifs à : Blocage de débutant sur une boucle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR