par
alaingpl » 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.
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]<?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();
}
?> [/php]
et la page de traitement dans laquelle doit se faire l' INSERT dans la bd :
[php]<?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();
}
?>[/php]
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]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 ;
[/code]
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.