Enregistrement dans ma base

elodie -  
ndaval Messages postés 63 Statut Membre -
Salut,
G une base en mysql avec easyphp,
Mon pb concerne une commande de plusieurs produits,
Ainsi, g 1 page qui permet à mon utilisateur de saisir le nombre de prodiuts qu'il veut commander.
Dans une autre page,avec une boucle 'for', j'affiche, en fonction du nb de produits saisi dans la page précédente, un tableau avec les données nécessaire à la saisie du produit.
Jusque là tou marche, si l'utilisateur veut 3 produits, 3 tableaux s'affichent.
Mais lorsque je click sur le bouton enregistrer (il est hors de ma boucle)pour enregistrer ces 3 produits dans ma base, cela n'enregistre que le dernier produit saisie.

Est-ce que quelqu'un sauré me dire comment je peut faire pour que tous lé produits saisis s'enregistrent?

J'espere que vous avé compris et que vous pouré m'aidé.
Merci
A voir également:

3 réponses

ndaval Messages postés 63 Statut Membre 19
 
Euh tes tablo c des formulaires?

Je suppose que tous tes controles ont le meme nom?
Il faut que tu les nommes differemment... par exemple:

<input name="controle<?echo $MonCompteur?>" >

Bien sur il faut que tu mémorise la valeur de compteur à la fin de ta boucle et que tu l'as passe en param à la page suivante.

Bonne chance.

nico
0
elodie
 
Tou est dans 1 meme formulaire, il y a qu'1 tableau
Mé se tableau est dans une boucle 'for' qui permet de mutiplier le tableau autan de fois que l'utilsateur l'a indiqué (c le nombre de produit kil veu saisir).
Mé je te montre mon code:

Ma page de saisie:

<html>
<body>
<form name="enr" action="enregistre.php">
<h1>COMMANDE </h1>

<?
for ($nb=1; $nb<=$nombre; $nb=$nb+1) {
//$nombre=le nombre de produits saisie dans ma page précédente

$host="localhost";
$user="root";
$password="";
$base="LBN";

mysql_connect($host,$user,$password) or die("Impossible de seconnecter");
mysql_select_db("$base") or die("Impossible de se connecter à
la base");
?>

<table border=1>
<tr><th><h5>Catégorie</h5></th>
<th><h5>RéfProduit</h5></th>
<th><h5>Désignation</h5></th>
<th><h5>Prix Unitaire (en euro)</h5></th>
<th><h5>Quantité</h5></th>
<th><h5>Montant HT</h5></th>
</tr>

<tr>
<td><input type="text" name="categorie" size="20"></td>
<td><input type="text" name="produit" size="20"></td>
<td><input type="texte" name="designation" size="20"></td>
<td><input type="texte" name="pu" size="20"></td>
<td><input type="texte" name="qte" size="10"></td>
<td><input type="texte" name="montantHT" size="20"></td>
</tr>
</table> <br>
<?
}
?>
<div align="center">
<input name="enregistrer" type="submit" value="enregistrer">
</div>
</form>
</body>
</html>

Ma page enregistrer.php:

<?
$host="localhost";
$user="root";
$password="";
$base="LBN";

mysql_connect($host,$user,$password) or die("Impossible de se
connecter");
mysql_select_db("$base") or die("Impossible de se connecter à la
base");

$sql="Insert into detailcommande values
('$produit','$pu','$qte','$montantHT')";
mysql_query($sql) or die ('Erreur SQL!'.$sql.'<br>'.mysql_error
());
?>
//FIN

Je sé pa si tu a tou compris et si tu pourra m'édé
merci
0
ndaval Messages postés 63 Statut Membre 19
 
Dans ta boucle for tu va afficher une ligne de formulaire pour chaque ligne de commande.

Si par exemple ton controle designation à le meme nom pour chaque ligne, tu auras toujours la dernière valeur.

C pour cela qu'il faut que tu le nomme :
<input type="text" name="designation<?echo $nb;?>">

Tu fais cela pour tous tes controles.

A la sortie de ta boucle tu mets le controle suivant:
<input type="hidden" value="<?echo $nb;?>" name="nbligne">

Tu le récupère ds ta page suivante et tu fais une boucle pour retrouver tous tes controles (qui va de 0 à nbligne) .
La il va falloir que tu regardes la doc pour reconstituer le nom de var (avec $$ je crois) car çà fait un moment que j'ai pas touché à du php. Ainsi tu recuperera, par exemple, le contenu de designation1,designation2,..., designationN

N'hésite pas à reposer des questions si tu comprends pas.

nico
0