Page 1 sur 1

boucle while sur tableau

Posté : 16 mars 2006, 18:24
par logone
Salut,

J'ai besoin de faire une boucle sur le retour d'une liste deroulante dans un formulaire.

Voici le formulaire

Code : Tout sélectionner

<select name="id_membre[]" size="5" multiple="multiple" class="intitule" id="id_membre"> <option value="0">--Sélectionnez--</option> <?php while ($row = mysql_fetch_array($membre_liste) ) { ?> <option value="<?php echo $row[0];?>"><?php echo "$row[1] $row[2]";?> </option> <?php } ?> </select>
Je recupere bien mon tableau car si je fais echo $id_membre[0] et $id_membre[1]; j'ai bien les infos

Mais la ou je bloc c'est pour effectuer une boucle while sur ce tableau
voici ce que j'a mis mais ca ne fonctionne pas
while($data=mysql_fetch_array($id_membre))
{ // debut de la boucle while
       
        } 
Merci de votre aide

Posté : 16 mars 2006, 19:01
par Ryle
Hello :)

Ton tableau $id_membre est le résultat d'un formulaire, pas d'une base de données, ce n'est donc pas dans les fonction mysql qu'il te faut chercher :)

Le plus simple pour lire ce genre de tableau n'est pas d'utiliser une boucle while, mais une boucle foreach (bien qu'un while puisse être utilisé malgré tout)
// le foreach fonctionne comme ceci :
foreach($id_membre as $id) { // pour chaque élément de $id_membre, placé dans la variable $id
  echo $id; // affiche la valeur de $id, ou tout autre traitement :)
}

// Le while t'oblige à avoir un compteur, mais peut aussi être envisagé
$cpt = 0;
while ($cpt < count($id_membre)) {
  echo $id_membre[$cpt];
  $cpt++;
}

Posté : 16 mars 2006, 19:15
par logone
J'ai cherche et ai reussit a trouve en effet la boucle for est plus appropriée
voila le code si ca peux aider
for ($i=0;$i<sizeof($membre);$i++)
	{

  echo $membre[$i];
	 }


Posté : 17 mars 2006, 22:18
par BeRoots
interessant :-k

n'oublis pas de mettre résolu si tu n'a plus de problème ;)

Posté : 18 mars 2006, 00:10
par logone
Désolé pour l'oublie

Posté : 18 mars 2006, 00:25
par nicolas
for ($i=0;$i<sizeof($membre);$i++)
	{

  echo $membre[$i];
	 }

Il faut éviter de faire le sizeof dans la boucle!
Calcule la limite en utilisant une variable pour éviter de calculer la taille du tableau à chaque tour de boucle:
$max=sizeof($membre);
for ($i=0;$i<$max;$i++) {
  echo $membre[$i];
}
ou en condensé:
for ($i=0,$max=sizeof($membre);$i<$max;$i++) {
  echo $membre[$i];
}
Attention la dernière écriture peut te sembler équivalente à ce que tu avais écrit mais il n'en est rien. L'initialisation de $max ne se fait qu'une fois.