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 :

panier et commande d'achat [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut panier et commande d'achat
    salut
    je veux faire un panier d'achat en ligne, mais il ne l'est pas vraiment, il n'y aura pas de paiement en ligne (c'est un projet d'étude et non pas site à hébérger)

    J'ai consulté le tuto sur la création d'un panier en php: pour avoir une petite idée sur l'organisation du travail, mais la différence c'est que je veux utiliser la base de donnée (création avancée d'un panier en php et Mysql).

    Cependant, je ne trouve pas comment procéder à cela.
    Quelles sont les principaux différences entre création simple et avancés? Seulement stockés les $_POST['..'] dans un champ spécifié de la table ou y'a t'ils d'autres changements?

    Pouvez vous m'éclairez le chemin?
    Merci

    NB: je suis de niveau débutante

  2. #2
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut
    En se basant sur la fonction ajouterPanier() du tutoriel j'ai fais ma la meme fonction mais en utilisant la base donnée.
    table: panier
    champ: -produit
    -quantite
    -prix
    -id_client
    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
    function ajouterArticle($libelleProduit,$qteProduit,$prixProduit){
     
    if (creationPanier())
    {
     
    $requete = $bdd->query('SELECT produit, quantite, prix FROM panier WHERE produit =\'' . $libelleProduit . ' \'');
     
     
      if ($positionProduit = $requete->fetch() )
      {
     
       $qteinitial = $_GET['quantite'];
       $qte = $qteinitial + $qteProduit;
       $rep = $bdd->prepare('INSERT INTO panier (quantite) VALUES (?)');
       $rep->execute((array($qte)));
     
     
      }
      else
      {
       $req = $bdd->prepare('INSERT INTO panier (produit, quantite, prix) VALUES (?, ?, ?)');
       $req->execute((array($libelleProduit, $qteProduit, $prixProduit)));
      }
     
    }
     
    else
      echo "Un problème est survenu veuillez contacter l'administrateur du site.";
    }
    Est ce correcte comme ça? ou c'est pas la peine de changer la fonction intiale au tuto?
    Comme aussi, j'ai pas su comment correspondre le nouveau panier au coordonnées du client, càd j'ai pas su comment correspondre id_client avec la table client qui contient le username, password et le nom du client connecté au site (session en cours)

    Merci de me fournir de l'aide afin que je corrige les fautes et que je puisse terminer les autres fonctions après avoir compris.

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Salam ; si tu veux matérialisé ton panier c'est simple , il faut reprendre les champs existant dans la table et les mètrent dans le paniers ensuite tu les insert dans ta table après confirmation du client.
    je crois aussi qu'il te manque la date c'est important. je ne suis expert dans la matière mais juste un avis.
    a propos si ta bdd est en innodb , je crois qu'il faut passer par les transactions.

  4. #4
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut
    Citation Envoyé par redoran Voir le message
    a propos si ta bdd est en innodb , je crois qu'il faut passer par les transactions.
    Bonjour,
    je n'ai pas compris innodb.
    et est ce que le code que j'ai mis est correcte?
    merci

  5. #5
    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
    Par défaut
    Salut

    je n'ai pas compris innodb.

    Recherche du coté GG, genre MySQL InnoDB et MyISAM.
    Essai de voir les différences qu'il y a entre ces 2 là, leur avantages et inconvénients.
    Regarde aussi quel est le moteur de MySQL est utilisé pour ta Bdd, tes tables.

    et est ce que le code que j'ai mis est correcte?
    Théoriquement non étant donné que le panier n'est pas lié à un client, et c'est apparemment ce que tu souhaiterais faire.
    Pour lier la table "panier" à la table "clients", suffit de rajouter un champ "id_client" dans la table "panier".

    Dans ton projet d'étude n'est-il pas prévu toute une partie pour la conception de Bases De Données ?
    Faire du Merise par exemple ? (de l'UML peut être ?)
    C'est théoriquement indispensable, il y a des choses qui ne se devine pas, où alors ça prendra un temps fou avant de l'apprendre de manière auto-didacte.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = $bdd->query('SELECT produit, quantite, prix FROM panier WHERE produit =\'' . $libelleProduit . ' \'');
    Ceci par exemple est théoriquement une erreur de conception.
    Normalement il doit avoir un champ "id_produit" comme clé primaire, et pour récupérer un produit on se basera sur ce champ "id_produit", et non selon son libellé.
    D'une part c'est plus performant, une Bdd est plus rapide quand il s'agit de nombre entier, puis une clé primaire est un index, là encore l'accès à une donnée sera plus performant.
    Puis faire référence à un entier comme paramètre est nettement plus simple à vérifier/filtrer qu'une chaine de caractère, le coté applicatif y gagne en fiabilité, simplicité.
    Il peu très bien avoir 2 produits avec un même libellé, si c'est le cas ici ce sera source de bug.
    Et enfin, faire une requête préparée serait bien mieux que de l'exécuter directement. Il y a un paramètre, donc un risque d'injection SQL persistera toujours.


    Concernant ce tuto.
    Ne remarques tu rien sur la manière de structurer le tableau $_SESSION ?
    Est-il utile, judicieux, nécessaire d'enregistrer le prix des produits dans le panier ?
    D'après toi, comment ferait-on pour gérer le panier pour un internaute non identifié comme client (donc avec ou pas de compte client de créé) et pour un internaute identifié (un client cette fois) ?

  6. #6
    Membre éclairé Avatar de janyoura
    Femme Profil pro
    étudiante ingénierie informatique
    Inscrit en
    Mars 2012
    Messages
    365
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante ingénierie informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 365
    Par défaut
    Salut,
    Recherche du coté GG, genre MySQL InnoDB et MyISAM.
    Essai de voir les différences qu'il y a entre ces 2 là, leur avantages et inconvénients.
    Regarde aussi quel est le moteur de MySQL est utilisé pour ta Bdd, tes tables.
    est-il necessaire que je comprenne ceci pour faire un panier, sachant que comme jai dis c'est juste pour la forme c'est pas un systeme de paiement en ligne.

    Théoriquement non étant donné que le panier n'est pas lié à un client, et c'est apparemment ce que tu souhaiterais faire.
    Pour lier la table "panier" à la table "clients", suffit de rajouter un champ "id_client" dans la table "panier".
    Effectivement j'ai mis un id_client dans la table "panier" mais j'ai pas su comment faire après

    Dans ton projet d'étude n'est-il pas prévu toute une partie pour la conception de Bases De Données ?
    Faire du Merise par exemple ? (de l'UML peut être ?)
    C'est théoriquement indispensable, il y a des choses qui ne se devine pas, où alors ça prendra un temps fou avant de l'apprendre de manière auto-didacte.
    Rien de prévu, d'ailleurs on n'a rien étudié concernant les bases de données, etc. Juste le prof nous a demandé de faire un système d'achat mais sans paiement en ligne, il n'a pas obligé d'utiliser une base de donnée pour cela.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $requete = $bdd->query('SELECT produit, quantite, prix FROM panier WHERE produit =\'' . $libelleProduit . ' \'');
    Ceci par exemple est théoriquement une erreur de conception.
    Normalement il doit avoir un champ "id_produit" comme clé primaire, et pour récupérer un produit on se basera sur ce champ "id_produit", et non selon son libellé.
    D'une part c'est plus performant, une Bdd est plus rapide quand il s'agit de nombre entier, puis une clé primaire est un index, là encore l'accès à une donnée sera plus performant.
    Puis il peu très bien avoir 2 produit avec un même libellé, si c'est le cas ici ce sera source de bug.
    Tout cela semble un grand travail surtout ça demande du temps et moi je suis vraiment préssée :\, y'a t'il un autre moyen pour m'épargner de cette méthode?

    Concernant ce tuto.
    Ne remarques tu rien sur la manière de structurer le tableau $_SESSION ?
    Est-il utile, judicieux, nécessaire d'enregistrer le prix des produits dans le panier ?
    D'après toi, comment ferait-on pour gérer le panier pour un internaute non identifié comme client (donc avec ou pas de compte client de créé) et pour un internaute identifié (un client cette fois) ?
    Je compte faire juste pour un internaute identifié.

    Merci pour votre attention

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 13/10/2011, 11h27
  2. Onglet importation dans commande d'achat
    Par beuzy dans le forum SAP
    Réponses: 0
    Dernier message: 19/07/2011, 09h46
  3. MM - Commande d'achat - tables de prix
    Par Kiefer_S dans le forum SAP
    Réponses: 1
    Dernier message: 16/06/2010, 10h24
  4. LMSW, CATT ou programme pour commande d'achat
    Par kitty2006 dans le forum SAP
    Réponses: 4
    Dernier message: 30/10/2009, 05h07
  5. smartforms pour commande d'achat
    Par kitty2006 dans le forum SAP
    Réponses: 0
    Dernier message: 05/05/2009, 08h59

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