[PHP] double boucle WHILE mysql_fetch_array

Résolu
dafunkk Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
dafunkk Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
cela fait maintenant deux jours que je suis bloqué par ce problème, peut-être quelqu'un pourra me faire avancer:

je voudrais afficher un certain nombre de checkbox dans un formulaire, et pre-cocher celles qui sont déjà attribué a un employé, j'ai donc deux boucle while, l'une dans l'autre, la première et la boucle générale qui boucle sur le mysql_fetch_array qui contient toutes les informations, la deuxième boucle while boucle sur les informations spécifique a l'employé, si elle existe chez l'employé il créé une checkbox pre-coché, sinon il l'a crée simplement sans la cocher. Pour l'instant mon code ne m'affiche que la première des information, mais c'est tout, en fait la première boucle while boucle san sprendre en compte la deuxième. Si quelqu'un voit d'ou pourrait venir le problème je lui en serrait tellement reconnaissant:
voici deux les deux solution que j'ai essayé qui m'amene exactement au même résultat:

essai 1:
function Rfonction4($var)
{
$b = mysql_query ( "SELECT posseder.numero_fonction
FROM employe, posseder, annee_active
WHERE posseder.annee = annee_active.ACTIVE
AND employe.numero_emp = posseder.numero_emp
AND employe.numero_emp ='$var'"
) or die ( "Requete pas comprise" );

$a = mysql_query("SELECT * FROM fonction") or die("Requete pas comprise");
$i=1;
$done=0;
$nb=mysql_num_rows($b);
$nb++;
echo '<table><tr>';
while ($libelle = mysql_fetch_array($a))
{
$lib = strtr($libelle[1], " ", "_");
while ($c = mysql_fetch_array($b))
{
if ($c[0] == $libelle[0])
{
if ($done!=1) {echo '<td align="right">'.$libelle[1].' <input name="'.$lib.'" type="checkbox" checked="checked"/>    </td>'; $done=1; }
}
else {
if ($done!=1) {echo '<td align="right">'.$libelle[1].' <input name="'.$lib.'" type="checkbox"/>    </td>'; $done=1;}
}
}
if($i==5)
{
echo '</tr><tr>';
$i=0;
}
$i++;
mysql_data_seek($b,0);
}
echo '</table>';
}

essai 2:
function Rfonction4($var)
{
$b = mysql_query ( "SELECT posseder.numero_fonction
FROM employe, posseder, annee_active
WHERE posseder.annee = annee_active.ACTIVE
AND employe.numero_emp = posseder.numero_emp
AND employe.numero_emp ='$var'"
) or die ( "Requete pas comprise" );

$a = mysql_query("SELECT * FROM fonction") or die("Requete pas comprise");
$i=1;
$done=0;
$nb=mysql_num_rows($b);
$c = mysql_fetch_array($b);
echo '<table><tr>';
while ($libelle = mysql_fetch_array($a))
{
$lib = strtr($libelle[1], " ", "_");
$up=0;
$numfonc=$libelle[0];
while ($up<$nb)
{
$c=mysql_data_seek($b,$up);
if ($c == $numfonc)
{
if ($done!=1) {echo '<td align="right">'.$libelle[1].' <input name="'.$lib.'" type="checkbox" checked="checked"/>    </td>'; $done=1; }
}
else {
if ($done!=1) {echo '<td align="right">'.$libelle[1].' <input name="'.$lib.'" type="checkbox"/>    </td>'; $done=1;}
}
$up++;
}
if($i==5)
{
echo '</tr><tr>';
$i=0;
}
$i++;

}
echo '</table>';
}



dafunkk
A voir également:

1 réponse

dafunkk Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   1
 
j'ai résolu mon problème, en fait j'avais tout bêtement oublié de re-initialiser la variable $done à 0 dans la première boucle.
1