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

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

Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
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...
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
regarde la sortie html du formulaire pour vérifier que les champs ont bien tous des noms différents...
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
essaie peut-être ça :
echo '
';
Messages postés
445
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
22 mars 2007
1
en fait, il faut bien donner le même nom à toutes les cases :
http://fr.selfhtml.org/html/formulaires/choix.htm#boites_verification
Messages postés
4
Date d'inscription
mardi 9 août 2005
Statut
Membre
Dernière intervention
12 août 2005

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

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

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.