8710 sujets

Développement web côté serveur, CMS

slt à tous,
le blem qui m’amène et compliqué a expliqué mais je vais essayer.
le code est extrait d'un formulaire d'Update.

le but est d'afficher les cases cocher par rapport a un array qui a été construit via une bdd. ca cela fonctionne
le code
// construction du array (se sont des id dedans)
$requete4 = "SELECT * FROM droit WHERE userID='$iduser'"; 
$ret4 = mysql_query($requete4);

$parametres = array();
while($data4 = mysql_fetch_array($ret4)) 	
{	
        $parametres[] = $data4['programmeID'];
	$go = count($parametres);
	$go =$go-1;		
}
$requete = "SELECT promoteur, id, nom FROM programme ORDER BY promoteur"; 
$ret = mysql_query($requete);
$initialisation=null;	
while($data = mysql_fetch_array($ret)) 	
{
	$id="$data[id]";
	$promoteur="$data[promoteur]";	
	$nom="$data[nom]";
	if (empty($initialisation) OR $initialisation!=$data['promoteur'] ) {
                echo $promoteur.'<br/>'; //affiche
		$initialisation = $promoteur;
	}
	for($i=0;$i<=$go;$i++){
		$fin = $parametres[$i];
		if( $fin == $id ){echo "<input type='checkbox' name='choix[]' value='$id' checked='checked' />$nom <br />";
		}else {
			echo "<input type='checkbox' name='choix[]' value='$id'  />$nom <br />";
		}
	}
}
echo "</td></tr></table>";


la, le souci c'est qu'en fonction de mon array cela me répète les checkbox vides du nombre de fois contenu dans le array (le $go).
Je voudrais que la boucle face apparaitre les checkbox soient pleine ou soit vide.

Un peu d'aide serait la bienvenue.

Merci
Salut,

Ou est stocké l'information comme quoi ton programme a des checkbox de coché ?

Note : Tu te complique la vie en faisant un count + for($i=0;$i<=$go;$i++){.
Utilise foreach ($parametres => $date) { à la place.
benj a écrit :
Salut,
Ou est stocké l'information comme quoi ton programme a des checkbox de coché ?

nul part, pour faire simple il y a un bdd "droit" dans laquelle sont stocké les autorisations d’accès a des programmes
ID | programmeID | userID

étant donnée que c'est un page de mise a jour (update), je dois pouvoir afficher des checkbox qui seront coché ou non en fonction des autorisations de la bdd "droit"
exemple :
ID | programmeID | userID
1 | 5 | 4
2 | 7 | 4
3 | 6 | 4
l'utilisateur dont l'ID est 4 a accés aux programmes 5 et 7 et 6

il faut que lors de la création de toutes les checkbox, les checkbox ayant la value=5 et la value =7
value =6 soit cochée mais pas les précédent ni les suivante.

les valeurs des value des checkbox étant récupérer dans un autre bdd "programmes" c'est l'ID de chaque programme que l'on retrouve bien sur dans la bdd"droit" champs programmeID

j’espère avoir été claire mêmé si c'est pas évident a expliquer...
je galère cela fait 1 journée que je suis la dessus ... c'est la mort.

PS : le dernier code


		$requete4 = "SELECT * FROM droit WHERE userID='$iduser'"; 
		$ret4 = mysql_query($requete4);

		$parametres = array();
		while($data4 = mysql_fetch_array($ret4)) 	
		{	
        $parametres[] = $data4['programmeID'];
		$go = count($parametres);
		$go =$go-1;	

		}
		
	$requete = "SELECT promoteur, id, nom FROM programme ORDER BY promoteur"; 
		$ret = mysql_query($requete);
		$initialisation=null;	
		while($data = mysql_fetch_array($ret)) 	
		{
		$id="$data[id]";
		$promoteur="$data[promoteur]";	
		$nom="$data[nom]";
		if (empty($initialisation) OR $initialisation!=$data['promoteur'] ) {

               echo $promoteur.'<br/>'; //affiche
			   $initialisation = $promoteur;
        
		}
    for($i=0;$i<=$go;$i++){
     $fin = $parametres[$i];
		
		if( $fin == $id ){
		echo "<input type='checkbox' name='choix[]' value='$id' checked='checked' />$nom <br />";}
}
}
			echo "<input type='checkbox' name='choix[]' value='$id' /> $nom <br />";
			
}

cela affiche :
PROMOTEUR1
[ ]RESIDENCE SAINT JAMES
[ ]RESIDENCE MONTEVERDI
[ ]JARDINS D'ATHENA
[x]RESIDENCE GAMBETTA

PROMOTEUR2
[x]LES TERRASSES DU MADRAN
[ ]LES TERRASSES DU MADRAN

PROMOTEUR3
[ ]RESIDENCE DES LIERRES

PROMOTEUR4
[x]LES TERRASSES D'ARCINS
[ ]LES TERRASSES D'ARCINS
Modifié par spawns (10 Oct 2013 - 19:01)
Je ne suis pas sur d'avoir tout compris. Mais j'essaie...

$requete4 = "SELECT * FROM droit WHERE userID='$iduser'"; 
$ret4 = mysql_query($requete4);

$parametres = array();
while($data4 = mysql_fetch_array($ret4)) 	
{	
        $parametres[] = $data4['programmeID'];
}
$requete = "SELECT promoteur, id, nom FROM programme ORDER BY promoteur"; 
$ret = mysql_query($requete);
while($data = mysql_fetch_array($ret)) 	
{
       $checked = in_array($data['id'], $parametres) ? 'checked="checked"' : '';
	echo '<input type="checkbox" name="choix[]" value="'.$data['id'].'" '.$checked.'  />'.$data['nom].'<br />';

}
OHOH Enorme Benj trop fort
c'est exactement ce que je cherchais à faire depuis une journée, tu me sort de la M...
c'est le in_array que je ne connaissais pas.

Grand merci à toi.
Si je peux t'aider en quoi que ce soit n'hésite pas (pas en dev Smiley smile plutot en webdesign)