checked et array

Petit nouveau ! | 3 Messages

24 mai 2009, 21:15

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

Mammouth du PHP | 1339 Messages

24 mai 2009, 23:41

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' !
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Petit nouveau ! | 3 Messages

26 mai 2009, 00:17

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

?>

Mammouth du PHP | 1339 Messages

26 mai 2009, 00:20

Met la page en ligne...
Et le fichier PHP téléchargeable

Et paf ca fait des chocapic
Bon sinon tu me fais un message privé et on se fait un TeamViewer

Petit nouveau ! | 3 Messages

26 mai 2009, 01:14

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