Salut,

D'abord, j'aimerais dire que le tuto créer un panier est super, malgré 2 ou 3 petits points qui peuvent poser problème, comme par exemple la possibilité à l'utilisateur de rentrer des quantités négatifs dans le panier. Mais ce n'est pas mon sujet.

J'ai fait quelques modifications, pour l'adapter à mes besoins, comme ajouter un subpanier (en plus du addpanier), supprimer le champs texte du panier pour le remplacer par +, - ou del. et sur (index.php pour moi commander.php) j'ai ajouté le nombre de produit ajouté sur chaque produit, et c'est là que je me retrouve avec une difficulté. Le nombre s'affiche bien, mais seulement en rafraîchissant la page. J'ai donc repris le tuto pour tenté de parer au problème, et ça ne fonctionne pas, je ne sais pas quel id je dois donner à mon span concerné, car si je donne un id du genre countprod, le rafraîchissement dynamique ne fonctionne plus.

addpanier.php 13eme ligne

<?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'countprod'] = $panier->countprod();
        $json'message'] = 'Le produit a bien été ajouté à votre panier';
    }else{
        $json'message'] = "vous n'avez pas sélectionner de produit à ajouter au panier";
    }
    echo json_encode($json);

panier.class.php 9eme ligne, je ne sais pas trop quoi marquer comme commande, j'avais mis autre chose a la place de return (je sais plus quoi d’ailleurs) merci de m’éclaircir aussi à ce sujet, car là c'était pour tester si ça rafraîchissait ou non.

public function recalc(){
                $_SESSION'panier'] = $_POST'panier']'quantity'];
        }

        public function count(){
            return array_sum($_SESSION'panier']);   
        }

        public function countprod(){
            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, price FROM products WHERE id IN ('.implode(',',$ids).')');
            }
            foreach($products as $product ) {
                $total += $product->price * $_SESSION'panier']$product->id];
            }
            return $total;

app.js ligne 11

(function($){
    $('.addpanier').click(function(event){
        event.preventDefault();
        $.get($(this).attr('href'),{},function(data){
            if(data.error){
                alert(data.message);
            }else{
                    $('#total').empty().append(data.total); 
                    $('#count').empty().append(data.count);
                    $('#countprod').empty().append(data.countprod);

            }

        },'json');
        return false;
    });

})(jQuery);

voilà, je suppose qu'il existe une class spécifique à lui donner, mais la quel?

Et aussi, empêcher une erreur, lorsque qu'il n'y a pas de produit ajouté (produit = 0 ), si le nombre de produit est à 0, j'ai une erreur a la place de 0.

merci de m'éclaircir à ce sujet.

3 réponses


un ptit up, j'ai toujours pas trouvé de solution

arf, toujours pas de solution, un ptit up. Un ptit semblant de solution me serait utile. Merci d'avance

Bonjour,

je ne comprends pas vraiment ce que tu veux faire ..

Par exemple :

public function count(){
            return array_sum($_SESSION'panier']);  
        }

        public function countprod(){
            return array_sum($_SESSION'panier']);  
        }

Quel est la différence?

Tu veux rajouter une quantité de produit sélectionné ? L'utilisateur rajoute au panier 3 produits A, 4 produits B etc...

Par ailleurs, tu dis que le la quantité de chaque produit du panier s'affiche bien ? As-tu fait l'essai avec 2 ou 3 produits et des quantités différentes?

cordialement