Liste déroulante dynamique

Fermé
stefy - 10 avril 2008 à 10:32
 sativa808 - 15 août 2008 à 16:05
Bonjour à tous!
Voici mon problème:
Je dois créer un formulaire qui permet de faire correspondre plusieurs matières premières pour un produit
exemple:
nom du produit :confiture
matière premiere : eau, sucre, ...

Dans un premier tps je vais donc sélectionner le produit à partir d'une liste déroulante
ensuite j'ai une seconde liste déroulante qui me permet de selectionner une matière première
si je clique sur "ajouter liste", une autre liste déroulante saffiche avec les matière première (grace à une fonction en javascript)
cela fonctionne bien mais ensuite pour l'enregistrement c une autre histoire
pouvez vous m'aider svp?
je pence que c avec les id de la liste déroulante qu'il faut résoudre le pb mais je ne vois pas cmt faire
voici mon code:


<form name="produit" action="comp_prod.php" method="post">
<tr><td align="left"><b>Nom du produit :</b></td>
<td align="left"><center>

<select id="prod" name="prod" >
<?php
$result = mysql_query ("select distinct(id_produit_client), nom_produit_client from produits_client ORDER BY nom_produit_client" );

if (!$result)
{
echo "Une erreur est survenue.\n";
}

while ($row = mysql_fetch_row($result))
{
echo "<option value=\"".$row[0]."\">".$row[1]."</option>";
}
?>
</select></td></tr>
<tr><td align="left"><b>Nom des matières premières :</b></td>
<td align="left">

<script language="javascript">
var i=0;
function addSelect()
{
i++;

// On récupère l'endroit où devra être ajouté la liste
var divCible = document.getElementById("divCible");

// On récupère la liste modèle
var selModele = document.getElementById("mp");

// On la clone dans une nouvelle variable
var nvxSel = selModele.cloneNode(true);

// (pour la présentation, on crée un retour à la ligne)
var br = document.createElement("br");

// On adapte les attributs de la nouvelle liste : nom, id et affichage
nvxSel.name = "select" + i;
nvxSel.id = "select" + i;
nvxSel.style.display = "inline";

// On ajoute tout ça à l'emplacement voulu

divCible.appendChild(nvxSel);
divCible.appendChild(br);
}
</script>

<!-- Création d'une liste modèle, qui ne sera pas visible -->

<?php
echo "<select id=\"mp\" name=\"mp\" \"onclick = copie(this)\" >";

$result = mysql_query ("select distinct(id_mp), nom_mp from matiere_premiere ORDER BY nom_mp" );

if (!$result)
{
echo "Une erreur est survenue.\n";
}
echo "<option></option>";
while ($row = mysql_fetch_row($result))
{

echo "<option value=\"".$row[0]."\">".$row[1]."</option>";
}
?>
</select>

<div id="divCible"></div>
<button onclick="javascript:addSelect();" type="button">Ajouter Liste</button>
</td></tr>
<tr><td>
</center>
<input type="submit" value="valider" name="valider"/>
</form>
</td></tr>
<?php
if (isset($_POST["prod"]))
{
$result = mysql_query ( "INSERT INTO etre_compose (id_pdt, id_mp)
VALUES ('".$_POST["prod"]."', '".$_POST["mp"]."')");
if (!$result)
{
echo "Une erreur est survenue.\n";
}
}

1 réponse

hello,
as tu résolu ton soucis?
si oui, as tu une solution please, je subis la même galère pour enregister les valeurs des champs ajouter dynamiquement.

@+
0