Page 1 sur 1
Insertion donnees dynamiques à la suite dans une meme table
Posté : 12 août 2005, 15:33
par neofreon
Bonjour,
Je travaille sur un questionnaire en ligne et j ai un probleme simple :
Sur la page précédente un utilisateur a renseigné un champ contenant le nombre de questions que celui-ci désire insérer dans son questionnaire. La page créer dynamiquement le nombre de champ texte et radio désires :
voici le code de cette création :
<form name="form1" method="post" action="<?php echo $editFormAction; ?>">
<table> <table width="200" border="0">
<?php
while ($row_Recordset1['nb_questio'] > 0)
{
$counter = $row_Recordset1['nb_questio'];
$counter1 = $row_Recordset1['nb_questio'];
echo '<input type="text" name= "$counter" >';
echo '<input type="checkbox" name= "$counter1" value= "$counter1" ><br>';
echo $counter.'question' ;
$row_Recordset1['nb_questio']--;
}
?>
</table>
</form>
Jusque la tout va bien ça marche.
Par contre je souhaiterai que les enregistrement crées s'insèrent tous à la suite dans ma table en envoyant le formulaire :
pour l'instant seul le dernier enregistrement est inséré :
Voici le code d’insertion : (je précise que la connexion à la base est déjà effectuer via un include en début de fichier)
<?php
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
while ($row_Recordset1['nb_questio'] > 0){
$counter = $row_Recordset1['nb_questio'];
$counter1 = $row_Recordset1['nb_questio'];
$insertSQL = sprintf("INSERT INTO questions (id_questionnaire, id_theme, id_soustheme, question, inverse) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['id_questionnaire'], "int"),
GetSQLValueString($_POST['id_theme'], "int"),
GetSQLValueString($_POST['id_soustheme'], "int"),
GetSQLValueString($_POST['$counter'], "text"),
GetSQLValueString(isset($_POST['$counter1']) ? "true" : "", "defined","1","0"));
mysql_select_db($database_aa, $aa);
$Result1 = mysql_query($insertSQL, $aa) or die(mysql_error());
$row_Recordset1['nb_questio']--;
}
?>
je ne comprend pas pourquoi seul le dernier enregistrement est inséré,
merci d'avance
Posté : 12 août 2005, 15:36
par ouckileou
une petite édition de ton message pour rajouter les balises
autour de ton code et les réponses afflueront ;)
precisions
Posté : 12 août 2005, 16:18
par neofreon
excuse moi mais je ne vois pas ce que tu veux veut dire par "balise php" je croyais que ct les <?php et ?>
Posté : 12 août 2005, 16:20
par albat
Modération :
Lorsque tu écris un message
il y a au-dessus de la fenêtre blanche dans laquelle tu le saisis,
des petits boutons qui appellent des balises BBcode.
Ces balises qui s'insèrent dans le texte de ton message
permettent de le mettre en forme et le rendent plus lisibles.
Version mere-teresa
Modération : ouckileou parle des balises BBCode [ PHP ] qui permettent la coloration syntaxique du code.
Elle est aussi disponible en bouton entre [ Quote ] et [ Code ]
Modération d'Albat', susceptible :
Mère Teresa, t'as pas le droit !
C'est pas du jeu de modérer un modérateur ! [-(
Posté : 12 août 2005, 16:20
par ouckileou
oui ça ce sont les balises pour faire interpréter ton code
mais dans le forum phpBB (et celui-ci en est un) tu peux ajouter dans tes messages du bbCode, des balises pour formater le texte
exemples:
[ b]texte[/b] => gras
[ code]ici du code => en vert, garde l'identation, n'insère pas les smileys
donc ici, tu peux utiliser les balises [ php][ /php] qui vont colorer le code et garder l'identation
exemple :
function maFonction() {
echo "ceci est ma fonction";
return true;
}
voilà

