Page 1 sur 1

Probléme affichage case à cocher!!

Posté : 20 juil. 2007, 17:02
par angebleu17
Bonjour,

En fait j'amerais afficher une liste de pays sous forme de case à cocher. Je récupére par une requete les pays déja choisi par l'utilisateur, dc ceux qui ont était choisi par l'utilisateur doivent être coché.
Je récupére aussi la liste de tous les pays, voici mon code :
		$tab=array();
	
		$res= mysql_query("select champ FROM champ WHERE id = '$id' order by champ"); //Correspond aux pays coché
		$total = mysql_num_rows ($res);

		{while($ligne= mysql_fetch_array ($res)) 
		array_push($tab,$ligne['champ']); 
		} 
	
		//tab est le tableau des pays coché
		
		$resultat=mysql_query("select * from pays"); //Récupére tous les pays
		while ($valeur1=mysql_fetch_array($resultat)) 
		{   
		$_pays = $valeur1['pays'];	
					
				for ($i=0; $i < $total ; $i++) 
				{
					if (isset($tab[$i]))
					{
					  if ($valeur1["pays"] == $tab[$i])
					  {  
				    echo'<TR><TD align ="left" valign="center" class="texte_titre"><INPUT type="checkbox" name="pays[]" checked value="'.$valeur1['pays'].'">'.$valeur1['pays'].'</td></tr> '; 
				  	}
					
						else
				  	{  
				    echo'<TR><TD align ="left" valign="center" class="texte_titre"><INPUT type="checkbox" name="pays[]" value="'.$valeur1['pays'].'">'.$valeur1['pays'].'</td></tr> '; 
				  	} 
				 }
			 
				  else 
				  { 
				    echo'<TR><TD align ="left" valign="center" class="texte_titre"><INPUT type="checkbox" name="pays[]" value="'.$valeur1['pays'].'">'.$valeur1['pays'].'</td></tr> '; 
				  }
		 		} 
		}
		
		

Donc les pays coché s'affiche bien, mais tous les pays sont en double (car j'ai 2 pays coché, du coup avec le for ça affiche tous les pays 2 fois).

Comment faire pour affiquer qu'une fois les pays non coché ??

Merci d'avance pour vos réponses !

Posté : 20 juil. 2007, 17:26
par Ryle
Tu te compliques beaucoup trop la vie :)

Tu as un tableau contenant les id des pays sélectionnée et une boucle while qui te retourne un a un tous les pays. Tout ce que tu as à faire c'est tester pour chacun de ces pays si son id est contenu dans ton tableau pour ajouter ou non l'attribut checked :
while (....) {
  $check = '';
  if (isSet($tab) && in_array($row['id'], $tab) ) // si la case doit être cochée
    $check = 'checked'; // on spécifie l'attribut

  echo '<input type="checkbox" value="'.$row['id'].'" ... '.$check.' />'; // on affiche la case qui sera cochée ou non en fonction du test ci dessus
}

Posté : 23 juil. 2007, 12:06
par angebleu17
Merci pour ta réponse :wink:
En effet je me complique pour rien..