Insertion de plusier ligne de donnée dynamique à la fois dans une meme table [Résolu]

Messages postés
4
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
12 août 2005
- - Dernière réponse : 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
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
3
Merci
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de arnal69130
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
3
Merci
regarde la sortie html du formulaire pour vérifier que les champs ont bien tous des noms différents...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de arnal69130
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
3
Merci
essaie peut-être ça :
echo '
';

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de arnal69130
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
3
Merci
en fait, il faut bien donner le même nom à toutes les cases :
http://fr.selfhtml.org/html/formulaires/choix.htm#boites_verification

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 217 internautes nous ont dit merci ce mois-ci

Commenter la réponse de arnal69130
Messages postés
4
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
12 août 2005
0
Merci
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
Commenter la réponse de arichardfr
Messages postés
4
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
12 août 2005
0
Merci
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
Commenter la réponse de arichardfr
Messages postés
4
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
12 août 2005
0
Merci
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.
Commenter la réponse de arichardfr