Bonjour,
Je continu sur ma lancé comme tout fonctionne pour le reste le panier tuto grafikart, la facture en pdf etc...
Je voulais savoir comment puis je incorporer le choix de la taille des vêtements avec un select par exemple, au future client ?
Je ne sais pas trop vesr quelle méthode m'orienter : php ou javascript ?
merci de votre aide
Tu veux stocker en base de donnée genre pour un produit p, une taille L, une qté 3.
Soit un table size, produit, et une table qui joint tes deux entités Dispo avec en clé étrangere IDPRODUIT ID TAILLE et la qté.
Tu récupères ça en ajax, puis sur le onchange du select tu vérifies la dispo
non non juste sur la fiche du produit un choix de taille uniquement, il n'y aura pas de stock se sera à la commande.
exemple une chekbox ou le client choisit la taille c'est tout.
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
<?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>
<SELECT name="taille">
<OPTION value ="S">S</OPTION>
<OPTION value ="M">M</OPTION>
<OPTION value ="L">L</OPTION>
<OPTION value ="XL">XL</OPTION>
</SELECT>
</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';?>