passer une variable ARRAY dans post - un détail encore!

Eléphant du PHP | 139 Messages

02 oct. 2011, 09:25

Je me suis résigné à faire une série d'entrées pour chacun de mes choix comme dans l'exemple qui m'avait été donné. Je vais tenter d'améliorer le tout après l'impression des bulletins dans 2 semaines. En attendant, j'avance. La dernière chose qu'il me manque pour mon script est la chose suivante:

Comment faire pour que lorsque l'utilisateur ouvre le formulaire une deuxième fois (pour modifier une entrée par exemple), il voit dans le choix multiple, le précédent choix qu'il avait fait. je le fais apparaitre pour les autres variables.

Voici où j'en suis avec mon script. Vous verrez que ça s'améliore... Je l'espère!
<?php
session_start();





if (xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
{
    $username 	= ($_SESSION['username']);
	$id_groupe 	= (isset($_POST['id_groupe']))?	$_POST['id_groupe']:null; 
	$matiere	=($_POST['matiere']);






	if ($matiere =="")
		{
			echo "Vous n'avez pas entré la matière.  Veuillez appuyer sur précédent.";
			exit();
			break;
		}
	else
		{}
	
	include ('entete_admin.html');
    include ('connexion au serveur.php');
    
    echo('<link rel="stylesheet" type="text/css" href="styles_perso.css">');



{   

	$sql = 
        "
        SELECT user_id, prenom, nom 
        FROM table_intervenant
        WHERE username='$username'
        ";
     
    $req = mysql_query($sql);  
        while($data = mysql_fetch_assoc($req))  
        {
          $nom_enseignant=$data["nom"].", ".$data["prenom"]; 
          $id_enseignant=$data["user_id"]; 
        }  

}



// *******************************************************************************

	if (isset($_POST['submit3']))
 		{
    		$id_groupe=$_POST['id_groupe'];	    	
	        $id_matiere=$_POST['matiere'];	    	
	        $nom_enseignant=$_POST['nom_enseignant'];	    	
	        $id_enseignant=$_POST['id_enseignant'];	    	


	    	$rq = 
	    		"
	    		SELECT $username.id_eleve, liste_eleves.nom 
	            FROM $username
	            INNER JOIN liste_eleves ON $username.id_eleve=liste_eleves.id_eleve
	            WHERE id_matiere='$id_groupe'
	            ORDER BY liste_eleves.nom
	           	";
	    	$result = mysql_query ($rq);	
			$tableau_resultats = array();
   		 	echo "</br>";
   		 	while ($ligne = mysql_fetch_assoc($result))
    		
    		{       
    	    	
    	    	$nom_eleve = $ligne['nom'];
    	    	$id_eleve = $ligne['id_eleve'];       
    	    	$nom_var = "individu_".$id_eleve."[]";
    	    	$nom_com_menu = "commentaire_menu_$id_eleve";
    	    	$nom_note  = "note_$id_eleve";
    	    	$nom_com ="commentaire_$id_eleve";
    	    	$note = $_POST[$nom_note];
    	    	$commentaire = $_POST[$nom_com];
    	    	$comm_menu = $_POST[$nom_com_menu];
    	    	$tableau_resultats[$id_eleve] ['id'] = $id_eleve;
    	    	$tableau_resultats[$id_eleve] ['note'] = $note;
    	    	$tableau_resultats[$id_eleve] ['comm'] = $commentaire;
    	    	$tableau_resultats[$id_eleve] ['comm_menu'] = $comm_menu;
			
			
			 	
				$verif=		"
							SELECT *
							FROM octobre
							WHERE (id_enseignant='$id_enseignant' AND groupe='$id_groupe' AND id_eleve='$id_eleve')";

				$res_verif = mysql_query ($verif);
				
				if (mysql_num_rows($res_verif) != 0) 
					{
						while ($ligne_modif = mysql_fetch_assoc($res_verif))	
    						{           
 								$no_modif=$ligne_modif['no'];
								$rq2 = 	"
                        				UPDATE octobre 
                        				SET 
                        				commentaire='$commentaire', 
                        				commentaire_menu='$comm_menu', 
                        				note='$note', 
                        				matiere='$id_matiere'
                						WHERE no = '$no_modif'
                						";
                				$res2 = mysql_query ($rq2) or die (mysql_error());					
                			}	
					}
				
 		 		
 		 		else
			 		{ 
			 
						$rq = 	"
                        		INSERT INTO octobre 
                        		(id_eleve, id_enseignant, matiere, commentaire, commentaire_menu, note, nom_enseignant, nom_eleve, groupe, fait) 
                        
                    			VALUES 
                    			('$id_eleve', '$id_enseignant', '$id_matiere', '$commentaire', '$comm_menu', '$note', '$nom_enseignant', '$nom_eleve', '$id_groupe', '1')";
                		$res = mysql_query ($rq) or die (mysql_error());
                    }
 		 		
 		 		
		}
		print_r($tableau_resultats);
			exit();
			break;        	
       
}

// ************************************************************
?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

    <p class = "Section">Communication d'octobre</p>
    <p class = "Section"><?php echo"Matière (".$matiere.") -  Groupe ".$id_groupe;?></p>
    <p class = "Section"><?php echo"Enseignant : "."$nom_enseignant"?></p>
    <fieldset>


<?php  


	$verif=		"
				SELECT *
				FROM octobre
				WHERE (id_enseignant='$id_enseignant' AND groupe='$id_groupe')";

	$res_verif = mysql_query ($verif);
	
	
	$tableau_old = array();
   	echo "</br>";
   	while ($ligne_old = mysql_fetch_assoc($res_verif))	
    		{       
 	    		$id_eleve = $ligne_old['id_eleve'];       
 				$note = $ligne_old['note'];       
 				$commentaire = $ligne_old['commentaire'];       
  				$commentaire_menu = $ligne_old['commentaire_menu'];       
    	    	$tableau_old[$id_eleve] ['id'] = $id_eleve;
    	    	$tableau_old[$id_eleve] ['note'] = $note;
    	    	$tableau_old[$id_eleve] ['comm'] = $commentaire;
    	    	$tableau_old[$id_eleve] ['comm_menu'] = $commentaire_menu;
			}			



$select_partiel = "	<option></option>
					<option>Mérite des félicitation</option>
					<option>Manque d'efforts</option>
					<option>Travaille bien</option></select>";
	 
  
{
	 $sqlcom =	'SELECT commentaire
			 	FROM table_commentaires
			 	ORDER BY positif DESC, commentaire ASC
				';
	$reqcom = mysql_query($sqlcom) or die('Erreur SQL !<br><font size="2">'.$sqlcom.'<br>'.mysql_error()); 

	$select = '<select name="commentaire"><option selected="selected"></option>';
	while($datacom = mysql_fetch_assoc($reqcom)) 
	   {
	        $commentaire=$datacom['commentaire'];
	        $select .= '<option value="'.$commentaire.'">'.$commentaire.'</option>'."\n";
	   } 
	$select_partiel .= '</select>'; 
}
{
    $reqaff = 	" 
    			SELECT $username.id_eleve, id_matiere, liste_eleves.nom, liste_eleves.id_eleve  
            	FROM $username
            	INNER JOIN liste_eleves ON $username.id_eleve=liste_eleves.id_eleve
            	WHERE id_matiere='$id_groupe'
            	ORDER BY liste_eleves.nom
           		";
    $resultaff = mysql_query ($reqaff);
 }
    while ($ligne = mysql_fetch_assoc($resultaff))
        {       
            $id_eleve	=$ligne['id_eleve'];    
            $nom_eleve	=$ligne['nom'];
            $groupe		=$ligne['groupe'];
            $nom_var 	="individu_".$id_eleve."[]";
			$nom_com_menu="commentaire_menu_$id_eleve";
			$nom_note 	="note_$id_eleve";
			$nom_com	="commentaire_$id_eleve";
			$select		="<select name = '$nom_com_menu' >".$select_partiel;


			echo "<br>";
    		echo 	"<font face=Arial size=2>
        			<table align='left' cellspacing='2' cellpadding='2'><tr>
              		<td align='left' width ='150'><b>Nom de l'élève</b></td>
              		<td align='left'><b>Résultat</b></td>
              		<td align='left'><b>Commentaires</b></td>
              		<td align='left'><b>Commentaires prédéfinis</b></td>
            		</tr>
					<tr>
					<td align='left' valign='top'>$nom_eleve</td>
					<td align='left' valign='top'><input type='text' maxlength='3' size='3' name=".$nom_note." value=".$tableau_old[$id_eleve]['note']."></td>
					<td align='left'><textarea name='$nom_com' rows='8' cols='50'>".$tableau_old[$id_eleve]['comm']."</textarea></td>
					<td align='left' valign='top'>".$select."</td>
					</tr></font></table>";
      
      }

 	mysql_close(); 

?>
    </fieldset>
    <div align="center">
    <input type="submit" name="submit3" value="Valider les entrées" />
    </div>
    <input type="hidden" name="id_groupe" value="<?php echo $id_groupe;?>" />
    <input type="hidden" name="matiere" value="<?php echo $matiere;?>" />
    <input type="hidden" name="nom_enseignant" value="<?php echo $nom_enseignant;?>" />
    <input type="hidden" name="id_enseignant" value="<?php echo $id_enseignant;?>" />

    </form>

<?php

}
else
  { 
    echo"vous n'avez pas d'affaire ici !";
    exit;
  }
?>

Mammouth du PHP | 2278 Messages

02 oct. 2011, 15:01

variante (mais je ne sais pas intégrer le select, alors je passe par des radio boutons
<?PHP
$liste = array(
	array("id" =>114, "nom"=>"toto"),
	array("id" =>211, "nom"=>"toton"),	
	array("id" =>331, "nom"=>"totoche")
	);
	$comment_standard = array(
		 "NUL",
		"Très insuffisant",
		"Insuffisant",
		 "Passable",
		"Assez bien",
		"Bien",
		"Très bien"
	);
print "<form method = 'post' action = 'verifier.php'><table>";
print "<table>
<tr><th>nom</th><th>note</th><th>commentaire personnel</th><th>commentaire standardisé</th></tr>";
foreach ($liste as $eleve)
{
	$id_eleve = $eleve['id'];	
	$nom_eleve = $eleve['nom'];
	$comm_std = "";
	$commentaire = "commentaire_standard";
	foreach($comment_standard as $comment)
	{
		$comm_std .= "<input type = 'radio' value = '$comment' name = 'lignes[$id_eleve][4]' />$comment<br />";
	}
	 // le champ hidden pour identifier clairement la ligne
	print "<tr><td align='left' valign='top'>$nom_eleve</td>
           <td align='left' valign='top'><input type='hidden' name='lignes[$id_eleve][1]' size='3' maxlength = '3' value = '$id_eleve' />
           <input type='text' name='lignes[$id_eleve][2]' size='3' maxlength = '3'/></td> 
          <td align='left'><textarea name='lignes[$id_eleve][3]' rows='8' cols='50'></textarea></td>
   	  <td align='left' valign='top'>$comm_std</td></tr>";

}
print "</table>
<button type = 'submit'>OK</button>
</form>
";	
?>
suivie de :
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">

<html lang = "fr">

<META http-equiv = 'Content-Type' content = 'text/html; charset = utf-8'>



<?PHP

$resultats = $_POST['lignes'];

foreach ($resultats as $ligne)

{

	$id = $ligne[1];

	$note= $ligne[2];

	$comm_perso = $ligne[3];

	$comm_std = isset($ligne[4]) ? $ligne[4] : "";

print "pour id $id, note: $note, comm perso $comm_perso, com std $comm_std <br />";

}





?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 25 Messages

31 oct. 2022, 14:26

Ah ah !

Avec des recherches, de la réflexion et votre aide précieuse j'ai modifié mon code comme cela :
<?php
//Je reprends la données nombre de note à saisir pour afficher autant de input que de notes

if (isset($_POST['Envoyer'])) {
    $nbNotes = $_POST['nbnote'];
    echo '</br>';
    echo "Le nombre de note à renseigner est : " . "<strong> $nbNotes </strong>" . "</br>";
    echo '</br>';
    echo '<form action ="#" method = "POST">';
    echo '<fieldset>';
    echo '<legend>Entrer les notes</legend>';
    if ($i <= $nbNotes) {
        for ($i = 1; $i <= $nbNotes; $i++) {
// je place les notes reçues dans un tableau
            echo 'Entrer la note :  <input type="number" id="name" name="note[]" min="0" max="20"></br>';

        }
        echo '</br>';

        echo '<input type="submit" name="Calcul">';
        echo '<input id="nbNotes" name="nbNotes" type="hidden" value="' . $nbNotes . ' >';
        echo '</fieldset>';
    }
    echo '</form>';
}

if (isset($_POST['Calcul'])) {
    //je boucle sur le tableau

    foreach ($_POST['note'] as $note) {
        echo $note;
    }
}

// le problème c'est que je ne vois que la 2ème note saisie.
Du coup je récupère bien les notes :)
Je vais tenter maintenant de faire la moyenne sur cette base mais je pense que je vais me heurter au pb du nbNote.

Bref, je continue ma recherche