create table eleves (
ideleve
nom
prenom
etc etc
)
create table professeurs (
idprofs
nom
prenom
etc etc
)
create tables commentaires (
idcommentaire
commentaire
)
create table commenttrimestre (
id
ideleve
idprofs
idcommentaire
appreciation
datecommentaire
)
bon après faut voir la complexité de ton application pour déterminer le modèle, ceci n'est qu'un exemple. Tu crées ainsi un tableau $resultat dont chaque ligne sera le résultat de l'élève concerné, un tableau $commentaire_perso dont chaque ligne sera le commentaire de l'élève concerné.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) ?
//..
// Ajout MB..
$select_partiel = "<option>TB</option><option>B</option></select>"; // on ne crée que la fin du select
print "<form method = 'post' action = 'verifier.php'><table>";
foreach ($liste as $eleve)
{
$nom_eleve = $eleve['nom'];
$id_eleve = $eleve['id'];
$nom_var = "individu_".$id_eleve."[]";
$nom_com_std = "commentaire_standard[$id_eleve]";
// ajout MB
$select ="<select name = '$nom_com_std' >".$select_partiel; //quand on connait l'id de l'élève, on peut donner un nom au select
echo '<tr><td align="left" valign="top">'.$nom_eleve.'</td>
<td align="left" valign="top"><input type="text" name="resultat[$id_eleve]" size="3" maxlength = "3"/></td>
<td align="left"><textarea name="commentaire_perso[$id_eleve]"rows="8" cols="50"></textarea></td>
<td align="left" valign="top">'.$select.'</td></tr>';
}
print "</table>
<button type = 'submit'>OK</button>
</form>";<?PHP
$liste = array(
array("id_eleve"=>"1","commentaire_perso" =>"com_perso_1","commentaire"=>"com_1","resultat"=>"res_1"),
array("id_eleve"=>"2","commentaire_perso" =>"com_perso_2","commentaire"=>"com_2","resultat"=>"res_2"),
array("id_eleve"=>"3","commentaire_perso" =>"com_perso_3","commentaire"=>"com_3","resultat"=>"res_3")
); // pour pouvoir tester simule la bdd
$i=1;
$entree = "";
foreach ($liste as $eleve)
{
$id_eleve = $eleve['id_eleve'];
$commentaire_perso = $eleve['commentaire_perso'];
$commentaire = $eleve['commentaire'];
$resultat = $eleve['resultat'];
$nom_var = "individu_".$id_eleve."[]";
$entree.= "
<p>
<input type = 'text' readonly = 'readonly' name ='$nom_var' value = '$commentaire_perso' />
<input type = 'text' readonly = 'readonly' name ='$nom_var' value='$commentaire' />
<input type = 'text' readonly = 'readonly' name ='$nom_var' value='$resultat' />";
$i++;
}
*****************************************
echo ????????????????????????????????????;
*****************************************
/* print "
<form method = 'post' action = 'verifier.php'>
$entree
<button type = 'submit'>OK</button>
</form>
";
*/
<?PHP
$liste = array(
array("id" =>114, "nom"=>"toto"),
array("id" =>211, "nom"=>"toton"),
array("id" =>331, "nom"=>"totoche")
);
$select_partiel = "<option>TB</option><option>B</option></select>";
print "<form method = 'post' action = 'verifier.php'><table>";
//La saisie a l'aspect d'une table, mais chaque champ a un nom personnel
// C'est à la récupéation qu'on en fera un tableau
foreach ($liste as $eleve)
{
$nom_eleve = $eleve['nom'];
$id_eleve = $eleve['id'];
$nom_var = "individu_".$id_eleve."[]";
$nom_com_std = "commentaire_standard_$id_eleve";
$nom_note = "note_$id_eleve";
$nom_com ="commentaire_$id_eleve";
$select ="<select name = '$nom_com_std' >".$select_partiel;
// j'utilise print pour que les noms des variables soient évalués mais ça marche avec echo "..." au lieu de echo '...'
print "<tr><td align='left' valign='top'>$nom_eleve</td>
<td align='left' valign='top'><input type='text' name='$nom_note' size='3' maxlength = '3'/></td>
<td align='left'><textarea name='$nom_com' rows='8' cols='50'></textarea></td>
<td align='left' valign='top'>$select</td></tr>";
}
print "</table>
<button type = 'submit'>OK</button>
</form>";
lu par :
<!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")
);
$tabeau_resultats = array();
foreach ($liste as $eleve)
{
$nom_eleve = $eleve['nom'];
$id_eleve = $eleve['id'];
$nom_var = "individu_".$id_eleve."[]";
$nom_com_std = "commentaire_standard_$id_eleve";
$nom_note = "note_$id_eleve";
$nom_com ="commentaire_$id_eleve";
$note = $_POST[$nom_note];
$commentaire = $_POST[$nom_com];
$comm_std = $_POST[$nom_com_std];
$tableau_resultats[$id_eleve] ['id'] = $id_eleve;
$tableau_resultats[$id_eleve] ['note'] = $note;
$tableau_resultats[$id_eleve] ['comm'] = $commentaire;
$tableau_resultats[$id_eleve] ['comm_std'] = $comm_std;
}
print_r($tableau_resultats);
?>
{
$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_row($reqcom))
{
$commentaire=$datacom[0];
$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 jambon
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_std="commentaire_standard_$id_eleve";
$nom_note ="note_$id_eleve";
$nom_com ="commentaire_$id_eleve";
$choix ="<select name = '$nom_com_std' >".$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' name='$nom_note' size='3' maxlength = '3'/></td>
<td align='left'><textarea name='$nom_com' rows='8' cols='50'></textarea></td>
<td align='left' valign='top'>".$select."</td>
</tr></font></table>";
}
et de l'autre côté du POST if (isset($_POST['submit3']))
{
$id_groupe=$_POST['id_groupe'];
$rq =
"
SELECT jambon.id_eleve, liste_eleves.nom
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);
$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_std = "commentaire_standard_$id_eleve";
$nom_note = "note_$id_eleve";
$nom_com ="commentaire_$id_eleve";
$note = $_POST[$nom_note];
$commentaire = $_POST[$nom_com];
$comm_std = $_POST[$nom_com_std];
$tableau_resultats[$id_eleve] ['id'] = $id_eleve;
$tableau_resultats[$id_eleve] ['note'] = $note;
$tableau_resultats[$id_eleve] ['comm'] = $commentaire;
$tableau_resultats[$id_eleve] ['comm_std'] = $comm_std;
echo $ligne['id_eleve'].$ligne['nom'].
"eleve ".$tableau_resultats[$id_eleve]['id'].
" a ".$tableau_resultats[$id_eleve]['note'].
" et ".$tableau_resultats[$id_eleve]['comm'].
" comme commentaire".
" et ".$tableau_resultats[$id_eleve]['comm_std'].
" comme commentaire choix".
"</br>";
}
exit();
break;
}
$select = '<select name="commentaire"><option selected="selected"></option>';
while($datacom = mysql_fetch_row($reqcom))
{
$commentaire=$datacom[0];
$select .= '<option value="'.$commentaire.'">'.$commentaire.'</option>'."\n";
}
$select_partiel .= '</select>';
crée un $select de nom 'commentaire' dont il manque le "</select>" et un $select_partiel dont il manque le début.
$choix ="<select name = '$nom_com_std' >".$select_partiel;
crée une variable $choix qui est un <select> portant le bon nom, mais sans contenu et non utilisée
<td align='left' valign='top'>".$select."</td>
utilise un <select> de même nom pour tous les élèves, nom qui ne correspond pas à la façon dont on le relit:$nom_com_std = "commentaire_standard_$id_eleve";
$comm_std = $_POST[$nom_com_std];
Je dirais cependant que les problèmes de ce genre se résolvent en :