j'ai suivi le tuto de grafikart sur la céation d'un panier en php/mysql.
J'aimerais ajouter cette fonctionnalité te montrer le code,ça va être compliqué.
Si tu regarde le tuto tu comprendras ce que je veux faire.
Enfaite j'ai une page details : qui récupère des données dans la table products
Page details :
<?php require 'header.php';?>
<div class="wrapper">
<div class="container">
<div class="row details">
<?php
require'admin/bdd.php';
$upload_Dir = 'img/produits/';
if (isset($_GET['id'])) {
$id = $_GET['id'];
$reponse = $bdd->prepare("SELECT * FROM products WHERE id = ? ");
$reponse->execute(array($id));
if ($reponse->rowcount()) {
$donnees = $reponse->fetch(PDO::FETCH_ASSOC);
}else{
$error = "Impossible de récupérer les données !";
}
}
?>
<div class="col-lg-6">
<div class="pics">
<img src="<?php echo $upload_Dir.$donnees['image']; ?>" alt="charge-windbreaker" width="450">
</div>
</div>
<div class="col-lg-6">
<div class="descriptif">
<h2><?= $donnees['name']; ?></h2>
<p><?= $donnees['description']; ?></p>
</div>
</div>
<div class="prix">
<h3>Prix Adulte :<span> <?= $donnees['priceA']; ?> €</span></h3>
<h3>Prix Enfant :<span> <?= $donnees['priceJ']; ?> €</span></h3>
</div>
<div class="taille">
<h4>Taille :</h4>
<div class="checkbox checkbox-success checkbox-inline">
<input type="checkbox" id="inlineCheckbox1" value="option1">
<label for="inlineCheckbox1">XS</label>
</div>
<div class="checkbox checkbox-success checkbox-inline">
<input type="checkbox" id="inlineCheckbox2" value="option1">
<label for="inlineCheckbox2">S</label>
</div>
<div class="checkbox checkbox-success checkbox-inline">
<input type="checkbox" id="inlineCheckbox3" value="option1">
<label for="inlineCheckbox3">M</label>
</div>
</div>
<div class="ajout">
<a class="btn btn-primary btn-lg" href="addpanier.php?id=<?php echo $donnees['id']; ?>">Ajouter au panier</a>
</div>
</div>
</div>
</div>
<?php require 'footer.php';?>
Dans cette page j'ai un btn qui envoie dans une page de traitement addpanier.php
<?php
require '_header.php';
$json = array('error' => true);
if (isset($_GET['id'])) {
$product = $DB->query('SELECT id FROM products WHERE id =:id', array('id' => $_GET['id']));
if(empty($product)){
$json['message'] = "Ce produit n'existe pas";
}
$panier->add($product[0]->id);
$json['error'] = false;
$json['total'] = number_format($panier->total(),2,',',' ');
$json['count'] = $panier->count();
$json['message'] = 'Le produit a bien été ajouté à votre panier';
}else{
$json['message'] = "Vous n'avez pas séléctionné de produit à ajouter au panier !";
}
echo json_encode($json);
et j'ai un fichier php qui contient une class qui gère les panier :
<?php
class panier{
private $DB;
public function __construct($DB){
if (!isset($_SESSION)){
session_start();
}
if (!isset($_SESSION['panier'])){
$_SESSION['panier'] = array();
}
$this->DB = $DB;
if (isset($_GET['delpanier'])) {
$this->del($_GET['delpanier']);
}
if (isset($_POST['panier']['quantity'])) {
$this->recalc();
}
}
public function recalc(){
foreach($_SESSION['panier'] as $product_id => $quantity){
if (isset($_POST['panier']['quantity'][$product_id])) {
$_SESSION['panier'][$product_id] = $_POST['panier']['quantity'][$product_id];
}
}
}
public function count(){
return array_sum($_SESSION['panier']);
}
public function total(){
$total = 0;
$ids = array_keys($_SESSION['panier']);
if (empty($ids)) {
$products = array();
}else{
$products = $this->DB->query('SELECT id, priceA FROM products WHERE id IN ('.implode(',',$ids).')');
}
foreach($products as $product){
$total += $product->priceA * $_SESSION['panier'][$product->id];
}
return $total;
}
public function add($product_id){
if(isset($_SESSION['panier'][$product_id])){
$_SESSION['panier'][$product_id]++;
}else{
$_SESSION['panier'][$product_id] = 1;
}
}
public function del($product_id){
unset($_SESSION['panier'][$product_id]);
}
}
?>
voilà si tu peux jeter un oeil .
merci