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 :

Additionner tous les montants HT [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é
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut Additionner tous les montants HT
    Bonjour à tous,

    Je souhaiterai savoir comment faire pour additionner le montant HT ( $montant_HT) de tous mes produits dans le cas de mon code suivant :

    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
     while ($data = mysql_fetch_assoc($res_visu_cde))
     { extract($data);
     
    //Requete pour designation du produit
    $produit="SELECT * FROM Produit WHERE Reference=".$data['LC_IdProduit']."";
    $res_produit=mysql_query($produit) or die (mysql_error());
    $data4 = mysql_fetch_assoc($res_produit);
     
     $prix_unit_HT= round(0.945 * $data['LC_MontantTTC'], 2);
     $montant_HT= round((0.945 * $data['LC_MontantTTC']) * $data['LC_Quantite'] * $data4['QteMoyen'] , 2); 
     
        echo "\n";
        echo "<tr><td align='left'><font size='2' color='#000066'>".$data['LC_IdProduit']."</font></td>";
    	echo "<td><font size='2' color='#000066'>".$data4['NomProduit']."</font></td>";
        echo "<td align='right'><font face='arial' size='2' color='#000066'>".$data['LC_Quantite']." × ".$data4['QteMoyen']." ".$data4['UniteVente']."</font></td>";     
        echo "<td align='right'><font face='arial' size='2' color='#000066'>".$prix_unit_HT." €</font></td>";
    	echo "<td align='right'><font size='2' color='#000066'>".$data['LC_MontantTVA']." %</font></td>";
        echo "<td align='right'><font face='arial' size='2' color='#000066'>".$montant_HT." €</font></td>";
        echo "<tr><td colspan='6'><hr></td></tr>";
     }
    Merci pour votre aide.

    Mikael

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu additionnes a chaque tour de boucle, qu'est ce qui te pose probleme ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par sabotage Voir le message
    qu'est ce qui te pose probleme ?
    Le problème, c'est que je ne suis pas une star en php, ni en boucle...
    Donc j'aimerai bien un pti coup de main !

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Il suffit que tu crées une variable initialisée à zero et que tu additionnes des montants ht dessus à chaque tour de boucle :

    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
    22
    23
    24
    25
    26
    27
     
    $total_montant_ht = 0;
     
    while ($data = mysql_fetch_assoc($res_visu_cde))
     { extract($data);
     
    //Requete pour designation du produit
    $produit="SELECT * FROM Produit WHERE Reference=".$data['LC_IdProduit']."";
    $res_produit=mysql_query($produit) or die (mysql_error());
    $data4 = mysql_fetch_assoc($res_produit);
     
     $prix_unit_HT= round(0.945 * $data['LC_MontantTTC'], 2);
     $montant_HT= round((0.945 * $data['LC_MontantTTC']) * $data['LC_Quantite'] * $data4['QteMoyen'] , 2); 
     
    $total_montant_ht +=  $montant_HT;
     
        echo "\n";
        echo "<tr><td align='left'><font size='2' color='#000066'>".$data['LC_IdProduit']."</font></td>";
    	echo "<td><font size='2' color='#000066'>".$data4['NomProduit']."</font></td>";
        echo "<td align='right'><font face='arial' size='2' color='#000066'>".$data['LC_Quantite']." × ".$data4['QteMoyen']." ".$data4['UniteVente']."</font></td>";     
        echo "<td align='right'><font face='arial' size='2' color='#000066'>".$prix_unit_HT." €</font></td>";
    	echo "<td align='right'><font size='2' color='#000066'>".$data['LC_MontantTVA']." %</font></td>";
        echo "<td align='right'><font face='arial' size='2' color='#000066'>".$montant_HT." €</font></td>";
        echo "<tr><td colspan='6'><hr></td></tr>";
     }
     
    echo 'La somme de mes montants HT vaut : '. $total_montant_ht;

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Avant la boucle, aucun produit n'a été listé donc
    $Tot_HT=0;
    A l'intérieur de la boucle, on a un nouveau montant, donc
    $Tot_HT += $montant_HT ;
    équivalent à
    $Tot_HT = $Tot_HT + $montant_HT;
    A la sortie le boucle, $Tot_HT contient le montant total, il n'y a plus qu'à l'imprimer
    echo "<la présentation >".$Tot_HT;

    PS, évidemment, il y en a qui sont plus rapides que moi

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Merci Madfrix et Pierre Dolez,

    Au moins vos explications me permettent de comprendre le fonctionnement.

    Généralement on voit des boucles du genre avec i.

    Et c'est donc moins facile à comprendre.

    En fait, c'est logique, mais pour pouvoir le refaire faut au moins comprendre une fois. (Certains dirons faut chercher avant de demander, oui je sais )

    En tout cas, merci à vous !

  7. #7
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Citation Envoyé par mikael2235 Voir le message
    Généralement on voit des boucles du genre avec i.
    En fait, ton while est une boucle d'une longueur indéfinie qui tourne tant que tu n'arrives pas à la fin de ton tableau associatif mysql. Tu aurais pu exploiter ce tableau également avec foreach et for même si le while est probablement le plus adpaté à cette situation.

    Si le problème est résolu, je t'invite à cliquer sur le bouton résolu

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

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 09h33
  2. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 10h31
  3. Les Langages ne sont pas tous les mêmes ......
    Par Max Payne dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/08/2003, 13h51
  4. Réponses: 4
    Dernier message: 16/08/2003, 13h21
  5. Enlever tous les M&Mme des enregistrements
    Par marc olivier dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/07/2003, 12h24

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