Comparaison avec boucle while
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 :
Code:
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> |
(la request3)
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 ^^