Insertion donnees dynamiques à la suite dans une meme table

Petit nouveau ! | 5 Messages

12 août 2005, 15:33

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 août 2005, 15:36

une petite édition de ton message pour rajouter les balises
 autour de ton code et les réponses afflueront ;)

Petit nouveau ! | 5 Messages

12 août 2005, 16:18

excuse moi mais je ne vois pas ce que tu veux veut dire par "balise php" je croyais que ct les <?php et ?>

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

12 août 2005, 16:20

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 ! [-(
Modifié en dernier par albat le 12 août 2005, 16:36, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

12 août 2005, 16:20

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à ;)
Modifié en dernier par ouckileou le 12 août 2005, 16:21, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

12 août 2005, 16:22

A vue de nez, je dirais : problème de boucle
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Petit nouveau ! | 5 Messages

12 août 2005, 16:25

ok merci de ces precisions, j'edite le code et je le repost

Petit nouveau ! | 5 Messages

12 août 2005, 16:55

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

12 août 2005, 16:58

Ouh là ! Tu t'es fatigué pour rien ! :afraid:

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']--;
}
?>  

Petit nouveau ! | 5 Messages

12 août 2005, 17:06

c vrai que j ai un peu galeré:) je le saurai pour le prochain[/quote]

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

12 août 2005, 17:07

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 !
:agenouille:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

12 août 2005, 17:08

Regarde ce que contient ta variable while $row_Recordset1['nb_questio'] pour savoir combien de fois la boucle tourne :)