bonjours à tous.
Un amis m'a demandé de lui créer un petit programme pour le célèbre jeu WARHAMMER. Ce script consiste à la création d'une fiche dites fiches de bandes.
comme vous pouvez vous en douter j'ai plusieurs tables.
pour afficher les éléments de la fiche de bande je fait appelle à plusieurs d'entre elles.
Afin que vous puisiez m'aider voici quelques éléments d'explications :
warhammer est un jeu de plateau constituer de PERSONNAGES. chaque personnage fait partie d'une RACE. Il existe plusieurs type de personnage : les héros et les hommes de mains. Chaque personnage a des CARACTERISTIQUES et des COMPETENCES.
jusque la rien de difficile !
Chaque personnages fait partie d'une bande ( selon sa race : on ne peut pas créer une bande avec des races multiples ). Donc jusqu'à présent ont à :
des bandes constituée de personnages qui font partie d'une race. Lorsque les personnages font partie d'une bande, les joueurs (ou utilisateurs) l'affuble d'un pseudo. A chaque fois qu'une partie est jouée, le personnage subit des événements (un bras cassé, augmentation de l’expérience...etc !!). et c'est la que j'ai des problèmes.
en effet lorsque je veux afficher ma bande je fais ceci :
donc ce code m'affiche bien tout mes personnages qui sont dans la bande sélectionnée. par contre un personnage qui a un pseudo ( puisqu'il fait partie d'une bande) peux avoir 1 ou n événements lié à l'action du jeu. Bien sur dés que je veux les afficher je n'arrive à en affiché qu'un par personnage.
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
71
72
73
74
75
76
77
78 $requete=" SELECT bandes.*, personnages.*, pseudos.* FROM personnages,pseudos,bandes,perso_pseudo WHERE personnages.id=perso_pseudo.id_perso and pseudos.id=perso_pseudo.id_pseudo and bandes.id=$bande_id group by perso_pseudo.id_pseudo"; // on execute la requete $result = mysql_query($requete) or die('Echec de requête ligne : '.__LINE__.'<br /> avec la requête : '.$requete.'<br />. avec le message : '.mysql_error() ); //on recupere le resultat de la requete $compte= mysql_num_rows($result); //on teste si on recupere des enregistrements //si la table est vide if ($compte==0){ echo ' Il n\'y a actuellement aucuns soldats dans cette bande. Désirez-vous en <a href="creerBandes.php">créer</a> une ?'; }else{ //si la table contient au moins un enregistrement, on l'affiche. while ($detailbande=mysql_fetch_array ($result)){ $bande_id=$detailbande['id']; $bande_nom=$detailbande['nom_bande']; $bande_nom_perso=$detailbande['nom']; //$bande_userId=$detailbande['user_id']; //$bande_valeur=$detailbande['valeur']; $bande_perso_id=$detailbande['id']; $bande_pseudoPerso=$detailbande['libelle_pseudo']; $bande_pseudoDescription=$detailbande['histoire_pseudo']; $bande_pseudoM=$detailbande['mouvement']; $bande_pseudoCC=$detailbande['capacite_combat']; $bande_pseudoCT=$detailbande['capacite_tir']; $bande_pseudoF=$detailbande['force']; $bande_pseudoE=$detailbande['endurance']; $bande_pseudoPV=$detailbande['point_de_vie']; $bande_pseudoI=$detailbande['initiative']; $bande_pseudoA=$detailbande['attaque']; $bande_pseudoC=$detailbande['commendemant']; $bande_pseudoXptotal=$detailbande['xp_total']; $bande_pseudoCoutTotal=$detailbande['cout_total']; $bande_persoCoutBase=$detailbande['cout_base']; $bande_persoXp_base=$detailbande['experience_base']; ?> <ul> <!--case 1 --> <li><?php echo $bande_pseudoPerso; ?></li> <li>XP de base : <?php echo $bande_persoXp_base; ?></li> <li>XP total : <?php echo $bande_pseudoXptotal; ?></li> <li><?php echo $bande_pseudoDescription; ?></li> <li><?php echo $bande_dateEvenement; ?></li> <li><?php echo $bande_libelleEvenement; ?></li> <!-- case 2 --> <li><?php echo $bande_nom_perso; ?></li> <li>M : <?php echo $bande_pseudoM; ?></li> <li>CC : <?php echo $bande_pseudoCC; ?></li> <li>CT : <?php echo $bande_pseudoCT; ?></li> <li>F : <?php echo $bande_pseudoF; ?></li> <li>E : <?php echo $bande_pseudoE; ?></li> <li>PV : <?php echo $bande_pseudoPV; ?></li> <li>I : <?php echo $bande_pseudoI; ?></li> <li>A : <?php echo $bande_pseudoA; ?></li> <li>C : <?php echo $bande_pseudoC; ?></li> <li>cout de base : <?php echo $bande_persoCoutBase; ?></li> </ul> </section><!-- fermeture de la section descrptif--> </div><!-- fermeture de la div center--> <?php } }?>
voici le code que j'ai écrit :
Alors j'ai tenté de faire qu'une seule requette avec celle ci et celle du dessus, de les imbriquer, de les séparer rien n'y fait.
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 <?php //voir tout les evenements de la bande classé par pseudo $requete_evenements="select distinct evenements.* from bandes,evenements,personnages,pseudos,perso_pseudo where evenements.id=perso_pseudo.id_evenement and bandes.id=$bande_id order by id_pseudo"; // on execute la requete $result_evenements = mysql_query($requete_evenements) or die('Echec de requête ligne : '.__LINE__.'<br /> avec la requête : '.$requete_evenements.'<br />. avec le message : '.mysql_error() ); //on recupere le resultat de la requete $compte_evenements= mysql_num_rows($result_evenements); //on teste si on recupere des enregistrements //si la table est vide if ($compte_evenements==0){ echo ' Il n\'y a actuellement aucuns événements dans cette bande. Désirez-vous en <a href="creerBandes.php">créer</a> un ?'; }else{ //si la table contient au moins un événement, on l'affiche. while ($evenementbande=mysql_fetch_array ($result_evenements)){ $bande_dateEvenement=$evenementbande['date']; $bande_libelleEvenement=$evenementbande['libelles']; } } ?>
A l'heure actuelle, ma dernière requête est située au dessus de la première.
mon objectif est d'afficher les éléments de ma fiche de bande en sachant qu'un personnage peut avoir 1 ou n événements et que j'ai besoin d'afficher tout les événements lié a chaque personnage de la bande.
merci de votre aide !
Partager