Eléphant du PHP |
271 Messages
26 févr. 2009, 17:37
Oui le post se fait dans une autre page dont voici l'ensemble du code php ci dessous. je confirme que l'affichage des champs de la table <eleves> se fait correctement
<?PHP
if(isset($_POST['classe'])) $classe=$_POST['classe'];
//echo $classe ;
require('connect.php');
$sql= 'SELECT id, nom, prenom FROM eleves WHERE classe="'.$classe.'" ORDER BY id ';
$req = mysql_query ($sql) or die ('Erreur : '.mysql_error() );
// début du tableau
echo 'Eleves de la classe '.$classe.'<br><br>' ;
?>
<form name="evals" action="index.php?page=verif_evals.php" method="post">
<table>
<tr>
<td>
<select name="matiere">
<option value="">Sélectionnez une matière</option>
<option value="francais">Français</option>
<option value="maths">Mathématiques</option>
<option value="anglais">Anglais</option>
</select>
</td>
<td></td>
<td>
<select name="periode">
<option value="">Sélectionnez une période</option>
<option value="septembre">Septembre</option>
<option value="octobre">Octobre</option>
<option value="novembre">Novembre</option>
<option value="décembre">Décembre</option>
<option value="janvier">Janvier</option>
<option value="février">Février</option>
<option value="mars">Mars</option>
<option value="avril">Avril</option>
<option value="mai">Mai</option>
<option value="juin">Juin</option>
</select>
</td>
</tr>
</table>
<br><br>
<?PHP
echo '<table bgcolor="#FFFFFF" border=\"1\">'."\n";
//1ere ligne on on affiche les titres
echo '<tr>';
echo '<td bgcolor="#669999"><center><b><u>Nom</u></b></center></td>';
echo '<td bgcolor="#669999"><center><b><u>Prénom</u></b></center></td>';
echo '<td>Notes</td>';
echo '</tr>'."\n";
// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.
while($row = mysql_fetch_array($req)) {
echo '<tr>';
//input des nom et prénom
echo '<td ><center><input name="nom_'.$row['id'].'" value='.$row['nom'].'></center></td>';
echo '<td><center><input name="prenom_'.$row['id'].'" value="'.$row['prenom'].'"></center></td>';
//input des notes pour chaque élèves
echo '<td><center><input type="text" name="note_'.$row['id'].'">';
//input de la classe
echo '<input type="hidden" name=classe_'.$row['nom'].'" value="'.$classe.'">';
echo '<input type="hidden" name=row" value="'.$row.'">';
echo '</tr>'."\n";
}
echo '</table>'."\n";
// fin du tableau.
mysql_close();
}
?>
et la page de traitement dans laquelle doit se faire l' INSERT dans la bd :
<?PHP
require('connect.php');
$sql= 'SELECT id, nom, prenom FROM eleves WHERE classe="'.$classe.'" ORDER BY id ';
$req = mysql_query ($sql) or die ('Erreur : '.mysql_error() );
if(isset($_POST['nom_'.$row['nom'].''])) $nom=$_POST['nom_'.$row['nom'].''];
while($row = mysql_fetch_array($req))
{
if(isset($_POST['nom_'.$row['nom'].''])) $nom=$_POST['nom_'.$row['nom'].''];
if(isset($_POST['prenom_'.$row['nom'].''])) $prenom=$_POST['prenom_'.$row['nom'].''];
if(isset($_POST['note_'.$row['nom'].''])) $note=$_POST['note_'.$row['nom'].''];
if(isset($_POST['classe_'.$row['nom'].''])) $classe=$_POST['classe_'.$row['nom'].''];
if(isset($_POST['matiere_'.$row['nom'].''])) $matiere=$_POST['matiere_'.$row['nom'].''];
if(isset($_POST['periode_'.$row['nom'].''])) $periode=$_POST['periode_'.$row['nom'].''];
mysql_query("INSERT INTO note (id, classe, pseudo, $matiere, periode) VALUES ('', '$classe', '$nom', '$note', '$periode' )");
}
echo $classe ;
echo $nom ;
echo $note ;
echo $matiere ;
echo $periode ;
echo $prenom ;
mysql_close();
}
?>
et pour être sur que les champs de la table <note> pour l'insertion des données sont corrects ci dessous le code sql de la table
Code : Tout sélectionner
CREATE TABLE `note` (
`id` int(11) NOT NULL auto_increment,
`classe` varchar(10) NOT NULL,
`pseudo` varchar(25) NOT NULL,
`francais` varchar(3) default NULL,
`maths` varchar(3) default NULL,
`anglais` varchar(3) NOT NULL,
`techno_rest` varchar(3) default NULL,
`aps_sc` varchar(3) default NULL,
`aps_opc` varchar(3) default NULL,
`periode` varchar(25) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=32 ;
Là, j'ai tout mis en ligne. Mais l'insertion dans la base bd ne fonctionne pas. Je fais un echo des variables, seules celles des posts : matiere et periode sont lues. Elles ont 1 seule donnée chacune !!
Le pbl viendrais soit : les variables ou les input ou les post ne sont pas capables de lire un tableau (array). Cela ne reste qu'une supposition de ma part.
Si quelqu'un a une solution, merci pour d'avance.
Patience et obstination sont des qualités !