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

Langage PHP Discussion :

Total de mes produits ajouter au panier


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Total de mes produits ajouter au panier
    Bonjour à vous, je suis en pleine création d'un système de panier, et j'ai quelques problèmes.

    J'aimerais additionner tous les résultats de mon panier sauf que sa n'additionne que la premier variante j'ai l'impression.

    Voici un screen de mon panier : https://prnt.sc/rwawa1
    le code du panier :
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
                        <div class="row">
                                <div class="col-xl-8">
                                    <div class="card">
                                        <div class="card-body">
                                            <div class="table-responsive">
                                                <table class="table table-centered mb-0 table-nowrap">
                                                    <thead class="thead-light">
                                                        <tr>
                                                            <th>Service</th>
                                                            <th>Description</th>
                                                            <th >Configuration code</th>
                                                            <th colspan="4">prix</th>
     
                                                        </tr>
                                                    </thead>
                                                    <tbody>
                                                         <?php $panier = $db->executeQuery('SELECT * FROM panier WHERE user_id ORDER BY id DESC ', array($userInfo[0]["id"]));
                                                            foreach ($panier as $paniers) { 
     
                                                            $produit = $db->executeQuery('SELECT * FROM produit WHERE id_produit = ? ORDER BY id', array($paniers["produit_id"]));
     
                                                            $produit_hebergement = $db->executeQuery('SELECT * FROM produit_hebergement WHERE id_produit = ? ORDER BY id', array($paniers["produit_id"]));
                                                        ?>
                                                        <tr>
                                                            <td>
                                                                <i class="bx bx-server h3"></i>
                                                            </td>
                                                            <td>
                                                                <?php echo $produit[0]["titre"]; ?>
                                                            </td>
                                                            <td>
                                                                <?php echo $panier[0]["commande_id"]; ?>
                                                            </td>
                                                            <td>
                                                                <?php echo $produit[0]["prix"]; ?>€ /mois
                                                            </td>
                                                            <td>
                                                                <a href="javascript:void(0);" class="action-icon text-danger"> <i class="bx bx-trash font-size-18"></i></a>
                                                            </td>
                                                        </tr>
                                                    <?php } ?>
                                                    </tbody>
                                                </table>
                                            </div>
                                            <div class="row mt-4">
                                                <div class="col-sm-6">
                                                    <a href="./index" class="btn btn-secondary">
                                                        <i class="mdi mdi-arrow-left mr-1"></i> Continuer ma commande </a>
                                                </div> <!-- end col -->
                                                <div class="col-sm-6">
                                                    <div class="text-sm-right mt-2 mt-sm-0">
                                                        <a href="./#" class="btn btn-success">
                                                            <i class="mdi mdi-cart-arrow-right mr-1"></i> Payer la commande </a>
                                                    </div>
                                                </div> <!-- end col -->
                                            </div> <!-- end row-->
                                        </div>
                                    </div>
                                </div>
                                <div class="col-xl-4">
     
                                     <div class="card">
                                        <div class="card-body">
                                            <h4 class="card-title mb-3">Résumer du panier</h4>
     
                                            <div class="table-responsive">
                                                <table class="table mb-0">
                                                    <tbody>
                                                        <tr>
                                                            <td>Hors taxe : </td>
                                                            <td>0.00€</td>
                                                        </tr>
                                                        <tr>
                                                            <th>Total :</th>
                                                            <th>
                                                                <?php 
                                        $montant = (1 * $produit[0]["prix"]);
                                        $total = 0;
                                        $total = $montant + $total;
                                        $superTotal += $total;
                                        echo $total;
                                    ?>€
                                                            </th>
                                                        </tr>
                                                    </tbody>
                                                </table>
                                            </div>
                                            <!-- end table-responsive -->
                                        </div>
                                    </div>
                                    <!-- end card -->
                                </div>
                            </div>
    Pour finir les screen de ma table panier dans ma base de donnée : https://prnt.sc/rwaxrm
    Et la table ou il y a mes produits : https://prnt.sc/rwb2qy

    Voila donc si vous pouvez me proposer des solutions sa serais trop bien car la j'avance plus.
    Merci à vous d'avance.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 447
    Points : 4 966
    Points
    4 966
    Par défaut
    Salut,

    D'abord les 3 requêtes successives ne sont pas une bonne solution, tu peux les remplacer par une seule requête et utiliser les jointures mysql :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select titre,commande_id,prix from panier pa
    inner join produit prod on (prod.id_produit=pa.produit_id)
    inner join produit_hebergement p_heb on (p_heb.id_produit=pa.produit_id)
    where user_id=?

    Puis c'est normal que ça ne compte que le premier prix, parce que tu ne fais pas l'addition dans la boucle foreach ($panier as $paniers).

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Bonjour
    Bonjour, déjà merci pour ta réponse, mais ce n'est pas ce que je cherche à faire. pour le MySQL je réduire après.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    euh, tu as créé des tables par type de produit ?
    - produit,
    - produit_hebergement,
    - etc.

    Si t'as réellement fait ça, tu peux recommencer, c'est en plein dans ce qu'il ne faut surtout pas faire.

    Je n'ai pas vu de fonction d'échappement des données affichées.
    Tu les échappes à un moment dans le processus ou pas ?

    J'ai essayé de reprendre le code mais bon, j'ai un peu joué aux devinettes
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    <?php
     
    // échappement des caractères dangereux
    $hsc = function($p): string { return htmlspecialchars((string)$p, ENT_QUOTES, 'utf-8'); };
     
    $panier = $db->executeQuery('SELECT * FROM panier WHERE user_id ORDER BY id DESC ', [$userInfo[0]["id"]]);
    $tbody  = [];
    $total  = 0;
    foreach ($panier as $item) {
        $produit = $db->executeQuery('SELECT * FROM produit WHERE id_produit = ? ORDER BY id', [$item["produit_id"]])[0];
        $produit_hebergement = $db->executeQuery('SELECT * FROM produit_hebergement WHERE id_produit = ? ORDER BY id', [$item["produit_id"]])[0];
        $total  += $produit['prix'];
        $tbody[] = <<<html
    <tr>
      <td><i class="bx bx-server h3"></i></td>
      <td>{$hsc($produit["titre"])}</td>
      <td>{$hsc($item["commande_id"])}</td>
      <td>{$hsc($produit["prix"])}€ /mois</td>
      <td><a href="javascript:void(0);" class="action-icon text-danger"> <i class="bx bx-trash font-size-18"></i></a></td>
    </tr>
    html;
    }
    ?>
    <div class="row">
        <div class="col-xl-8">
            <div class="card">
                <div class="card-body">
                    <div class="table-responsive">
                        <table class="table table-centered mb-0 table-nowrap">
                            <thead class="thead-light">
                                <tr>
                                    <th>Service</th>
                                    <th>Description</th>
                                    <th>Configuration code</th>
                                    <th colspan="4">prix</th>
                                </tr>
                            </thead>
                            <tbody><?= implode('', $tbody)?></tbody>
                        </table>
                    </div>
                    <div class="row mt-4">
                        <div class="col-sm-6">
                            <a href="./index" class="btn btn-secondary">
                                <i class="mdi mdi-arrow-left mr-1"></i> Continuer ma commande </a>
                        </div> <!-- end col -->
                        <div class="col-sm-6">
                            <div class="text-sm-right mt-2 mt-sm-0">
                                <a href="./#" class="btn btn-success">
                                    <i class="mdi mdi-cart-arrow-right mr-1"></i> Payer la commande </a>
                            </div>
                        </div> <!-- end col -->
                    </div> <!-- end row-->
                </div>
            </div>
        </div>
        <div class="col-xl-4">
            <div class="card">
                <div class="card-body">
                    <h4 class="card-title mb-3">Résumé du panier</h4>
                    <div class="table-responsive">
                        <table class="table mb-0">
                            <tbody>
                            <tr>
                                <td>Hors taxe : </td>
                                <td><?= $total ?>>€</td>
                            </tr>
                            <tr>
                                <td>Total :</td>
                                <td></td>
                            </tr>
                            </tbody>
                        </table>
                    </div>
                    <!-- end table-responsive -->
                </div>
            </div>
            <!-- end card -->
        </div>
    </div>

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Bonjour, merci pour ta réponse, donc pour t'expliquer un peux mieux mon procéder :
    Mes produit sont stocker dans la table produit
    Avec un id, un produit_id, et pour finir un prix

    Dans mon panier je stock un id, et le produit_id
    ce que je souhait faire c'est que quand j'ai x produit dans mon panier que cela se calcul automatiquement.

    mais attention je reviens sur le fête que les tables ou il y a produi_hébergement,produit_db ect ect servent a afficher les caractéristiques pour mes clients et dans aucun cas cela à un impact dans mon panier.

    Voici un screen de la table panier : https://prnt.sc/rwrj4i
    Et un screen de la table produit : https://prnt.sc/rwrjxn

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ok,
    si tu veux que le prix du panier se mette à jour quand ton client appuie sur + ou - pour faire changer les quantités, ça relève du javascript et pas du PHP
    Ensuite je ne vois pas trop l'intérêt d'avoir séparé les détails des produits entre une table produit et une autre produit_hebergement.
    Un produit_hebergement est un produit, certes il peut être spécifique mais cela reste quand même un produit.
    Tu devrais revoir la modélisation de cet aspect avant de continuer

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2020
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2020
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Bonjour en gros j'utilise deux table différent car j'ai plusieurs produit qui ne sont pas identique donc impossible pour moi de les mettre en une seul table tout simplement.

    Donc ma question c'est ce que je peux faire le total de mon panier sans passer par un système de quantité ?

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

Discussions similaires

  1. Ajout à un panier - Intégration des produits
    Par Exenter dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 28/07/2016, 11h32
  2. [PrestaShop] supprimer le bouton "ajouter au panier" de produits phares et de categories
    Par solaar dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 02/12/2014, 11h38
  3. Empêcher l'ajout ultérieur d'un produit dans un panier
    Par bahamut100 dans le forum Langage
    Réponses: 9
    Dernier message: 26/11/2008, 21h46
  4. [Conception] Ajout des produits dans un panier
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/09/2006, 11h17
  5. [MySQL] Ajout d'un nouveau produit dans un panier
    Par ghyosmik dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/09/2006, 15h41

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