code version 1

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
 
<?php
if(isset($_POST['ajouter']) && !empty($_POST['id']) && !empty($_POST['qte']) && $_POST['qte']!=0)
{
 
	$id = $_POST['id'];
	$qte = $_POST['qte'];
 
	$connexion=ConnectBD();
 
	//si le panier est vide====================================>
	if (empty($_SESSION['panier']))
	{
 
		  $_SESSION['panier']=array(); 
		  $_SESSION['panier'][$id]=$qte;
 
	}
	//si panier déjà rempli===================================>
	else
	{
		echo "panier : ";
		var_dump($_SESSION['panier']);
		//suppression d'un article (on a cliqué sur un bouton supprimer) 
		if(isset($_POST['supprimer']))
		{ 
		unset($_SESSION['panier'][$id]);
		echo $qte.' produits supprimé du panier!!';
		}
		else
		{
			//Ajout d'un nouvel id et une nouvelle quantité ou modification de la quantité d'un article 
			if(isset($_SESSION['panier'][$id])) 
			{
				$_SESSION['panier'][$id] += $qte;
			} else 
			{
				$_SESSION['panier'][$id] = $qte;
			}
 
			$panier=$_SESSION['panier'];
 
			foreach($panier as $key=>$value)
			{
				echo '<br />produit: '.$key.' - quantite: '.$value.'<br />';
				$quantite=intval($value);
			}
 
			// on "extrait" les id du panier 
			$id_liste=implode('","',array_keys($_SESSION['panier']));
			$id_liste='"'.$id_liste.'"';
			//requete sur la table avec tous les id présents dans $id_liste 
			$sql="SELECT * FROM produits WHERE code_produit IN ($id_liste)";
			$requete=TraiterRequete($sql);
			while($data=mysql_fetch_assoc($requete))
			{	
				$prix=floatval($data['prix_produit_htva']);
				echo'Produit: '.$data['nom_produit'].' - Quantité: '.$quantite.' - Prix à l\'unité: '.$prix.' - Prix de toutes les pièces: '.($data['prix_produit_htva']*$quantite).'<br />';
			}
 
		}
	}
 
} 
else  
{
	echo "rien";
}
?>
Bonjour
j'en suis tjrs à l'ébauche d'un panier produit

Pour l'instant ce code (version 1) m'affiche ceci:

produit: cia_tos - quantite: 1
produit: san_cam - quantite: 2
Produit: Ciabatta Toscane - Quantité: 2 - Prix à l'unité: 4.4 - Prix de toutes les pièces: 8.8
Produit: sandwich Campagnard - Quantité: 2 - Prix à l'unité: 3.9 - Prix de toutes les pièces: 7.8

Le problème est le suivant(entre le foreach et la fin du code) :
1.La quantité est juste dans les 2 premières lignes mais pas dans les 2 dernières lignes
2.je voudrais afficher la ligne 1 avec la ligne 3 et la ligne 2 avec la ligne 4 pour cela
j'ai comme option de mettre un if à la place du while et de mettre ce if dans la boucle for each,
mais en le faisant je crée une différence entre produits et code_produit (et non plus entre quantités).

Je suis une x de plus calé à ce stade.

J'aurais besoin de guides.

Je poste les 2 versions du code...

Merci.


code version2:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
 
<?php
 
if(isset($_POST['ajouter']) && !empty($_POST['id']) && !empty($_POST['qte']) && $_POST['qte']!=0)
{
 
	//recupération des données
	$id = $_POST['id'];
	$qte = $_POST['qte'];
 
	$connexion=ConnectBD();
 
	//si le panier est vide====================================>
	if (empty($_SESSION['panier']))
	{ 
		  $_SESSION['panier']=array();
		  $_SESSION['panier'][$id]=$qte;
	}   
 
	//si panier déjà rempli===================================>
	else
	{
		echo "panier";
		var_dump($_SESSION['panier']);
		//suppression d'un article (on a cliqué sur un bouton supprimer) 
		if(isset($_POST['supprimer']))
		{ 
			unset($_SESSION['panier'][$id]);
		}
		else
		{
			//Ajout d'un nouvel id et une nouvelle quantité ou modification de la quantité d'un article 
			if(isset($_SESSION['panier'][$id])) 
			{
				$_SESSION['panier'][$id] += $qte;
			} else 
			{
				$_SESSION['panier'][$id] = $qte;
			}
 
			$panier=$_SESSION['panier'];
 
			foreach($panier as $key=>$value)
			{
				echo '<br />produit: '.$key.' - quantite: '.$value.'<br />';
				// on "extrait" les id du panier 
				$id_liste=implode('","',array_keys($_SESSION['panier']));
				$id_liste='"'.$id_liste.'"';
				//requete sur la table avec tous les id présents dans $id_liste 
				$sql="SELECT * FROM produits WHERE code_produit IN ($id_liste)";
				$requete=TraiterRequete($sql);
				if($data=mysql_fetch_array($requete))
				{	
					$prix=floatval($data['prix_produit_htva']);
					$quantite=intval($value);
					echo'Produit: '.$data['nom_produit'].' - Quantité: '.$quantite.' - Prix à l\'unité: '.$prix.' - Prix de toutes les pièces: '.($quantite*$prix).'<br />';
				}
 
			}
 
		}
	}
} 
else  
{
	echo "rien";
}
?>
affiche ceci:

produit: cia_tos - quantite: 1
Produit: Ciabatta Toscane - Quantité: 1 - Prix à l'unité: 4.4 - Prix de toutes les pièces: 4.4

produit: san_cam - quantite: 2
Produit: Ciabatta Toscane - Quantité: 2 - Prix à l'unité: 4.4 - Prix de toutes les pièces: 8.8

nom_produit et code_produit ne correspondent pas.