Insertion de plusier ligne de donnée dynamique à la fois dans une meme table

Résolu
arichardfr Messages postés 4 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 12 août 2005 - 12 août 2005 à 15:34
arichardfr Messages postés 4 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 12 août 2005 - 12 août 2005 à 17:42
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 width=\"200\" border=\"0\">

<?php

while ($row_Recordset1['nb_questio'] > 0)

{

$counter = $row_Recordset1['nb_questio'];

$counter1 = $row_Recordset1['nb_questio'];

echo '';

echo '
';

echo $counter.'question' ;

$row_Recordset1['nb_questio']--;

}

?>


</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 inseré,



merci d'avance

7 réponses

arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
12 août 2005 à 15:53
Salut,
Tu peux faire un petit
echo '';
print_r($_POST);
pour vérifier que tous tes champs ont bien été postés, et qu'ils ont bien les noms que tu attends...
3
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
12 août 2005 à 16:36
regarde la sortie html du formulaire pour vérifier que les champs ont bien tous des noms différents...
3
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
12 août 2005 à 16:48
essaie peut-être ça :
echo '
';
3
arnal69130 Messages postés 445 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 22 mars 2007 2
12 août 2005 à 16:50
en fait, il faut bien donner le même nom à toutes les cases :
http://fr.selfhtml.org/html/formulaires/choix.htm#boites_verification
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arichardfr Messages postés 4 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 12 août 2005
12 août 2005 à 16:14
Merci pour ta reponse,



Grace au code que tu m'as donné, j ai pu voir que seules les données du dernier champ etaient envoyées.



Comment faire pour les donnees de tous les champs soient envoyés. Peut
etre que ma boucle est mal placée, j ai deja essayé pas mal de
combinaison:)



merci d'avance
0
arichardfr Messages postés 4 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 12 août 2005
12 août 2005 à 16:43
merci pour ce conseil



D'apres le code source de la page, les champs ont en effet le meme nom. il y aurai donc un pb dans



echo '';

echo '
';



la syntaxe name= "$counter" est elle bonne?



merci d'avance
0
arichardfr Messages postés 4 Date d'inscription mardi 9 août 2005 Statut Membre Dernière intervention 12 août 2005
12 août 2005 à 17:42
Ca ne marche pas, seul le premier champs texte et la premiere case a cocher sont inserer dans la BD.

En fait cela m'insere le bon nombre d enregistrement dans la base mais c'est à chaque fois le meme.
0
Rejoignez-nous