Probléme affichage case à cocher!!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probléme affichage case à cocher!!

par angebleu17 » 23 juil. 2007, 12:06

Merci pour ta réponse :wink:
En effet je me complique pour rien..

par Ryle » 20 juil. 2007, 17:26

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
}

Probléme affichage case à cocher!!

par angebleu17 » 20 juil. 2007, 17:02

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 !