Posté : 12 août 2005, 16:22
par mere-teresa
A vue de nez, je dirais : problème de boucle
Posté : 12 août 2005, 16:25
par neofreon
ok merci de ces precisions, j'edite le code et je le repost
Posté : 12 août 2005, 16:55
par neofreon
voici le 1er code balise :
<form name="form1" method="post" action="<?php echo $editFormAction; ?>">
<table> <table width="200" border="0">
<?php
while ($row_Recordset1['nb_questio'] > 0)
{
$counter =$row_Recordset1['nb_questio'];
$counter1 = $row_Recordset1['nb_questio'];
echo '<input type="text" name= "$counter" >';
echo '<input type="checkbox" name= "$counter1" value= "$counter1" ><br>';
echo $counter.'question' ;
$row_Recordset1['nb_questio']--;
}
?>
</table>
</form>
2eme code
<?php
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
while ($row_Recordset1['nb_questio'] > 0){
$counter = $row_Recordset1['nb_questio'];
$counter1 = $row_Recordset1['nb_questio'];
$insertSQL = sprintf("INSERT INTO questions (id_questionnaire, id_theme, id_soustheme, question, inverse) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['id_questionnaire'], "int"),
GetSQLValueString($_POST['id_theme'], "int"),
GetSQLValueString($_POST['id_soustheme'], "int"),
GetSQLValueString($_POST['$counter'], "text"),
GetSQLValueString(isset($_POST['$counter1']) ? "true" : "", "defined","1","0"));
mysql_select_db($database_aa, $aa);
$Result1 = mysql_query($insertSQL, $aa) or die(mysql_error());
$row_Recordset1['nb_questio']--;
}
?>
merci d'avance
Posté : 12 août 2005, 16:58
par albat
Ouh là ! Tu t'es fatigué pour rien !
Il suffisait d'encadrer ton code avec les balises [ php] dans la fenêtre d'édition.
Voilà ce que ça donne :
<form name="form1" method="post" action="<?php echo $editFormAction; ?>">
<table> <table width="200" border="0">
<?php
while ($row_Recordset1['nb_questio'] > 0)
{
$counter =$row_Recordset1[color=blue]['nb_questio'];
$counter1 = $row_Recordset1[color=blue]['nb_questio'];
[color=blue] echo '<input type="text" name= "$counter" >';
echo '<input type="checkbox" name= "$counter1" value= "$counter1" ><br>';
echo $counter.'question' ;
$row_Recordset1['nb_questio']--;
}
[color=red] ?>
</table>
</form>
2eme code
<?php
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
while ($row_Recordset1['nb_questio'] > 0){
$counter = $row_Recordset1['nb_questio'];
$counter1 = $row_Recordset1['nb_questio'];
$insertSQL = sprintf("INSERT INTO questions (id_questionnaire, id_theme, id_soustheme, question, inverse) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['id_questionnaire'], "int"),
GetSQLValueString($_POST['id_theme'], "int"),
GetSQLValueString($_POST['id_soustheme'], "int"),
GetSQLValueString($_POST['$counter'], "text"),
GetSQLValueString(isset($_POST['$counter1']) ? "true" : "", "defined","1","0"));
mysql_select_db($database_aa, $aa);
$Result1 = mysql_query($insertSQL, $aa) or die(mysql_error());
$row_Recordset1['nb_questio']--;
}
?>
Posté : 12 août 2005, 17:06
par neofreon
c vrai que j ai un peu galeré:) je le saurai pour le prochain[/quote]
Posté : 12 août 2005, 17:07
par mere-teresa
voici le 1er code balise :
<form name="form1" method="post" action="<?php echo $editFormAction; ?>">
<table> <table width="200" border="0">
<?php
while ($row_Recordset1['nb_questio'] > 0)
{
$counter =$row_Recordset1['nb_questio'];
$counter1 = $row_Recordset1['nb_questio'];
echo '<input type="text" name= "$counter" >';
echo '<input type="checkbox" name= "$counter1" value= "$counter1" ><br>';
echo $counter.'question' ;
$row_Recordset1['nb_questio']--;
}
?>
</table>
</form>
2eme code
<?php
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
while ($row_Recordset1['nb_questio'] > 0){
$counter = $row_Recordset1['nb_questio'];
$counter1 = $row_Recordset1['nb_questio'];
$insertSQL = sprintf("INSERT INTO questions (id_questionnaire, id_theme, id_soustheme, question, inverse) VALUES (%s, %s, %s, %s, %s)",
GetSQLValueString($_POST['id_questionnaire'], "int"),
GetSQLValueString($_POST['id_theme'], "int"),
GetSQLValueString($_POST['id_soustheme'], "int"),
GetSQLValueString($_POST['$counter'], "text"),
GetSQLValueString(isset($_POST['$counter1']) ? "true" : "", "defined","1","0"));
mysql_select_db($database_aa, $aa);
$Result1 = mysql_query($insertSQL, $aa) or die(mysql_error());
$row_Recordset1['nb_questio']--;
}
?>
merci d'avance
BRAVO !
Enfin tu as compris de travers, mais au moins, bravo pour l'effort ! 
Posté : 12 août 2005, 17:08
par mere-teresa
Regarde ce que contient ta variable while $row_Recordset1['nb_questio'] pour savoir combien de fois la boucle tourne 