EmGeI Posté 11 Août 2008 Posté 11 Août 2008 (modifié) Bonjour à tous, Voici mon soucis. J'ai un formulaire de deux champs : un hidden et un text. Etant donné que les infos à rentré sont aléatoire j'ai un bouton qui me permet de rajouté des champs dans le formulaire. Lors du submit du ce formulaire les infos sont stockées dans une DB. Le problème est que lors du l'envoie du form, il prend en compte un nombre défini de donnée et non le nombre de champs envoyé EX: champs 1 : info1 champs 2 : info2 Lors du submit il va me sortir : INSERT INTO table (champs caché, champ) VALUES ('champs caché', ''), ('champs caché', 'info 2'), ('champs caché', ''), ('champs caché', ''), ('champs caché', ''), ('champs caché', ''), ('champs caché', ''), ('champs caché', ''), ('champs caché', ''), ('champs caché', ''), ('champs caché', '') Et le champs 1 n'est pas pris en compte Voici le code de mes pages CODE *************** FORM.HTML ***************<html> <head> <title>Document sans nom</title> <script language="javascript"> <!-- function create_champ(i) { var i2 = i + 1; document.getElementById('input_'+i).innerHTML = '<div id="champs_'+i+'">ndc '+i+' :<input type="text" name="ndc'+i+'"></div></span>'; document.getElementById('input_'+i).innerHTML += (i <= 10000) ? '<span id="input_'+i2+'"><input class="input2" type="button" onClick="java script:create_champ('+i2+')" value="Insérer un autre champ"></span>' : ''; } --> </script> </head> <body> <form name="toto" action="insert.php" method="post"> <input name="operator_id" type="text"/> <div id="champs_1"> <div align="left"> Produit 1 : <input name="ndc 1" type="text"/> </div> </div> <div align="left"> <span id="input_2"> <input name="button" type="button" class="input2" onClick="java script:create_champ(2)" value="Insérer un autre champ"> </span></div> <input type="submit" value="submit"/> </form> </body> </html> *************** FORM.HTML *************** *************** INSERT.PHP *************** <?php $i = 0; $req = "INSERT INTO table (operator_id, ndc) VALUES"; while ($i <= 10) { $operator_id = $_POST['operator_id']; $ndc = $_POST['ndc'.$i]; // Construction de la requête SQL $req .= " ('$operator_id', '$ndc'),"; $i++; } // Suppression de la dernière virgule de la requête construite $req = substr($req,0,strlen($req)-1); $connexion = mysql_connect("localhost","root","") or exit("Erreur 101"); mysql_select_db( "mobtest" , $connexion) or exit("Erreur 102"); mysql_query($req) or exit('Erreur SQL !'.$req.'<br>'.mysql_error()); echo $req; mysql_close(); ?> *************** INSERT.PHP *************** J'ai fais pas mal de recherche et pas mal de modification mais rien a faire ca ne fonctionne pas Si vous avez une proposition ou une piste pouvant m'aider je vous en serais très reconnaissant. Merci d'avance et bonne journée à tous. Modifié 11 Août 2008 par Portekoi Modo : Merci d'utiliser CODEBOX pour les codes longs
Portekoi Posté 11 Août 2008 Posté 11 Août 2008 Bonjour, Tu dois faire une boucle pour insérer tes données. Donc mets ta requête dans le while et boucle dessus. Portekoi
EmGeI Posté 11 Août 2008 Auteur Posté 11 Août 2008 Ben bouclé il boucle while ($i <= 10) {$operator_id = $_POST['operator_id'];$ndc = $_POST['ndc'.$i];// Construction de la requête SQL$req .= " ('$operator_id', '$ndc'),";$i++; mais il boucle de trop... Si par exemple je rentre des infos dans 3 champs lui va me faire un insertion de 10 champs vu que while ($i <= 10 en gros ma question est comment faire pour qu'il n'insert que le nombre de champs remplis. Donc si j'ai 3 champs il me fait un insert de 3 champs et si j'en ai 20 il me le fait pour les 20. Je ne sais pas si je suis clair en fait
Portekoi Posté 11 Août 2008 Posté 11 Août 2008 Justement, au lieu de construire ta requête dans la boucle, tu l'exécute directement $connexion = mysql_connect("localhost","root","") or exit("Erreur 101");mysql_select_db( "mobtest" , $connexion) or exit("Erreur 102");while ($i <= 10) {$operator_id = $_POST['operator_id'];$ndc = $_POST['ndc'.$i];// Construction de la requête SQL$req = " INSERT INTO table (operator_id, ndc) VALUES ('$operator_id', '$ndc')";mysql_query($req) or exit('Erreur SQL !'.$req.'<br>'.mysql_error());echo $req;$i++;}mysql_close();
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant