Page 1 sur 1

Problème de Array

Posté : 18 août 2012, 00:09
par dick-perron
Bonjour, j'ai un petit problème. j'essaie de récupérer les données d'un formulaire qui affiche une liste de noms. À côté de chaque nom, on a une case à cocher pour identifier les coupables d'une faute et une case à cocher si celui-ci mérite une retenue. Je tente ensuite de récupérer avec un array mes valeurs
	 	while ($ligne = mysql_fetch_array($result, MYSQL_NUM))
				{		
		 		 $nom_eleve= "$ligne[0]";
		 		 $id_eleve= "$ligne[2]";
		 		 $i=$i+1;

			    	{ $bg = ($bg=='#dddddd' ? '#ffffff' : '#dddddd');
			      
				    echo "<tr>";
				    echo "<td align='left' bgcolor='$bg'>".$i."</td>";
				    echo "<td align='left' bgcolor='$bg'>".$nom_eleve,"</td>";
				    echo "<td align='left' bgcolor='$bg'>".$ligne[2],"</td>";
					echo "<td align='center' bgcolor='$bg'><input type='checkbox' name='coupable[]' value='$ligne[1]'></td>";
					echo "<td align='center' bgcolor='$bg'><input type='checkbox' name='retenue[]' value='$ligne[1]'></td>";
	

$coupable = (isset($_POST['coupable']))?$_POST['coupable']:null;  
        
        if (!empty($coupable)) 
            {  
                        
            $liste_coupable = implode(', ',$liste_coupable);
            
                
                {  
            
            
            echo "<P class='Section'>Vous avez attribué aux élèves suivants un rapport dont le motif est : ".$motif."</P>";
        	
       	  	include ('server_connect.php');
     
            foreach($coupable as $cle => $valeur) 
                
                {  ...
      
Mon problème est que je ne trouve pas comment déterminer si l'individu 1 (qui est coupable!) reçoit une retenue. ça fait au moins deux heures que je lis sur le sujet et je n'ai rien encore trouvé. Alors pendant que je continue à lire, je prends le risque que quelqu'un ait quelques minutes à m'accorder. En passant, s'il y avait moyen de remplacer la case à cocher RETENUE par une valeur qui puisse être différente pour chacun, ce serait encore mieux.

Re: Problème de Array

Posté : 18 août 2012, 00:34
par moogli
salut,


passe les id_eleve dans les values des checkbox, et dans la validations tu n'auras les que "id eleve" qui ont étaient cochées pour chaque type de case.

pour le remplacement de la case retenu il te faut définir un peu mieux ce que tu veux parce que la c'est flou :mrgreen:


@+

Re: Problème de Array

Posté : 18 août 2012, 00:51
par dick-perron
Présentement, dans le haut du formulaire, j'ai un champs durée de la retenue où j'entre la durée de la retenue. Ensuite si l'utilisateur coche la case, l'élève fautif a une retenue de cette durée. Le problème avec ma façon de procéder est que tout le monde a une durée de la même longueur. Parfois, un élève est rendu à sa huitième faute de l'année et un autre à sa deuxième. L'enseignant pourrait alors attribuer une retenue un peu plus longue au premier.

Si je garde les checkbox, dois-je absolument faire une boucle dans une boucle pour savoir si un individu fautif (première boucle) a une retenue (deuxième boucle)? J'aurais aimé valider avec quelque chose du genre if isset $POST[retenue[$valeur]] inserer dans blabla une retenue de durée $duree directement dans la première boucle. Donc si je résume, Une boucle qui identifie les coupables suivi d'une validation if isset ou if!empty ou ???

Peut-être aussi que je pourrais crééer une variable $entree['id_eleve', 'coupable', 'retenue'] avec coupable = oui ou non et retenue = durée. Si ça se fait, comment je fais pour savoir si l'élève 4 est coupable et s'il a une retenue?

Voilà où j'en suis...Je continue de chercher!

Re: Problème de Array

Posté : 18 août 2012, 08:38
par sirakawa
Bonjour

D'abord tu pourrais corriger ton code:
<?PHP
//liste simule la table consultée
$liste = array (
array ("toto", 1,1),
array("titi",2,2),
array("charlot",3,3));
//il faut une valeur initiale à $i
$i=1;
/*il faut une valeur initiale à $bg*/
$bg = '#ffffff';
/*il faut commencer le tableau*/
echo "<table>";
// remettre le while d'origine
while ($ligne = current($liste))
{              
 	$nom_eleve= "$ligne[0]";
 	$id_eleve= "$ligne[2]";
 	
	//ce ne serait pas du luxe de corriger les erreurs comme ci-dessous (reste de if ???)
/*{*/ $bg = ($bg=='#dddddd') ? '#ffffff' : '#dddddd';

    echo "<tr>";
    echo "<td align='left' bgcolor='$bg'>".$i."</td>";
    echo "<td align='left' bgcolor='$bg'>".$nom_eleve,"</td>";
    echo "<td align='left' bgcolor='$bg'>".$ligne[2],"</td>";
    echo "<td align='center' bgcolor='$bg'><input type='checkbox' name='coupable[]' value='$ligne[1]'></td>";
      /* il faut peut-être mettre un </tr> après chaque élève???*/  
    echo "<td align='center' bgcolor='$bg'><input type='checkbox' name='retenue[]' value='$ligne[1]'></td></tr>";
    //déplacé 
    $i++;
	//supprimer ci-dessous
    next ($liste);
}
?>
ensuite, il sufit de travailler avec des tableaux dans le formulaire :
http://fr2.php.net/manual/fr/faq.html.p ... tml.arrays
Si tu ne comprends pas, j'aurai un code à montrer.