clem76630
Messages postés1Date d'inscriptionjeudi 4 décembre 2008StatutMembreDernière intervention24 septembre 2009
-
24 sept. 2009 à 11:44
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 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');
tpoinsot
Messages postés345Date d'inscriptionmardi 1 juin 2004StatutMembreDernière intervention17 octobre 20144 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.