IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

creation d'une class panier?comment m'y prendre


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 214
    Points : 623
    Points
    623
    Par défaut creation d'une class panier?comment m'y prendre
    Bonjour a tous

    aujourd'hui je souhaite encore faire un exercice sur la POO, je souhaiterais réaliser une class Panier.

    - est ce pratique de réaliser cette class? ca vaut le coup en POO?
    - dans ce cas je peu créer cette classe corretement

    voici ce que je pensait faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
    Class Panier
    {
      private $article;
      private $quantite;
      private $panier;
      private $session;
     
      public function __construct($article,$quantite)
      {
      $this->article=$article;
      $this->quantite=$quantite;
      if(!isset($_SESSION['monpanier']))
        {
          echo "creation du panier";
          $this->session = $_SESSION['monpanier']=array();
        }
     
        else
        {
          $_SESSION['monpanier']='nom_article => $this->article';'nombre => $this->quantite';
          $this->panier=$_SESSION['monpanier'];
        }
      }                                           
     
      public function getPanier()
      {
        return ($this->panier);
      }
    }
    $achat=new Panier('stylo',7);
    $detail= $achat->getPanier();
    print_r ($detail);
    ?>
    pour le moment je souhaite donner à manger à l'objet 2 éléments:

    -le nom de l'article
    -sa quantite

    et d'ajouter avec la methode ajouter dans le panier.
    Ici j'ai mis panier est session en attribut sont t'il au bon endroit?

    pour le moment je me contente de remplire le panier avec ces 2 éléments et sans m'occuper de la base de donnée. Au fur et a mesure j'ajouterais d'autre

    mon panier contient 7 stylo est le résultat attendu.
    manque t'il des éléments que j'ai oublié d'ajouter, quels sont les erreurs que j'ai fait?

    merci de vos réponses

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Cette fois, c'est nettement plus intéressant, je dirais même que ça s'impose

    De mon coté, et dans un cas similaire, je fais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    class Panier {
     
    	public function __construct() {
    			if (!isset($_SESSION['panier'])) {
    				$_SESSION['panier'] = array();
    			}
    			$this->nombre =& $_SESSION['panier']['nombre'];
    	}
    }
    Il y a 2 aspects qui me semble important :
    1/ Le passage par référence des données de la session (avec le $var =& $_SESSION)
    Ceci permet de garder une cohérence des données dans les 2 éléments de stockage : l'Objet Panier et la session panier, car elles sont bien dans 2 éléments différents.

    2/ De stocker toutes les données du panier dans une seule variable de session (panier), ce qui évite des mélanges, et surtout de tout récupérer d'un block.

    Pour ton Objet Panier, je ne vois pas l'utilité de la propriété session.
    Ensuite, il te faudra voir quelles seraient les données qui seront bon de stocker dans cet Objet/Session, et aussi celles qui seraient à éviter.

    Prenons par exemple la nom de l'article, qui apparemment tu souhaite le mettre.
    Ce panier théoriquement serait stocké aussi dans la Bdd (table panier), ce qui permettra à un client de le récupérer un autre jour, donc plus tard.
    Si on entre temps on effectue une modification sur ce nom, du coup il y aura une incohérence entre la donnée récupérée après et celle actuelle.
    La théorie veut que stocker le nom ne serait pas judicieux. Stocker juste son identifiant permettra de récupérer son nom dans la Bdd, et là, il sera correcte tout le temps.
    C'est théorique, à toi de voir se que tu veux faire.

    Aussi, tu donne comme nom $achat à cette Objet quant tu l'instancie, ce n'est pas tout à fait correcte, car la client n'a pas encore acheté, ce n'est encore qu'un panier.
    Pourquoi ne pas la nommer $panier ? C'est plus simple, un seul coup d'oeil tu sais qu'est ce quelle contient, à quoi elle correspond.

    Bon code

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Août 2008
    Messages
    1 214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 1 214
    Points : 623
    Points
    623
    Par défaut
    merci de ton aide runcode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $this->nombre =& $_SESSION['panier']['nombre'];
    a quoi correspond l'opérateur & que tu met ici c'est pour cela?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    / Le passage par référence des données de la session (avec le $var =& $_SESSION)
    Ceci permet de garder une cohérence des données dans les 2 éléments de stockage : l'Objet Panier et la session panier, car elles sont bien dans 2 éléments différents.
    je n'ai encore j'amais vu ce "et" après un egale. Ceci m'a sembler bizzard.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Prenons par exemple la nom de l'article, qui apparemment tu souhaite le mettre.
    Ce panier théoriquement serait stocké aussi dans la Bdd (table panier), ce qui permettra à un client de le récupérer un autre jour, donc plus tard.
    Dans bas base de donnée les articles dont mis en ID_article, j'avais mis article diretement afin de simiplifier mon exercice, que la le script serais plus lisible car avec des chiffres de partout on peut se mélanger les pinceaux . Mais peut être que c'est bas une bonne chose de le faire est de travailler directement dans avec des ID.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Pour ton Objet Panier, je ne vois pas l'utilité de la propriété session.
    Objet panier, tu veux dire attribut panier? ici la class va donc envoyer diretement le panier? comme elle change tous le temps on n'a pas besoin de protéger cette objet via les methodes?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ensuite, il te faudra voir quelles seraient les données qui seront bon de stocker dans cet Objet/Session, et aussi celles qui seraient à éviter.
    Pour le moment l'objet et la quantite, ensuite lorsque j'aurais maîtriser tous cela j'ajouterais le prix total, le prix unitaire de chaque articles.
    Pour le moment je ne sais pas quelle information qui ne fait pas mettre, peut être que ca viendra...(peut être les ID_articles, les commentaires s'il y en a )

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    a quoi correspond l'opérateur & que tu met ici c'est pour cela?
    Je l'ai dis et expliqué, c'est un passage par référence.
    En somme, on déclare que l'une serait une référence de l'autre.
    Du coup, qu'on modifie l'une ou l'autre variable, leur valeurs seront les mêmes.
    Fait des essais, tu le visualisera surement mieux.

    Objet panier, tu veux dire attribut panier? ici la class va donc envoyer diretement le panier? comme elle change tous le temps on n'a pas besoin de protéger cette objet via les methodes?
    Directement non, il faudra le coder, faire explicitement les requête d'insertions, de mise à jours, et de récupération du panier.
    Et les vérifs qui vont avec.
    Il y a du boulot quoi


    Pour le moment l'objet et la quantite, ensuite lorsque j'aurais maîtriser tous cela j'ajouterais le prix total, le prix unitaire de chaque articles.
    Pour le moment je ne sais pas quelle information qui ne fait pas mettre, peut être que ca viendra...(peut être les ID_articles, les commentaires s'il y en a )
    Réfléchi bien, car pour un nom de produit, passe encore, mais pour le prix, alors là, quand il s'agit d'argent, il vaut mieux savoir ce que l'on fait.
    Il sera peut être rare de changer le nom d'un produit, mais le prix risque d'être des opérations très courantes. Le mettre en mémoire dans le panier risque d'être un gros inconvénient.
    En règle général, on ne le fait pas, on se contente de l'afficher lorsque que ceci est demandé, donc "à la volée", en somme son prix est recherchée dans la Bdd.

    Puis se pose d'autres problèmes comme la fiscalité, la TVA.
    Si tu compte vendre uniquement en France (Métropolitaine), il y a 2 TVA selon les types de produits.
    Mais si tu compte vendre dans les DOM aussi (à la Réunion ), c'est plus la même chanson, les choses se compliquent.
    Et ça continue si c'est pour tout l'Europe, le monde entier, aux particuliers, les professionnels, etc ...

    En somme, n'en fait pas de trop au risque de tout reprogrammer.
    Je te conseils de commencer par ne gérer que les Ids et la quantité souhaitée par produit.
    Saute pas les étapes quoi.

Discussions similaires

  1. probleme avec la creation d une classe "polynome"
    Par le_voisin dans le forum C++
    Réponses: 10
    Dernier message: 05/09/2006, 01h52
  2. delphi 7 : tuto sur la creation d'une classe ?
    Par Lorenzo77 dans le forum Delphi
    Réponses: 4
    Dernier message: 18/05/2006, 02h33
  3. [Tableau][Base]Création d'une classe de gestion de tableau
    Par mariogarcia dans le forum Collection et Stream
    Réponses: 40
    Dernier message: 05/11/2005, 02h19
  4. Warning lors la creation d'une classe
    Par addack dans le forum Langage
    Réponses: 11
    Dernier message: 02/11/2005, 13h06
  5. Réponses: 11
    Dernier message: 01/09/2004, 20h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo