panier produits php et mysql
code version 1
Code:
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:
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.