Bonjour
J'aimerais savoir si c'est possible autrement qu'avec une boucle while de tester toutes les lignes d'une base de données? Par exemple dans mon code :
(la request3)
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> ****<head> ********<title>Intranet</title> <link rel="stylesheet" href="tableau.css" /> ********<meta http-equiv="Content-Type" content="text/html; charset=utf8" /> ****</head> ****<body>**** <?php include('../modele/bdd.php'); $request = $db->query("SELECT * FROM personnel ORDER BY nom"); $request2 = $db->query("SELECT titre FROM competences"); $nRows = $db->query("SELECT COUNT(titre) from competences")->fetchColumn(); ?> <table class="table table-header-rotated" border=1, cellpadding="5"> <caption>Tableau de polyvalence VIWAMETAL</caption> <thead> <tr class="contour"> <th colspan="4"><img src="LogoViwameta.jpg"/></th> <th colspan="22">Decoupe</th> <th colspan="10">Pliage</th> <th colspan="14">Peripherie</th> <th colspan="10">Soudure</th> <th colspan="12">Expedition</th> <th colspan="12">Competences suplementaires</th> </tr> </thead> <tbody> <tr> <th>Nom</th> <th>Prenom</th> <th>Agence</th> <th>Contrat</th> <?php while($resultat = $request2->fetch()){ ?> <th class="rotate" colspan="2"> <div> <span> <?php echo $resultat['titre'];?> </span> </div> </th> <?php } ?> </tr> <?php while($donnees = $request->fetch()) {?> ****************<tr> <td rowspan="2"><?php echo $donnees['nom'];?></td> <td rowspan="2"><?php echo $donnees['prenom'];?></td> <td rowspan="2"><?php echo $donnees['agence'];?></td> <td rowspan="2"><?php echo $donnees['typeContrat'];?></td> <?php $request3 = $db->prepare("SELECT id_Competence, id_Personnel, niveau, formation FROM competence_personnel WHERE '".$donnees['id_Personnel']."' = id_Personnel"); $request3->execute(); /* si boucle while loltabloa+ while($donnees1 = request3->fetch()) {} */ $donnees1 = $request3->fetch(); // echo $donnees1['id_Competence']."-".$donnees1['id_Competence']; // $row=$donnees1['id_Personnel']; // $row2=$donnees1['id_Competence']; // $row3=$donnees1['niveau']; // echo $row ."-". $row2 ."-". $row3 ."-"; for($i=1;$i<=$nRows;$i++){ if($donnees1['id_Competence'] == $i) { if($donnees1['niveau'] >= 2) { echo "<td bgcolor=#295BFF></td><td bgcolor=#295BFF></td>"; } elseif ($donnees1['niveau'] == 1) { echo "<td bgcolor=#295BFF></td><td></td>"; } else { echo "<td></td><td></td>"; } } else { echo "<td></td><td></td>"; } }?> ****************</tr> <tr> <?php for($i=1;$i<=$nRows;$i++){ if($donnees1['id_Competence'] == $i) { if($donnees1['niveau'] == 4) { echo "<td bgcolor=#295BFF></td><td bgcolor=#295BFF></td>"; } elseif ($donnees1['niveau'] == 3) { echo "<td bgcolor=#295BFF></td><td></td>"; } else { echo "<td></td><td></td>"; } } else { echo "<td></td><td></td>"; } }?> </tr> <?php } $request->closeCursor(); $request2->closeCursor(); $request3->closeCursor(); ?> </tbody> </table> </body> <html>
Il trouve l'id_Personnel et récupère donc les informations qui correspondent au champ, mais j'aimerais qu'après avoir réaliser cette action, il continue de chercher jusqu'au bout de la table car y'a plusieurs fois l'id_Personnel qui est associé à un id_Compétence différent (c'est juste pour gérer un affichage dans un tableau déjà fonctionnel, sauf qu'il s'arrête dès qu'il a trouvé l'id (normal y'a pas de boucle))
Le soucis étant que je ne sais pas comment construire mon while sans que cela ne déstructure mon tableau, je ne sais pas si je suis assez clair?
En gros, exemple :
Id_Personnel 120
Id_Compétence 45
(...)plus loin dans la table(...)
id_Personnel 120
id_Compétence 43
j'aimerais qu'il sélectionne les deux et non qu'il s'arrête au premier id_Personnel trouvé
Merci ^^
Partager