Code : Tout sélectionner
<input type="text" name="nom[]" />Code : Tout sélectionner
<?php
//affichage de mon tableau de nom
foreach($_POST['nom'] as $nom)
{
//Affichage de la value renseignée
echo $nom;
}
?>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.
Code : Tout sélectionner
resultat[]
commentaire[]
nombreAbsences[]...
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><?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>
";
?>
J'aurais une variable eleve1[nom, id, resultat,...], eleve2[.....], etcCode :
$i=0;
while($tabl[$i]) {
$var = "var".$i;
$$var = $tabl[$i];
$i++;
}
et après récupérer avec $var0, $var1, ...
<?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>
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<?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>
@+<!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.<?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;
}
?> 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) ?