Rechercher : dans
Par :

[PHP] double boucle WHILE mysql_fetch_array

Dernière réponse le 25 jun 2009 à 10:34:27 dafunkk, le 18 jun 2009 à 14:35:08 
 Signaler ce message aux modérateurs

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>';
}

Configuration: Windows Vista
Firefox 3.0.11




dafunkk

Meilleures réponses pour « [PHP] double boucle WHILE mysql_fetch_array » dans :
Comment lire un fichier ligne par ligne VoirComment lire un fichier ligne par ligne Préambule Boucle while Syntaxe Exemple Astuces Bonus Boucle for Syntaxe Préambule Une des erreurs les plus communes dans l'apprentissage des scripts "bash" sous GNU/LInux pour lire un fichier...
PHP - Concaténation VoirPHP permet de concaténer des chaînes de caractères grâce à l'opérateur "." : $concatenation= $a . $b; Ou encore pour affecter, dans la variable $a, la valeur de la concaténation de $a et de $b : $a.=$b; Pour concaténer des chaînes et des...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...
Javascript - Les structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditonnelle les instructions qui permettent de tester si une condition est vraie ou non, ce qui permet notamment de donner de l'interactivité à vos scripts. L'instruction...

1

 dafunkk, le 25 jun 2009 à 10:34:27

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.

Répondre à dafunkk