Bonjour à tous,
J'ai 3 mois d'expérience en php et suis confronté à un problème. Je dispose d'un formulaire (produit) et un fichier d'envoie du formulaire(form).Le textarea sur le formulaire est renseigné à l'aide d'une liste provenant d'une fenêtre popup. Il peut donc contenir plusieurs lignes d'enregistrements provenant de la liste.Lors de la sélection d'une ligne son identifiant est récupéré.
Mon problème est comment insérer plusieurs lignes(identifiants) provenant du textarea dans ma base.
J'ai opté pour un foreach parce qu'il ya plusieurs lignes à insérer mais cela ne marche pas.
code du formulaire
<head>
<SCRIPT type="text/JavaScript">
function OuvrirPopup(page,nom,option) {
window.open(page,nom,option);
}
</SCRIPT>
</head>
<FORM name='produit'METHOD="POST" ACTION="form.php">
<table border="0" align="left" >
<div align ="left">
<tr>
<td><font size="4" color="#0000CC">Désignation</font></td>
<td><input type="text" name="designation"></td>
</tr>
<tr>
<td><font size="4" color="#0000CC">Reference</font></td>
<td><input type="text" name="reference"></td>
</tr>
<tr align="left">
<td><font size ="4" color ="#0000CC">Type de composant</font></td>
<td>
<?php
// Fonction de connexion à la base de données
connexion_DB('facturation');
$req=mysql_query("select * from type_composant order by nom asc");
$total= mysql_num_rows($req);
if($total) {
while($data = mysql_fetch_array($req)) //( c'est pour te donner les résultats ligne par ligne )
{
$nom=$data['nom'] ; $id=$data['id'];
echo '<input type="checkbox" name="type_composant[]" value="',$id,'" onClick=\'OuvrirPopup("/produit/test.php","liste","width=300,height=150,menubar=no,status=no")\'/>' ;
echo $nom;
echo '</br>';
}
}
?>
</td>
</tr>
<tr align="left">
<td><font size=" 4"color="#0000CC">Composants</font></td>
<input type="hidden" name="ide" id="ide">
<td><textarea type="text" id="composant" name="composant" cols="40" rows="10" ></textarea></td>
</tr>
<div align="center">
<tr align="center">
<td><input type = "submit" value= "valider" ></td>
</tr>
</div>
</div>
</table>
</FORM>
code de form.php
<?php
/*
si les champs de login et de mot de passe ne sont pas vides
on insère l'utilisateur.
*/
if(isset (isset($_POST["reference"]) && isset($_POST["designation"]))
{
$designation = $_POST["designation"];
$reference = $_POST["reference"];
//requête d'insertion du produit
$sql = "INSERT INTO produit (reference, designation) VALUES('$reference','$designation')";
//exécution de la requête SQL
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$num = mysql_insert_id();
//recupération des composants
foreach ($_POST['ide'] as $_POST['choix']) {
$ide=$_POST['choix'];
echo $ide;
//création de la requête SQL de selection des composants postés
$sql = "SELECT id FROM composant_produit WHERE id = '$ide'";
$resultat = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$ligne = mysql_fetch_row($resultat);
$composan= $ligne[0];
//requête d'insertion du produit
$sql = "INSERT INTO produit_composant (produit_id, composant_produit_id) VALUES('$num','$composan')";
//exécution de la requête SQL
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}
}
echo("<div align=\"center\"><font color=#336666 size = 4>Le produit n°$num a été crée avec succès!</font><br><br>");
?>