Bonjour à tous,

Pour des raisons que je ne développerai pas ici, je suis en présence d'un formulaire muni d'un while.
De ce type là :

<form>
    while($data = mysql_fetch_assoc($req)){
        echo $data'question'];
        echo '<input type="text" name="reponse"/>';
    }
    <input type="submit" value="Valider">
</form>

C'est donc un formulaire qui dépend du nombre de question posée.

La (véritable) question est : Comment insérer un tel formulaire dans un tableau sql de type..

question -- reponse -- id_poster

..? :D
Ou en gros : Comment réitérer l'insertion pour les 'n' questions ?

Je vous remercie tous pour vos réponses (ouais, je suis un peu visionnaire !)

3 réponses


Pewel-OutOfNutella
Réponse acceptée
Comment réitérer l'insertion pour les 'n' questions ?

Tu mets ton id en auto increment sur ta table et tu fait des insert dans une boucle sans renseigner l'id

Après, pour savoir ton nombre de questions, j'ai ceci qui me vient en tête :
tu met un nom de class commun à tout tes champs et tu les comptes une fois que tu valide ton formulaire.

Exemple ici : look me !

Bien sur, je l'ai fait en js, mais je pense que tu pourrais le faire autrement. Si tu le fait en js, après avoir compté tes champs, tu envoies le nombre de champs à ton script php via un appel ajax. Sur ton script php, tu boucle sur le nombre que tu as reçu et tu insère en base.

Il y a même encore plus simple : dans ton appel ajax, tu passes directement toutes tes valeurs de champs et côté php tu fait juste un foreach et tu insère en base.

Canonier
Auteur
Réponse acceptée

Je vois le genre.. Le probleme c'est que je dois utiliser Ajax pour faire une requete sql dans js.. Premierement, je suis nul en ajax xD (aucune expérience) Deuxiemement, j'aime bien le bon vieux fichier action en php ^^ Troisiemement, j'ai peut-etre pas bien compris ce que tu m'as conseillé :D Finalement après une bonne nuit de sommeil j'ai trouvé ma solution (comme quoi la nuit porte conseil) : il a suffit de donner un id pour la boucle (ici $i), et l'inserer dans les champ du formulaire : [code]

<form>
$i = 0;
while($data = mysql_fetch_assoc($req)){
$i = $i + 1;
echo $data['question'];
<input type="text" name="reponse-'.$i.'">;
<input type="hidden" name="i" value="'.$i.'">;
}
<input type="submit" value="Valider">
</form>[/code] Ce formualire retoure donc : [code]array([reponse-1] => premiere reponse, ..., [reponse-n] => n-ieme reponse, * => n)[/code] Et ensuite dans mon fichier action : [code]for ($i = 1; ; $i++) { if ($i > $_POST['i']) { // ici $_POST['i'] vaut n. break; } $reponse= $_POST['reponse-'.$i]; // un peu inutile mais ca fait plus propre ^^ $sql_insert = "INSERT INTO table(reponse) VALUES ('$reponse')"; $req_insert = mysql_query($sql_insert) or die('Erreur SQL !
'.$sql_insert.'
'.mysql_error()); }[/code] Ce qui aura pour effet de créer n requêtes. en tout cas merci beaucoup Pewel pour ta réponse ! Je la met en 'correcte', étant donné qu'elle m'a aidé à réfléchir !

Content de t'avoir aidé, ou plutôt, de t'avoir donné une piste :D