requete pour inserer plusiseurs lignes.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : requete pour inserer plusiseurs lignes.

par Ryle » 07 juin 2006, 11:20

Ca me semble faisable, si tu considères qu'il te faut rentrer toutes les combinaisons possible il te faut :

* modifier le formulaire pour que l'utilisateur puisse saisir toutes ses valeurs d'un coup, c'est à dire remplacer tes select par des select multiple (ou des cases à cocher) etproposer un ou plusieurs champs de saisie pour qu'il puisse rentrer ses différentes valeurs.

* récupérer tes variables, non plus unitairement mais dans des tableaux et ajouter des boucles autour de ta requête d'insertion pour l'exécuter autant de fois que tu auras d'élément dans tes tableaux. Les boucles pouvant être quelque chose du genre :

Code : Tout sélectionner

- pour chaque catégorie sélectionnée - pour chaque unité sélectionnée - pour chaque valeur saisie -> je fais une insertion en base

par azerty53 » 07 juin 2006, 11:13

pour le moment en code j'ai ca:

page valid_caracteristique.php
$Pid = $_POST['id'];
$Pcar = $_POST['caracteristique'];
$Puni = $_POST['unite'];
$Pval = $_POST['valeur'];
require ("..\ConnectDB.php");
$sql = "INSERT INTO posseder (pro_id, car_id, uni_id, valeur) VALUES ('$Pid', '$Pcar', '$Puni', '$Pval')";
$req = mysql_query($sql) or die ("echec de $sql");
echo 'Succes';
page caracteristique.php
<form action="admin.php?page=valid_produit" method="post">
			<?php
			for ($i=1; $i<=$nombre_champs; $i++)
			{
			?>
			<!-- Listbox des caracteristiques -->	
				<select name="caracteristique">
					<?php
					$sql2 = mysql_query ("SELECT * FROM caracteristique");
					while($req2 = mysql_fetch_array ($sql2))
					{
					?>
						<option><?php echo stripslashes($req2['car_lib']); ?></option>
					<?php
					}
					?>
			<!-- Zone de texte pour rentrer la valeur -->
				</select>
				<input type="text" name="valeur" />
			<!-- Listbox des unites -->
				<select name="unite">
					<?php
					$sql3 = mysql_query ("SELECT * FROM unite ORDER BY uni_lib ASC");
					while($req3 = mysql_fetch_array ($sql3))
					{
					?>
						<option><?php echo stripslashes($req3['uni_lib']); ?></option>
					<?php
					}
					?>
				</select>
				<br />
			<?php
			}
			?>
			<input type="submit" name="valider" value="valider" />
		</form>
ceci est le formulaire qui me permet d'affiche autant de ligne que l'utilisateur souhaite

par azerty53 » 07 juin 2006, 11:10

bah en fait ryle, c'est un peu ca que je souhaite faire mais l'idéal serait de le faire en un clic.

donc en php avec une boucle FOR (etant donné que je demande a l'utilisateur le nombre de ligne qu'il souhaite associer au produit)

ou une autre solution php ou sql ???

:wink: :wink:

par Ryle » 07 juin 2006, 11:06

Faudrait voir ton code et définir un peu plus précisément le résultat que tu attend, parce que là, je vois 8 insertions possibles :

Code : Tout sélectionner

INSERT INTO taTable VALUES (Carac 1, Unité 2, Produit 1, valeur X); INSERT INTO taTable VALUES (Carac 1, Unité 3, Produit 1, valeur X); INSERT INTO taTable VALUES (Carac 2, Unité 2, Produit 1, valeur X); INSERT INTO taTable VALUES (Carac 2, Unité 3, Produit 1, valeur X); INSERT INTO taTable VALUES (Carac 1, Unité 2, Produit 1, valeur Y); INSERT INTO taTable VALUES (Carac 1, Unité 3, Produit 1, valeur Y); INSERT INTO taTable VALUES (Carac 2, Unité 2, Produit 1, valeur Y); INSERT INTO taTable VALUES (Carac 2, Unité 3, Produit 1, valeur Y);
A toi de voir celles qui t'interessent vraiment (peut être toutes d'ailleurs) et de les générer en bouclant sur les carac, unité et valeur saisies :)

requete pour inserer plusiseurs lignes.

par azerty53 » 07 juin 2006, 10:57

Bonjour j'ai un petit probleme dont la solution ne me vient pas a l'esprit pour le moment et j'aurais besoin de conseils.

en fait j'ai une page ou je demande a l'utilisateur de me dire combien de caracteristique (poids, taille diametre etc...) il veut assigner a ce produit.
sachant que ca peut bouger d'un produit a un autre.

donc si il veut donner 2 caracteristiques a un produit (par exemple le poids et la taille) il m'affiche 2 listbox avec les données contenue dans la table caracteristique, 2 zones de texte pour donner une valeur et 2 listbox pour les unites (cm kg etc...).

La structure de mes table est la suivante.
-------------------------------
PRODUIT
pro_id
pro_prix
-------------------------------

-------------------------------
UNITE
uni_id
uni_lib
-------------------------------

-------------------------------
CARACTERISTIQUE
car_id
car_lib
--------------------------------

-------------------------------
POSSEDER
car_id
uni_id
pro_id
valeur
-------------------------------

CONTENU DE MA TABLE CARACTERISTIQUE

car_id : 1
car_lib: Poids
car_id : 2
car_lib: tailles

CONTENU DE MA TABLE UNITE
uni_id: 1
uni_lib: cm
uni_id: 2
uni_lib: kg
uni_id: 3
uni_lib: metre

CONTENU DE MA TABLE PRODUIT
pro_id: 1
pro_pri: 450
et donc je voudrais inserer dans la table POSSEDER
pour le produit 1 la caracteristique 1 et 2 ayant la valeur x et y pour les unites 2 et 3

seulement a chaque fois il ne me rajoute qu'une seule ligne

j'espere que j'ai été clair car mon probleme n'est pas facile a comprendre

Merci beaucoup d'avance

^^[/quote]