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 :

faire la somme d'une boucle


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    en formation
    Inscrit en
    Septembre 2019
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : en formation

    Informations forums :
    Inscription : Septembre 2019
    Messages : 90
    Par défaut faire la somme d'une boucle
    Bonjour à toute et à tous.
    Je voudrais afficher la somme de mon panier
    celui ci est créer à partir d'un formulaire permettant le choix de 7 articles différents.
    une fois ce choix fait et la case "votre panier" valider je passe sur la fichier resultat.php
    ici mes articles sélectionnée apparaissent
    il me faudrait afficher la somme des articles.
    J'ai bien des idées pour afficher cette somme mais à chaque fois ça viens s'incruster entre les lignes d'article.
    Auriez vous une astuce pour que la somme s'affiche uniquement en bas et prennent en compte toute les valeurs.

    Amicalement

    nagyp

    Index.php:

    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
     
    <?php require ('connexion.php'); ?>
     <?php require ('cookie.php'); ?>
     
    <tr>
    <h3>Nos produits :</h3>
    <form method='get' action='resultat.php'>
    	<table border="1">
    <td width='80px'>produit nom</td>
    <td width='80px'>prix </td>
    <td width=''>achat</td>
    </tr>
     
    <?php
    $result = $mysqli->query('SELECT produit_id, produit_nom, prix  FROM produits');
     
    while ($data = $result->fetch_array())
     
    {
    echo"<tr><td>".$data['produit_nom']."</td>";
    echo"<td>".$data['prix']."</td>";
    echo"<td><input type='checkbox' name='case[]' value='".$data['produit_id']."' ></td>";
    echo"</tr>";
     
    }
    ?>
    </table>
     <br><input type="submit" value="votre panier" > 
    </form>
    Resultat.php:

    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
     
    <?php require('connexion.php');
    $achat='';
     ?>
    <h3>vous avez choisie :</h3>
    <?php
     
        $achat = $_GET['case']; // place la sortie du get dans la variable achat
        //on a recuperer nos case coché par leurs ID
      foreach ($achat as $articles) // tableau des id
        {
           $result = $mysqli->query('SELECT produit_id, produit_nom, prix FROM produits WHERE produit_id = '. $articles);
           while ($row = $result->fetch_array()) 
           $produits[$row['prix']] = $row['produit_nom']; //array 9 => string 'produitA' (length=8))
        }// filtre les valeurs en fonction de la séléction et presente le resultat sous forme de tableau 
     
     foreach ($produits as $prix => $select_nom): ?>
     
    <table border="1">
    <tr>  
    <td width='180px' align=center>nom du produit</td>
    <?php echo"<td width='180px' align=center>".$select_nom."</td>"; ?>
     
    <td width='80px' align=center>prix en € </td>
    <?php echo"<td width='80px' align=center>".$prix."</td>";?>
    </tr>
    </table>
     
    <?php endforeach ?>

  2. #2
    Membre Expert Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 895
    Par défaut
    Bonjour,

    C'est tout bête en fait -si j'ai bien compris-

    Avant la boucle, il faut déclarer une variable dont la valeur est 0, ensuite pour chaque produit on va ajouter le prix à cette variable (s'il y avait une gestion de la quantité, on aurait ajouté le prix multiplié par la quantité)

    Ca donne quelque chose comme :

    Code php : 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
    <?php $total_amount = 0; // On déclare notre variable, dont la valeur est 0 ?>
    <?php foreach ($produits as $prix => $select_nom): ?>
        <?php
        // On ajoute le prix de notre produit à notre total
        $total_amount += $prix; // Cette façon d'écrire correspond à écrire : $total_amount = $total_amount + $prix
        ?>
        <table border="1">
            <tr>  
                <td width='180px' align=center>nom du produit</td>
                <?php echo"<td width='180px' align=center>" . $select_nom . "</td>"; ?>
     
                <td width='80px' align=center>prix en € </td>
                <?php echo"<td width='80px' align=center>" . $prix . "</td>"; ?>
            </tr>
        </table>
     
    <?php endforeach ?>
     
    <p>
        Le montant total est de <?= $total_amount; /* "<?=" est le shortcode de "<?php echo" */ ?>
    </p>

    Par ailleurs, je vois que tu fais une boucle pour récupérer tes produits... Peut-être en as-tu vraiment besoin mais personnellement, j'aurais utilisé cette boucle pour créer un tableau avec tous les produit_id, ce qui m'aurait permis de faire une seule requête SQL en utilisant WHERE IN. Attention également à utiliser des requêtes préparées, il s'agit quand même de données utilisateur, et même s'il s'agit de checkbox, il est toujours possible d'envoyer ce qu'on veut au formulaire !
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    $product_ids_list = [];
    // J'ai changé la variable $articles par $produit_id car ce ne sont pas des articles mais des ID
    // En réalité, cette boucle ne sert plus à rien vu qu'au final, $achat et $product_ids_list représentent tous les deux la même chose
    // Ce n'est pas forcément le cas, et je voulais vraiment attirer l'attention sur le nom de la variable qui était pas terrible
    foreach ($achat as $produit_id) {
        $product_ids_list[] = $produit_id;
    }
     
    // ATTENTION à utiliser des requêtes préparée, il s'agit quand même de données envoyées par l'utilisateur !!!
    if ($stmt = $mysqli->prepare('SELECT produit_id, produit_nom, prix FROM produits WHERE produit_id IN (?)')) {
        $stmt->bind_param("s", implode(', ', $product_ids_list));
        // Etc... $stmt->execute() et tout le tralala
    }
    ?>

  3. #3
    Membre confirmé
    Femme Profil pro
    en formation
    Inscrit en
    Septembre 2019
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : en formation

    Informations forums :
    Inscription : Septembre 2019
    Messages : 90
    Par défaut réponse à darkstar123456
    Un super grand merci à toi darkstar123456
    je suis dégouter j'avais presque trouver la solution et impossible de finaliser.
    Tu m'a permis de faire un grand pas en avant.
    Merci encore.
    you are the best

  4. #4
    Membre confirmé
    Femme Profil pro
    en formation
    Inscrit en
    Septembre 2019
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : en formation

    Informations forums :
    Inscription : Septembre 2019
    Messages : 90
    Par défaut
    @reaux62

    pourquoi tant de haine ???

    c'est le deuxième message désagréable de votre part.
    Je n'ai pas besoin d’être rabaisser de la sorte.
    je trouve ca dommage car je penser qu'un administrateur était conscient que derrière un message la personne qui l’écrit peut être en difficulté personnelle
    Pour complément d'info ESECAD est une formation à distance en autonomie.

    oui je suis débutante, oui je fait des fautes, oui j'oublie des règles. et oui quant je vois un message blessant je n'ai pas envie à ce moment la de répondre.

    Mais que celui qui est parfait me jette la première pierre.

    De nombreux autre utilisateurs de ce site sont venu à mon aide sans me juger donc je vous invite à m’ignorer si vous ne souhaiter pas m'aider.

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

Discussions similaires

  1. [XL-2003] Faire un somme dans une boucle for each
    Par tools dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 31/01/2011, 08h36
  2. Comment faire la somme d'une expression?
    Par aquafafa dans le forum IHM
    Réponses: 0
    Dernier message: 25/02/2008, 13h31
  3. Comment faire un Sleep dans une boucle PL/SQL
    Par foster06 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 01/02/2008, 18h59
  4. faire la somme d'une colonne d'une listbox
    Par Namson dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 25/04/2007, 23h34
  5. Réponses: 1
    Dernier message: 31/01/2007, 12h30

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