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 :

Refaire un calcul avec des variables SUM


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Par défaut Refaire un calcul avec des variables SUM
    Bonjour, je sollicite votre aide, car je suis un peu perdu depuis 4-5 jours.
    J'ai essayé de trouver une réponse dans les forums, mais étant débutant, je me perd parmi toutes les informations.
    Mon soucis est que je calcul les valeurs recette et dépense de mon tableau avec une requête SUM.
    Jusque là tout va bien
    Le résultat de chaque colonnes est juste.
    Seulement, lorsque j’essaie de refaire un calcul avec ces 2 valeurs (recette - dépense), je n'ai pas d'erreur SQL, mais un résultat fantaisiste.
    Pourriez vous me dire où est mon erreur ?
    Je vous met ici mon code 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    <table align="center" border="1" width="1010px;" style="background-color:#ffffff;">
    	<tr>
    		<td align="center" width="33%"><strong>Total Recette</strong></td>
    		<td align="center" width="33%"><strong>Total D&eacute;pense</strong></td>
    		<td align="center" width="33%"><strong>Cr&eacute;dit - D&eacute;bit</strong></td>
    	</tr>
    	<tr>
    		<?php
     
    		$reponse = $bdd->query('SELECT SUM( montant_recette ) AS total_montant FROM recette WHERE annee=\'2012\'');
     
    		while ($donnees = $reponse->fetch())
    		{
    		?>
    		<td align="center" width="33%"><strong><?php echo $donnees['total_montant']; ?></strong></td>
    		<?php
    		}
    		$reponse->closeCursor();					 
    		?>
    		<?php
     
    		$reponse = $bdd->query('SELECT SUM( montant_depense ) AS total_montant FROM depense');
     
    		while ($donnees = $reponse->fetch())
    		{
    		?>
    		<td align="center" width="33%"><strong><?php echo $donnees['total_montant']; ?></strong></td>
    		<?php
    		}
    		$reponse->closeCursor();					 
    		?>
    		<?php
     
    		$reponse = $bdd->query('SELECT SUM( montant_recette ) AS total_montant_recette,
    								SUM( montant_depense ) AS total_montant_depense
    								 FROM recette, depense WHERE annee=\'2012\'');
     
    		while ($donnees = $reponse->fetch())
    		{
    		?>
    		<td align="center" width="33%"><strong><?php echo $donnees = ($donnees['total_montant_recette'] - $donnees['total_montant_depense']); ?></strong></td>
    		<?php
    		}
    		$reponse->closeCursor();					 
    		?>
    	</tr>
    </table>
    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    ton souci vient d'un problème lié au SQL.
    Quand tu fais ceci :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    FROM recette, depense
    tu fais en fait une multiplication cartésienne de tes données !

    Tu devrais plutôt conserver dans 2 variables distinctes les totaux des requêtes précédentes et afficher leur différence à l'endroit désiré.

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Par défaut
    Merci de ta réponse rawsrc.
    Mais comment faire pour récupérer les données dans 2 variables différentes ?
    Je débute, et je ne connais pas encore toutes les subtilités
    Dois-je faire une variable ['Total_Montant_Recette'] et une autre ['Total_Montant_Depense'] ?
    Et appeler le résultat par :
    <?php echo $donnees = $donnees['total_montant_recette']-$donnees['total_montant_depense']; ?>
    Mais je ne vois pas quoi mettre en requête SQL pour rappeler ces 2 variables.
    Merci encore pour ton aide

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Par défaut
    Bonjour,

    En fait le principe serait de ne pas faire cette troisième requète sql . Après tout tu as déjà toute les données nécessaire dans les deux première non ? .

    Dans tes boucles tu pourrais rajouter ce genre de ligne $total_montant_recette = $donnees['total_montant']et
    $total_montant_depense = $donnees['total_montant']?



    Ensuite plus qu'un petit <?php echo $total_montant_recette - $total_montant_depense; ?>.

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 8
    Par défaut
    Merci Terra126, mais comme je l'ai dis, je débute en PHP.
    Mais j'essaie de me soigner en apprenant
    Je n'arrive pas à mettre les syntaxes que tu me donne.
    J'ai essayé de 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
    <?php
     
    $reponse = $bdd->query('SELECT SUM( montant_recette ) AS total_montant FROM recette WHERE annee=\'2012\'');
     
    $total_montant_recette = $donnees['total_montant']
     
    while ($donnees = $reponse->fetch())
    {
    ?>
    <td align="center" width="33%"><strong><?php echo $donnees['total_montant']; ?></strong></td>
    <?php
    }			
    $reponse->closeCursor();					 
    ?>
    <?php
     
    $reponse = $bdd->query('SELECT SUM( montant_depense ) AS total_montant FROM depense');
     
    $total_montant_depense = $donnees['total_montant']
     
    while ($donnees = $reponse->fetch())
    {
    ?>
    <td align="center" width="33%"><strong><?php echo $donnees['total_montant']; ?></strong></td>
    <?php
    }
    $reponse->closeCursor();					 
    ?>
    <td align="center" width="33%"><strong><?php echo $total_montant_recette - $total_montant_depense; ?></strong></td>
    Mais ça me donne une erreur de syntaxe sur la boucle :
    Parse error: syntax error, unexpected 'while' (T_WHILE)
    Je ne sais pas si ça vient des fermetures des boucles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    }
    $reponse->closeCursor();					 
    ?>
    ou si je place mal mes requêtes.

  6. #6
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    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
    Billets dans le blog
    12
    Par défaut
    Salut,

    comme ça :
    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
    <?php
     
    $reponse = $bdd->query('SELECT SUM( montant_recette ) AS total_montant FROM recette WHERE annee="2012" GROUP BY annee');
    $data    = $reponse->fetch();
    $recette = $data['total_montant'];
     
    $reponse = $bdd->query('SELECT SUM( montant_depense ) AS total_montant FROM depense');
    $data    = $reponse->fetch();
    $depense = $data['total_montant'];
     
    $solde   = $recette - $depense;
    ?>
    <td align="center" width="33%"><strong><?php echo $recette ?></strong></td>
    <td align="center" width="33%"><strong><?php echo $depense ?></strong></td>
    <td align="center" width="33%"><strong><?php echo $solde ?></strong></td>
    Quelques conseils :
    - tu dois essayer de structurer ton code : mettre toujours le PHP au début du script et renvoyer le HTML en fin de script,
    - ne te préoccupes pas de fermer le curseur, PHP le fait pour toi et c'est beaucoup plus rapide
    - quand tu travailles avec des fonction de regroupement (SUM()) pense à toujours mettre en GROUP BY les champs sur lesquels portent le filtre sinon tu vas avoir des résultats imprévus (c'est lié au fonctionnement du moteur MySQL)

    Tu avais oublié le ; en fin de ligne 5 d'où l'erreur.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 24/02/2014, 16h22
  2. [WebI XiR2] Graphique camembert avec des variables et un calcul sur les variables
    Par colom dans le forum Débuter
    Réponses: 0
    Dernier message: 12/02/2014, 15h02
  3. [XL-2010] Calculer avec des variables 32bit
    Par petitours dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/11/2013, 10h42
  4. Probleme de syntaxe avec des calculs integrant des variables
    Par trigger00 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/06/2009, 10h20
  5. Réponses: 4
    Dernier message: 15/12/2002, 05h19

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