[RESOLU] Tableau associer quantités et produits

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 : [RESOLU] Tableau associer quantités et produits

Re: Tableau associer quantités et produits

par Emin&m's » 16 févr. 2014, 22:55

Sujet résolu!

Re: Tableau associer quantités et produits

par Emin&m's » 15 févr. 2014, 19:46

Merci de ta réponse! J'ai essayé ton code, alors oui il fonctionne, mais je ne crois pas qu'il soit adapté au mien... J'ai un message d'erreur, je n'arrive pas à retourner la quantités, voilà donc mon code modifier:
<?php
	for ($i=0;$i<count($_POST['IdProduit']);$i++)
	{
	//on concatène
	$IdProduit .= $_POST['IdProduit'][$i].'|';
	}
	$explore = explode('|',$IdProduit);
	foreach($explore as $valeur)
	{
    if(!empty($valeur))
	{
    $sql = $bdd->query("SELECT * FROM produit WHERE IdProduit='$valeur'") ;
while ($donnees = $sql->fetch())
{

$prix = $prix + $donnees['PrixProduit']; 
 ?> <input type="hidden" name="IdProduit[]" value=<?php echo $donnees['IdProduit'];?>>
 			 <input type="button" src="images/moins.png" class="boutonmoins">
             <input type="text" name="quantites[$valeur]" style="width:15px;height:11px;" value='1'>
			 <input type="button" src="images/plus.png" class="boutonplus">
<?php 
echo $donnees['NomProduit'];  
echo ' ';
echo $donnees['PrixProduit']; 
$NomProduit = $donnees['NomProduit']; 
?> € 
	 <br>

<?php
}
    }
	}?> 
Et
	$bla = $_POST['quantites[$valeur]'];
	print_r($bla);

Re: Tableau associer quantités et produits

par sirakawa » 15 févr. 2014, 10:37

Teste donc ça:
<?PHP
$id_produits = array(1,258,45,23);
$nb_produits = count($id_produits);
$chaine = "<form method = 'post' action = 'traiter.php'>";
for ($i = 0; $i < $nb_produits; $i++)
{
	$id_produit = $id_produits[$i];
	$chaine .= "
             <input type='text' name='quantites[$id_produit]' value='1'>";
}
$chaine .= "<button type = 'submit'>ok</button>
</form>";
print "$chaine";
?>
et
<?PHP
print_r($_POST);
?>

Tableau associer quantités et produits

par Emin&m's » 15 févr. 2014, 01:20

Bonjour!
Je vous explique le problème, je crée un site dans lequel l'utilisateur peut choisir plusieurs produits, pas de problème, ils les cochent et une page récapitule les informations. Pour chaque produits qu'il a choisi, il est possible de mettre une quantité:
Par exemple, je veux deux produits "a", et trois produits "y".
Le résultat doit être stocké dans une base de données. Pour insérer les produits, aucun problème, par contre, pour y associer une quantités, cela devient difficile:

Code pour récupérer l'identifiant de mes produits das un tableau:(inclus dans une boucle while qui liste mes produits)
<input type="hidden" name="IdProduit[]" value=<?php echo $donnees['IdProduit'];?>>
Code permettant de récupérer la quantités(celle ci s'incrémente grâce à un bouton plus et moins):
<input type="text" name="quantites[]" style="width:15px;height:11px;" value="1">
Je reprécise, que avant de gérer la quantités, tous mes produits s'insérait correctement dans la base de données.
Maintenant l'extrait de code de ma page qui insère le résultat ainsi que les boucle qui extrait les valeurs des tableaux:
	  $IdProduit ='';
	  $quantites ='';
	//on boucle
	for ($i=0;$i<count($_POST['IdProduit']);$i++)
	{
	//on concatène
	$IdProduit .= $_POST['IdProduit'][$i].'|';
	}
	$explore = explode('|',$IdProduit);
	//QUANTITES
	//on boucle
	for ($i=0;$i<count($_POST['quantites']);$i++)
	{
	//on concatène
	$quantites .= $_POST['quantites'][$i].'|';
	}
	$exploration = explode('|',$quantites);
	
	foreach($explore as $valeur)
	{
    if(!empty($valeur))
	{
	foreach($exploration as $value)
	{
    if(!empty($value))
	{
	      
    $sql = $bdd->exec("INSERT  INTO reservation (DateReservation, HeureReservation, MinuteReservation, NomCli ,IdProduit, Quantites, PrixTotal)
            VALUES ('$Date','$HeureReservation', '$MinuteReservation', '$NomCli', '$valeur', '$value', '$prix')") ;
    }
	}
	}
	}
L'éxecution de ce code me renvoi dans ma base de données, par exemple si l'on a choisi produit "a" quantites=3 et produit "b" quantites=2:

produit "a" quantités=3;
produit "a" quantités=2;

produit "b" quantités = 3;
produit "b" quantités = 2;

Je comprend tout à fait pourquoi le résultat est ainsi, étant donné que j'ai un foreach imbriqué dans un autre foreach, mais je ne vois vraiment pas comment faire autrement...

Merci d'avance, et si ce poste aurait du être dans php avancé, faite moi savoir!