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

Eléphant du PHP | 139 Messages

28 sept. 2011, 22:24

Bonjour, j'ai un petit soucis.

J'ai un formulaire dans lequel j'ai une liste d'élèves qui apparait. À côté du nom de chaque élève apparait une case pour entrer le résultat, un autre pour les commentaires, un autre pour le nombre d'absences, etc... L'utilisateur complète les données pour chacun de ses élèves puis soumet le formulaire. Je reçois ensuite les données pour les entrer dans une base de données.

1- Suis-je mieux de me créer une variable array $entree avec (nom_eleve, resultat, commentaire, etc...) pour la passer en boucle ou une série de variables entree[nom], entree[resultat], etc...

2- Quelle est la façon la plus simple de la retourner par POST? avec serialize?

Merci de votre aide

Dick Perron
Modifié en dernier par dick-perron le 01 oct. 2011, 21:01, modifié 4 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 sept. 2011, 22:31

salut,

le plus simple, je pense, est l'utilisation de la notation tableau pour tous les éléments de chaque élèves et de boucler dessus.

Pour être certain qu'il n'y ai pas de problème il est possible de mettre l'identifiant de l'élève en index par exemple <input type="text" name="nom[412]" />

le 412 représente la clef primaire de l'élève

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 6 Messages

28 sept. 2011, 22:38

Le mieux serait de nommer tes champs input de la manière suivante :

Code : Tout sélectionner

<input type="text" name="nom[]" />
Le [] permet de récupérer ta variable sous forme d'un array :

Code : Tout sélectionner

<?php //affichage de mon tableau de nom foreach($_POST['nom'] as $nom) { //Affichage de la value renseignée echo $nom; } ?>
Tu peux aussi compléter par ce qu'a mis moogli mais il faudra dans ton foreach récupérer la clé également

Code : Tout sélectionner

<?php //affichage de mon tableau de nom foreach($_POST['nom'] as $key=>$nom) { //Affichage de la value renseignée echo 'L'élève numéro ' . $key . ' a pour nom ' . $nom; } ?> Le problème sera néanmoins présent si certains de tes champs sont vides.
Tu fais pareil pour tous tes champs

Code : Tout sélectionner

resultat[] commentaire[] nombreAbsences[]
As-tu des champs qui sont susceptibles d'être vides à l'envoi ?

Si oui il faudrait modifier un peu le code mais c'est un peu plus compliqué. :D

Eléphant du PHP | 139 Messages

28 sept. 2011, 23:05

Oui, je pensais les faire vérifier avec des if isset. Et je dois aussi m'assurer qu'un utilisateur puisse remplir le formulaire en plus d'une session avec une réécriture des données déjà dans la base de données.

Eléphant du PHP | 139 Messages

29 sept. 2011, 06:21

J'ai beau essayer, je n'y arrive pas. Je vais tenter d'être plus clair.
1- je fais une requête qui me sort le nom de l'élève, son groupe et son id
2- pour chacun des élèves, j'entre des données.
http://absences.csmcn.qc.ca/image.tiff
3- J'envoie ensuite mes données par POST à un autre script dans lequel j'insere toutes les données dans sql.

J'ai essayé avec les méthodes proposées, mais je ne récupère qu'une donnée à la fois. Je voudrais bien avoir une variable array, genre entree[1] qui contient les enregistrement du premier élève (son nom, son résultat, le commentaire, etc.) puis entree[2] qui contient les données du deuxième.

J'arrive à la faire sans le POST si j'attribue des valeurs manuellement, mais avec post, je n'arrive pas à récupérer les données. Voici un exemple plus simple qui, s'il fonctionne pourra être généralisé à mon script plus complexe.
...

if (isset($_POST['submit2'])) 
	{
	
	********* Comment je récupère resultat[1], commentaire[1]
								  resultat[2], commentaire[2]
									...
    ***********************************************************


	}



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

for ($i=1; $i<=3; $i++)
	{   
    echo '<td align="left"><input type="text" name="resultat[]" size="3" maxlength = "3"/><br></td>
          <td align="left"><textarea name="commentaire[]"rows="8" cols="50"></textarea></td>';
	}	

