Probleme d'array (panier)

Signaler
Messages postés
5
Date d'inscription
mercredi 15 mars 2006
Statut
Membre
Dernière intervention
10 octobre 2007
-
Messages postés
182
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
22 octobre 2010
-
Bonjour à tous,

Je viens de commencer la création d'un panier et j'avoue rencontrer quelques problèmes.

Voici mon code, dites moi si vous voyez des choses qui ne vont pas car moi j'avoue ne plus rien y voir!!!!

<?php

    function PanierInit()
    {
        $_SESSION['panier'] = array();
        $_SESSION['panier']['num'] = array();
        $_SESSION['panier']['qte'] = array();
    }
   
    function PanierExiste()
    {
        if (isset($_SESSION['panier']))
        {   
            $panier = true;
        }
        else
        {
            $panier = false;
        }
       
        return $panier;
    }
       
    function AjoutPanier($num, $qte)
    {
        $ajouter = false;
       
        if(isset($num) && isset($qte))
        {
            array_push($_SESSION['panier']['num'], $num);
            array_push($_SESSION['panier']['qte'], $qte);
           
            $ajouter = true;
        }
       
        return $ajouter;
    }
       
    function ProduitExiste($num)
    {
        if(count($_SESSION['panier']['num']) > 0 && array_search($num,$_SESSION['panier']['num']) != false)
        {
            $produitExiste = true;
        }
        else
        {
            $produitExiste = false;
        }
       
        return $produitExiste;
    }
       
    function ModifQte($num, $qte)
    {
        $nb = count($_SESSION['panier']['num']);

         $ajouter = false;
       
        for($i = 0; $i < $nb; $i++)
        {
            if($num == $_SESSION['panier']['num'][$i])
            {
                $_SESSION['panier']['qte'][$i] = $qte;
                $ajouter = true;
            }
        }
       
        return $ajouter;
    }
       
    function SupprimerProduit($num)
    {
       
        $nb = count($_SESSION['panier']['num']);

         $supp = false;
       
        for($i = 0; $i < $nb; $i++)
        {
            if($num == $_SESSION['panier']['num'][$i])
            {
                array_splice($_SESSION['panier']['num'],$i,1);
                array_splice($_SESSION['panier']['qte'],$i,1);
               
                $supp = true;
            }
        }
               
        return $supp;
    }
?>

Est ce que mon panier est bien créer? je pense que oui mais mon plus
gros problème c'est pour vérifier si un produit et déjà dans le panier,
lui modifier que ça quantité.


Merci pour votre aide

1 réponse

Messages postés
182
Date d'inscription
jeudi 20 mai 2004
Statut
Membre
Dernière intervention
22 octobre 2010

salut,

tu t'y connais pas un peu en programmation orientée objet ? cela te faciliterai la vie :

il te faut d'abord une classe produit, qui aura les attributs necessaire a l'identification d'un produit

class Product
{
    var $reference, $description, $price, $number;
   
    function Product( $reference, $description, $price, $number )
    {
        $this->reference = $reference;
        $this->description = $description;
        $this->price = $price;
        $this->number = $number;
    }
   
    function getReference()
    {
        return $this->reference;
    }
   
    function setNumber( $number )
    {
        $this->number = $number;
    }
}

puis une classe panier qui contient un tableau de produit

class Panier
{
    var products = array();
   
    function add( $product )
    {
        $this->products[] = $product;
    }
   
    function getProduct( $reference )
    {
        foreach( $this->products as $product )
        {
            if( $product->getReference() == $reference ){
                return $product;
            }
        }
        return null;
    }
   
    function modif( $reference, $number )
    {
        $product = $this->getProduct( $reference );
       
        if( isset( $product ) ){
            $product->setNumber( $number );
        }
    }
}

pour garder ton panier tu conserverais ton systeme de session (n'oublie pas qu'il faut serializer un objet pour le mettre en session et le deserialize en le recuperant ).

en fait tu instancierai ton objet
Panier

$panier = new Panier();

quan tu veux ajouter un produit tu l'instancie :

$products = new Products(  'AB201',  'description produit',  11, 3 );

et tu l'ajoute au panier :

$panier->add( $products );

(je n'ai pas penser a la fonction de suppression mais il te suffit de retirer le produit du tableau de produits )