Page 1 sur 1

checked et array

Posté : 24 mai 2009, 21:15
par missz
Bonjour à tous !

Bon avant de poster j'ai quand même fait des recherches, mais comme j'arrive vraiment pas à trouver la solution je me tourne vers vous.

Je souhaite sélectionner dans ma base les styles que le membre a choisis, et checked les cases correspondantes dans mon formulaire pour modifier le profil. Je ne comprends pas pourquoi cette formule ne fonctionne pas, j'ai qu'une case de sélectionnée et pas les autres. A savoir $stylesm correspond aux infos récupérées à partir de ma base de données.
$i = 0; 
$stylesm2 = explode(",",$stylesm);

$styles = array("Fashion", "Portrait", "Nu", "Nature");

while($i  < count($styles)) 
{
foreach($stylesm2 as $nombre) 
{	
      	if ($nombre==$styles[$i])
		   {   $check="checked"; 
        }else{ 
            $check=""; 
	  }
echo "<p><input name='styles[]' id='$styles[$i]' value='$styles[$i]' type='checkbox' $check/>$styles[$i]</p>";  
$i++;}}

Posté : 24 mai 2009, 23:41
par Elie
Code vraiment bien moche :)
$stylesm2 = explode(',', $stylesm);

$styles = array('Fashion', 'Portrait', 'Nu', 'Nature');

for($i=0;$i<count($styles);$i++) {
	
	foreach($stylesm2 as $nombre) {  
	
	$check = ($nombre == $styles[$i]) ? ' checked="checked"' : NULL;

	echo '<p><input name="styles[]" id="'.$styles[$i].'" value="'.$styles[$i].'" type="checkbox"'.$check.' />'.$styles[$i].'</p>';  
	}
} 
J'adore clean les codes donc t'as de la chance ...
Voici une version beaugoss' !

Posté : 26 mai 2009, 00:17
par missz
Merci pour le clean mais ça ne donne rien... cette fois ci les styles sont répétés trois fois et y'en a toujours qu'un qui est checké (le premier). Sinon, j'ai essayé une autre technique et ça ne marche toujours pas, mais je ne vois pas du tout d'où vient le problème. Quelqu'un pourrait il m'éclairer :-(
<?php 
$i = 0; 
$stylesm2 = explode(",",$stylesm);
$styles = array("Fashion", "Portrait", "Nu", "Nature");

while($i  < count($styles)) 
{
if (in_array($styles[$i], $stylesm2)) {
            $check="checked"; 
        }else{ 
            $check=""; 
             } 		
	  
echo "<p style='color:#00CC33'><input name='styles[]' id='$styles[$i]' value='$styles[$i]' type='checkbox' $check/>$styles[$i]</p>";  
$i++;}

?>

Posté : 26 mai 2009, 00:20
par Elie
Met la page en ligne...
Et le fichier PHP téléchargeable

Et paf ca fait des chocapic

Posté : 26 mai 2009, 01:14
par missz
j'ai trouvé ! le problème venait

$stylesm2 = explode(",",$stylesm);

il fallait mettre un espace après la virgule
$stylesm2 = explode(", ",$stylesm);

c'était tout con mais ça m'a bien prit la tête merci en tout cas et je vais prendre tes conseils pour rendre mes codes plus propres :D