?>

	<input type="hidden" name="resultat[]" value="<?php echo $resultat;?>"/> 
	<input type="hidden" name="commentaire[]" value="<?php echo $commentaire;?>"/> 

    <div align="center">
    <input type="submit" name="submit2" value="Valider les commentaires" />
    </div>
    </form>

Mammouth du PHP | 2278 Messages

29 sept. 2011, 10:22

Bonjour,
essaie ça:
<?PHP
$liste = array(
	array("id" =>114, "nom"=>"toto"),
	array("id" =>211, "nom"=>"toton"),	
	array("id" =>331, "nom"=>"totoche")
	); // pour pouvoir tester simule la bdd
$i=1;
$chaine = "";
foreach ($liste as $eleve)
{
	$nom = $eleve['nom'];
	$id = $eleve['id'];	
	$nom_var = "individu_".$id."[]";
	$chaine .= "
	<p>
	<input type = 'text' readonly = 'readonly' name ='$nom_var' value = '$id' />
	<input type = 'text' readonly = 'readonly' name ='$nom_var'  value='$nom' />
	<input type = 'text' name ='$nom_var'  />
	<textarea type = 'text' name ='$nom_var' > </textarea>";
	$i++;
}
print "
<form method = 'post' action = 'verifier.php'>
$chaine
<button type = 'submit'>OK</button>
</form>
";	

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

Eléphant du PHP | 139 Messages

29 sept. 2011, 16:09

L'exemple donné est super. Ça m'a fait avancer un peu...merci! Je ne suis toutefois pas sorti du bois. Dans le script verifier.php, comment je récupère la variable $chaine? Je veux être capable de faire une requête du style:

insert into .....
value (id_eleve, nom_eleve, resultat, commentaire, enseignant)

dans une boucle pour toutes les lignes de $chaine.

Eléphant du PHP | 139 Messages

29 sept. 2011, 17:10

Est-ce que le plus simple serait de faire une boucle du genre
Code :
$i=0;
while($tabl[$i]) {
$var = "var".$i;
$$var = $tabl[$i];
$i++;
}


et après récupérer avec $var0, $var1, ...
J'aurais une variable eleve1[nom, id, resultat,...], eleve2[.....], etc

Si oui, comment je pousse cette (ou ces??) variable par POST. Et comment je les récupère avant de faire une boucle dans le deuxième fichier?

Eléphant du PHP | 139 Messages

29 sept. 2011, 17:51

Je vais arrêter de donner des exemples bidons et vous donner mon vrai script, ce sera surement plus simple...J'ai enlevé les parties inutiles....
<?php
...
ici il y a plein de choses mais ce bout là va bien!...
....

    if (isset($_POST['submit2'])) 
        {    
               
*************************************C'est là que j'ai un problème******************************




           $rq = "
                   INSERT INTO octobre (id_eleve, id_enseignant, matiere, commentaire, resultat, nom_enseignant, nom_eleve, groupe) 
                   VALUES ($id_eleve, $id_enseignant, $id_groupe,$commentaire, $resultat, $nom_enseignant, $nom_eleve, $groupe)";
            $result = @mysql_query ($rq) or die (mysql_error());
            mysql_close();
     }
?>

********************** Mon formulaire commence ici!  Je l'envoie dans le fichier, mais je pourrais l'envoyer à un autre si c'est mieux*************************

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

    <p class = "Section">Communication d'octobre</p>
    <fieldset>


<?php  
      include ('connexion au serveur.php');
 
*********************je fais afficher la liste des élèves (dans SQL) pour lesquels on rempli le formulaire *******************************
********** $username est la table de l'enseignant qui contient le id ses élèves et liste_eleves est la table qui contient tous les élèves de l'école


     $rq = " 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
           ";
    $result = mysql_query ($rq);
 	echo "<br>";

******************* entête du tableau ***************************

    echo "<font face=Arial size=2>
        <table align='left' cellspacing='2' cellpadding='2'>
            <tr>
              <td align='left'><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>Choix de réponses!</b></td>
            </tr></font>";

