Aller au contenu

Form AJAX + insertion mysql


Sujets conseillés

Posté (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é par Portekoi
Modo : Merci d'utiliser CODEBOX pour les codes longs
Posté

Bonjour,

Tu dois faire une boucle pour insérer tes données.

Donc mets ta requête dans le while et boucle dessus.

Portekoi

Posté

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:

Posté

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

Veuillez vous connecter pour commenter

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



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