Enregistrer valeur tableau html dans table mysql

Résolu
clem76630 Messages postés 1 Date d'inscription jeudi 4 décembre 2008 Statut Membre Dernière intervention 24 septembre 2009 - 24 sept. 2009 à 11:44
tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 - 24 sept. 2009 à 14:59
Bonjour,

Cela fait longtemps que je m'aide de ce forum lors du développement de mes petits sites ou applications personnel.
Mais la je tombe sur os, car je n'arrive pas a enregistrer toute les données qui sont saisies dans mon tableau HTML pourtant elles s'affichent toutes bien. Seul la dernière ligne s'enregistre alors que je voudrais la totalité.

Si vous avez une petite idée je vous laisse mon code et ma table.

Merci d'avance.

Clem

<?php
connect_sql();

$sql = "SELECT * FROM question ORDER BY id_question";

$requete = mysql_query($sql) or die( "ERREUR MYSQL numéro: ".mysql_errno()."
Type de cette erreur: ".mysql_error()."
" );
if(isset($_POST['valide']))	{
$valide = $_POST['valide'];
}
else {
$valide = 0;
}
if($valide == 1){
echo "lol";
$id_question = mysql_real_escape_string($_POST["id_question"]);

$question = mysql_real_escape_string($_POST['question']);

$reponse_prof = mysql_real_escape_string($_POST['reponse_prof']);

$reponse_eleve = mysql_real_escape_string($_POST['reponse_eleve']);

$query_update = "UPDATE question SET texte_question='".$question."', reponse_prof='".$reponse_prof."' WHERE id_question = '".$id_question."'";
$req_update = mysql_query($query_update);			
header("Location: index.php?id_menu=1");
if(!$req_update)
die("Error saving the record!  Mysql said: '".mysql_error()."'"); 
}



?>
<form method="post" action="index.php?id_menu=1">
<?php
while( $result = mysql_fetch_array($requete) )
{
$id_question = $result[\"id_question\"];
$texte_question = $result[\"texte_question\"];
$reponse_prof = $result[\"reponse_prof\"];
$reponse_eleve = $result[\"reponse_eleve\"];
?>

----

" readonly />,
" />,
" />,
" readonly />,

<?php
}
?>

        


</form>


Table Mysql :

--
-- Base de données: `clement`
--

-- --------------------------------------------------------

--
-- Structure de la table `question`
--

CREATE TABLE IF NOT EXISTS `question` (
  `id_question` int(10) unsigned NOT NULL,
  `texte_question` longtext NOT NULL,
  `reponse_prof` longtext NOT NULL,
  `reponse_eleve` longtext NOT NULL,
  PRIMARY KEY (`id_question`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

--
-- Contenu de la table `question`
--

INSERT INTO `question` (`id_question`, `texte_question`, `reponse_prof`, `reponse_eleve`) VALUES
(1, 'Question 1', 'LOL', 'LOOL'),
(2, 'Question 22', 'LULd', 'LOULd'),
(3, 'Question 3', 'LIL', 'LIIL'),
(4, 'Question 4', 'LAL', 'LAAL'),
(5, 'Salutrrfgffffjjjffffvv', 'Drewdd', 'LEL');

1 réponse

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
24 sept. 2009 à 14:59
A chaque changement de ligne tu perds les valeurs antérieures car tu réutilises les mêmes noms de variables :
- après la ligne 1, id_question = 1;
- aprés la ligne 2, id_question = 2;
etc...
à la fin , tu n'as que la dernière rangée.
si tu veux mettre à jour l'ensemble, il faut un tableau de taille fixe et créer un jeu de variables par rangée:
- id_question1, question1, ...
- id_question2, question2, ...
...
- id_questionN, questionN, ...

Gére un compteur $r incrémenté à chaque <tr>
<td> " size="1" value= "<?php echo $id_question ?>" readonly /> </td>

et quand tu mets à jour, tu fais N updates, 1 pour chaque jeu de valeurs.

Il est plus efficace de présenter son tableau en fixe avec un bouton "modifier" par rangée : tu n'auras qu'un update à la fois et tu ne t'occuperas plus du nombre de rangées.

thip
3