*********************** Formulaire à remplir ... je sais que ce bout là est problématique **************************************************  

  while ($ligne = mysql_fetch_array($result, MYSQL_NUM))
        {       
            $nom_eleve=$ligne[2];
            $groupe=$ligne[1];    
            $id_eleve=$ligne[3];    

            echo '<td align="left" valign="top">'.$nom_eleve.'</td>
                  <td align="left" valign="top"><input type="text" name="resultat" size="3" maxlength = "3"/><br></td>
                  <td align="left"><textarea name="commentaire"rows="8" cols="50"></textarea></td>';

            include ('connexion au serveur.php');
            $sql2 = 
                "
                SELECT commentaire 
                FROM table_commentaires 
                ORDER BY positif DESC, commentaire ASC
                ";
     
            $req2 = mysql_query($sql2) or die('Erreur SQL !<br><font size="2">'.$sql2.'<br>'.mysql_error());  
                echo '<td align="left" valign="top"><SELECT name="commentaire">'; 
                echo '<OPTION selected></OPTION>'; 
                while($data2 = mysql_fetch_row($req2))  
                   {
                     $commentaire=$data2[0]; 
                     echo '<OPTION value="'.$commentaire.'">'.$commentaire.'</OPTION>';
                   }  
                echo '</SELECT></td></tr>';   


*************** Là j'essaie d'envoyer les données saisies à l'autre partie de mon fichier qui traite les données ... je pourrais aussi l'envoyer dans un autre fichier *****

			$entree = array('nom'=>'$nom_eleve', 'nom'=>'$groupe','nom'=>'$id_eleve','nom'=>'$resultat','nom'=>'$commentaire_texte','nom'=>'$commentaire_choix');

        }
        
    echo '</table>'; 
    mysql_close(); 
 

?>
    
    </fieldset>
    <div align="center">
    <input type="submit" name="submit2" value="Valider les commentaires" />
    </div>
    </form>
    
Modifié en dernier par dick-perron le 29 sept. 2011, 21:16, modifié 1 fois.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 sept. 2011, 20:01

Peux tu utiliser la balise
 plutot que [code] afin de coloriser ton code ? cela permet de mieux voir ce qui ce passe ;)

je vais mettre les commentaires suivant lecture du code de haut en bas (risque de mélange ^^)
- ligne 14 : $result = @mysql_query ($rq) or die (mysql_error()); <= la faut virer l'@ c'est une très mauvaise idée tu ne pourras pas voir d'éventuelle message d'erreur et donc impossible de debugguer ! (surtout en phase de conception ^^)

- ligne 28  include ('connexion au serveur.php'); : cela ne serait pas plus judicieux [b]avant[/b] le traitement du formulaire ? (parce que bon sinon pas de connexion au serveur mysql :) )

- ligne 32 : $rq = " 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
           ";
