Aller au contenu

Form AJAX + insertion mysql


EmGeI

Sujets conseillés

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é par Portekoi
Modo : Merci d'utiliser CODEBOX pour les codes longs
Lien vers le commentaire
Partager sur d’autres sites

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 :unsure:

Lien vers le commentaire
Partager sur d’autres sites

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();

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...