d'où sortent $username et $id_groupe ?
au vu de la requete tu a une table pas utilisateur ? si oui ça sens le défaut de conception a plein nez de plus pourquoi récupérer  $username.id_eleve [b]&[/b]  liste_eleves.id_eleve  qui représentent la même chose ?
- ligne 54 a 58 : pourquoi utiliser une indexation numérique alors que tu utilise un mysql_fetch_array ? utiliser le nom des colonnes est essentielle pour les gens qui doivent relire ton code (moi en l’occurrence pour le moment mais aussi toute personne susceptible de t'apporter de l'aide ou de maintenir ton code plus tard !=. donc la utilise plutot [url=http://www.php.net/mysql_fetch_assoc]mysql_fetch_assoc[/url]
de plus pourquoi utiliser d'autre variable ? utilise directement le tableau tu sais déja utiliser la concaténation ;)

ligne 64 : re include ('connexion au serveur.php'); quel intérêt c'est déjà fait ? ton fichier s'appelle réellement ainsi où la c'est juste pour nous ? sinon vire les espaces c'est source d'emmerde. 

- ligne 65 : cette requête n'est pas a faire a chaque boucle de traitement c'est même plus de contre-performance c'est un gouffre :) tu utilise la requête pour créer une variable que tu affichera a chaque fois, une seule requête et un seule traitement. 
ce qui donne 
[php]<?php
$sql2 = 'SELECT commentaire
FROM table_commentaires
ORDER BY positif DESC, commentaire ASC';

$req2 = mysql_query($sql2) or die('Erreur SQL !<br><font size="2">'.$sql2.'<br>'.mysql_error()); 

$select = '<select name="commentaire"><option selected="selected"></option>';
while($data2 = mysql_fetch_row($req2)) 
   {
	 $commentaire=$data2[0];
	 $select .= '<option value="'.$commentaire.'">'.$commentaire.'</option>'."\n";
   } 
$select .= '</select>'; 
?>
Avant le while ligne 54
et pour affiche le select dans la boucle while (ligne 54 actuellement) echo '<td align="left" valign="top">'.$select.'</td></tr>';

- ligne 85 : je suppose que tu confond ceci avec le traitement du formulaire ? le je dirais simplement comment récupérer les valeurs d'un formulaire ou la même chose sur phpdebutant.org

- pour le traitement du formulaire je te conseil un requete préparée qui fait pour ton cas ;) Stealth35 nous indique comment faire ICI

ton code pourrais être ainsi
<?php
if (isset($_POST['submit2']) && isset ($_POST['selectcommentaire']) && isset($_POST['commentaire']) && isset($_POST['ideleve']) &&
isset($_POST['resultat']) )
	{
	/* validation du formulaire 
	
		la il faut utiliser une boucle foreach sur un des tableaux de $_POST ($_POST['ideleve']) par exemple)
		il est possible (et préférable) de vérifier que les éléments soient bien des tableaux et qu'ils aient la même taille pour éviter des soucis
		utilise une requete préparée pour réaliser l'insertion. 
		
	*/
	

	   $rq = "INSERT INTO octobre (id_eleve, id_enseignant, matiere, commentaire, resultat, nom_enseignant, nom_eleve, groupe)
			   VALUES ($id_eleve, $id_enseignant, $id_groupe,$commentaire, $resultat, $nom_enseignant, $nom_eleve, $groupe)";
		$result = mysql_query ($rq) or die (mysql_error());
		mysql_close();
 }
?>
********************** Mon formulaire commence ici!  Je l'envoie dans le fichier, mais je pourrais l'envoyer à un autre si c'est mieux*************************

    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <p class = "Section">Communication d'octobre</p>
    <fieldset>
<?php 
      include ('connexion au serveur.php');
/******************* entête du tableau ***************************/

    echo "<font face=Arial size=2>
        <table align='left' cellspacing='2' cellpadding='2'>
            <tr>
              <td align='left'><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>Choix de réponses!</b></td>
            </tr></font>";

/*********************** Formulaire à remplir **************************************************/
$sql2 = 'SELECT commentaire
FROM table_commentaires
ORDER BY positif DESC, commentaire ASC';

$req2 = mysql_query($sql2) or die('Erreur SQL !<br><font size="2">'.$sql2.'<br>'.mysql_error()); 

$select = '<select name="selectcommentaire[]"><option selected="selected"></option>';
while($data2 = mysql_fetch_assoc($req2)) {
		$commentaire=$data2['commentaire'];
		$select .= '<option value="'.$commentaire.'">'.$commentaire.'</option>'."\n";
   } 
$select .= '</select>'; 
/*********************je fais afficher la liste des élèves pour lesquels on rempli le formulaire *******************************/

$rq = 'SELECT '.mysql_real_escape_string($username).'.id_eleve, id_matiere, liste_eleves.nom
		FROM '.mysql_real_escape_string($username).'
		INNER JOIN liste_eleves ON $username.id_eleve=liste_eleves.id_eleve
		WHERE id_matiere= '.mysql_real_escape_string($id_groupe).'
		ORDER BY liste_eleves.nom';
$result = mysql_query ($rq);
 
while ($ligne = mysql_fetch_assoc($result)){       
	$nom_eleve=$ligne[2];
	$groupe=$ligne[1];   
	$id_eleve=$ligne[3];   

	echo '<td align="left" valign="top">'.$ligne['nom'].'<input type="hidden" name="ideleve[]" value="'.$ligne['id_eleves'].' /></td>
		  <td align="left" valign="top"><input type="text" name="resultat[]" size="3" maxlength = "3"/><br></td>
		  <td align="left"><textarea name="commentaire[]"rows="8" cols="50"></textarea></td>';
	echo '<td align="left" valign="top">'.$select.'</td></tr>';
}
echo '</table>';
mysql_close();
?>
   
</fieldset>
<div align="center">
<input type="submit" name="submit2" value="Valider les commentaires" />
</div>
</form>
@+
Il en faut peu pour être heureux ......

Mammouth du PHP | 2278 Messages

29 sept. 2011, 21:42

pour récupérer les lignes du tableau ce n'est pas chaine qui;ne sert que pour l'affichage, mais
<!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

$liste = array(

	array("id" =>114, "nom"=>"toto"),

	array("id" =>211, "nom"=>"toton"),	

	array("id" =>331, "nom"=>"totoche")

	);

$donnees = array();

$i=1;

$chaine = "";

foreach ($liste as $eleve)

{

	$nom = $eleve['nom'];

	$id = $eleve['id'];	

	$nom_var = "individu_".$id;

	if  (isset ($_POST[$nom_var]) )

	{

		$donnees[$id]['donnees'] =$_POST[$nom_var] ;

	}

	$i++;

}

print_r($donnees);



?>
En effet, quand tu envoies ton formulaire, les élements qui sont récupérables sont les <input name ='' ..> de toutes sortes, les <textarea name =''>, les <button>, qui peuvent avoir une value, les <select name =''>.... Faut que tout ça ait un champ name = '' pour que ça marche.
Mais, si tu mets un bouton radio ou une checkbox, tu mets le même nom à toutes les options et tu récupères une valeur pour les boutons radio et un tableau pour les checkbox.
Si, maintenant, tu crées une série de <input name = 'ligne[]' ...> <input name = 'ligne[]' ...>..., tu vaxs récupérer par $ligne = $_POST['ligne'] un tableau ligne indicé à partir de zéro.
Si par hasard tu as besoin de les manipuler par javascript, il faut leur balancer en plus un id ='qqch' où 'qqch' est unique.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphant du PHP | 139 Messages

29 sept. 2011, 22:43

Merci à tous pour votre aide, j'ai l'impression d'avancer. voici le script revu et corrigé sauf pour la partie recueillir les données et les traiter....J'ai essayé de tenir compte des commentaires. Je m'attaque maintenant à mon problème principal.
<?php
session_start();

//if XXXXXXXXXXXXXX =="XXXXXX") (********par sécurité je masque la clé!
{
    include ('entete_admin.html');
    echo('<link rel="stylesheet" type="text/css" href="styles_perso.css">');
    $username = ($_SESSION['username']);
	$id_groupe = (isset($_POST['id_groupe']))?	$_POST['id_groupe']:null; 

    include ('connexion au serveur.php');   *******je vais corriger les espaces!
    $sql2 = ********** je vais récupérer les infos sur lenseignant
        "
        SELECT user_id, prenom, nom 
        FROM table_intervenant
        WHERE username=$username
        ";
     
    $req2 = mysql_query($sql2);  
        while($data2 = mysql_fetch_assoc($req2))  
           {
             $nom_enseignant=$row["nom"].", ".$row["prenom"]; 
             $id_enseignant=$data2["user_id"]; 

          }  
  




// ----------------------------------------------------------------------       

    if (isset($_POST['submit2'])) ***********là où j essaie de récupérer les données entrées
        {    
			$entrees=$_POST['entree'];
			// $entrees2 = implode(', ',$entrees);
			
			foreach($entrees as $cle => $valeur) 
			{
			echo $cle.' : '.$valeur.'<br>';
			}


           	$matiere=$_POST['groupe'];   
           	$commentaire=($_POST['commentaire']);   
           	$resultat=($_POST['resultat']);   
           	$nom_eleve=($_POST['nom_eleve']);   
											************* un semblant de test pour voir si sa fonctionne
			echo "$nom_enseignant";
			echo "$id_enseignant";
			echo "$matiere";
			echo "$commentaire";
			echo "$resultat";
			echo "$nom_eleve";
			exit();   *********************disparaitra un jour!
			break;			
                  
/*           $rq = "   **********  Marchera un jour!
                   INSERT INTO octobre (id_eleve, id_enseignant, matiere, commentaire, resultat, nom_enseignant, nom_eleve, groupe) 
                   VALUES ($id_eleve, $id_enseignant, $id_groupe,$commentaire, $resultat, $nom_enseignant, $nom_eleve, $groupe)";
            $result = mysql_query ($rq) or die (mysql_error());
                        
            if ($result)
            	{
//  ---------- Message de confirmation ------------------
                
?>  
               <span style="text-transform: uppercase;"><b><font face="Arial" size="-1"><p align="left"><font color="#2A55FF">
               ***********************************************************************************************<br />
               * Votre rapport a été correctement inséré dans le systËme *<br />
               ***********************************************************************************************
               </font></p></font></b></span>
<?php

			mysql_close();
                }
*/		
     }
// ----------------------------------------------------------------------
															*****************début du formulaire
?>
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

    <p class = "Section">Communication d'octobre</p>
    <p class = "Section"><?php echo"$id_groupe"?></p>
    <fieldset>

							************ j'ai besoin des infos de lélève et du prof  (username est la table du prof)
<?php  
	include ('connexion au serveur.php');
    $rq = " SELECT $username.id_eleve, id_matiere, liste_eleves.nom, liste_eleves.id_eleve  
            FROM jambon
            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);
 	echo "<br>";
    echo "<font face=Arial size=2>
        <table align='left' cellspacing='2' cellpadding='2'>
            <tr>
              <td align='left'><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>Choix de réponses!</b></td>
            </tr></font>";

    while ($ligne = mysql_fetch_assoc($result))
        {       
            $nom_eleve=$ligne["nom"];
            $groupe=$ligne["groupe"];    
            $id_eleve=$ligne["id_eleve"];    

            echo '<td align="left" valign="top">'.$nom_eleve.'</td>
                  <td align="left" valign="top"><input type="text" name="resultat" size="3" maxlength = "3"/><br></td>
                  <td align="left"><textarea name="commentaire"rows="8" cols="50"></textarea></td>';

            $sql2 = 
                "
                SELECT commentaire 
                FROM table_commentaires 
                ORDER BY positif DESC, commentaire ASC
                ";
     					***********jai essayé de retirer cette requete de la boucle mais sans succes  le menu doit apparaitre pour chaque eleve
            $req2 = mysql_query($sql2) or die('Erreur SQL !<br><font size="2">'.$sql2.'<br>'.mysql_error());  
                echo '<td align="left" valign="top"><SELECT name="commentaire">'; 
                echo '<OPTION selected></OPTION>'; 
                while($data2 = mysql_fetch_assoc($req2))  
                   {
                     $commentaire=$data2["commentaire"]; 
                     echo '<OPTION value="'.$commentaire.'">'.$commentaire.'</OPTION>';
                   }  
                echo '</SELECT></td></tr>';   

			$entree = array('nom'=>'$nom_eleve', 'nom'=>'$groupe','nom'=>'$id_eleve','nom'=>'$resultat','nom'=>'$commentaire_texte','nom'=>'$commentaire_choix');

        }
        
    echo '</table>'; 
    mysql_close(); 
 

?>
    
    </fieldset>
    <div align="center">
    <input type="submit" name="submit2" value="Valider les commentaires" />
    </div>
    </form>
    
<?php
    
    // ------------------------------- fin du formulaire ------------------------

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

Eléphant du PHP | 139 Messages

29 sept. 2011, 22:50

Pour ce qui est du commentaire, il y en a deux à entrer. Un textarea et le deuxième en menu déroulant. J'ai changé le nom de ma première variable en commentaire_long.

Eléphant du PHP | 139 Messages

29 sept. 2011, 23:01

réglé pour le commentaire dans la boucle.

Eléphant du PHP | 139 Messages

29 sept. 2011, 23:35

Je mets peu à peu de l'ordre dans mes affaires. voici où j'en suis. Mon formulaire affiche très bien, mes champs peuvent être remplis. j'ai mis un indice aux variables (id_eleve). Maintenant, comment je peux pousser tout ça à mon autre script?
    while ($ligne = mysql_fetch_assoc($result))
        {       
            $id_eleve=$ligne["id_eleve"];    
            $nom_eleve=$ligne["nom"];
            $groupe=$ligne["groupe"];    

// ******* valeurs que je veux passer ****************

            echo '<td align="left" valign="top">'.$nom_eleve.'</td>
                  <td align="left" valign="top"><input type="text" name="resultat[$id_eleve]" size="3" maxlength = "3"/><br></td>
                  <td align="left"><textarea name="commentaire_perso[$id_eleve]"rows="8" cols="50"></textarea></td>
   			   	  <td align="left" valign="top">'.$select.'</td></tr>';

// ******* que dois-je mettre ici pour passer le id_eleve, nom_eleve, groupe, resultat, commentaire_perso et commentaire (qui vient du select) ?