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 :

[SQL] Fonction SUM qui ne fonctionne pas !


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut [SQL] Fonction SUM qui ne fonctionne pas !
    Bonjour à tous !

    Je souhaitez récupérer l'ensemble des valeurs du prix ttc retournés par ma requête pour en faire la somme et après l'afficher dans une facture PDF ( à l'aide de la class FPDF ) !
    Tout marche sauf ça... ça me retourne seulement la derniere valeur enregistrée du prix ttc et non la somme ... je vous montre mon code ce sera plus explicite :

    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
    $req = mysql_query("SELECT SUM(prix_ttc) AS 'somme', nom, prix_ttc FROM produits GROUP BY prix_ttc LIMIT 12;") or die('Erreur de connexion '.mysql_error());
    
    // Initialisation des 5 colonnes
    $colonne_nom = "";
    $colonne_qte = "";
    $colonne_pu_ht = "";
    $colonne_total_ht = "";
    $colonne_total_ttc = "";
    
    // Pour chaque ligne ajouter le champ à la colonne correspondante
    while($donnees = mysql_fetch_array($req))
    {
        $libelle = $donnees['nom'];
        $prix_ttc = $donnees['prix_ttc'];
        $pu_ht = ttc_to_ht($donnees['prix_ttc'],19.6);
    	$qte = 1;
    	$qte = $qte.',0';
    	$total_ht = $pu_ht*$qte;
    	$total_ttc = $prix_ttc*$qte;
        
        $colonne_nom = $colonne_nom.$libelle."\n";
    	$colonne_qte = $colonne_qte.$qte."\n";
    	$colonne_pu_ht = $colonne_pu_ht.$pu_ht.' €'."\n";
    	$colonne_total_ht = $colonne_total_ht.$total_ht.' €'."\n";
        $colonne_total_ttc = $colonne_total_ttc.$total_ttc.' €'."\n";
    	
    	$total1 = ttc_to_ht($donnees['somme'],19.6);
    	$tva = tva_from_ht($total1,19.6);
    	$total2 = $donnees['somme'];
    	
    }
    mysql_close();
    J'ai mis en rouge la partie qui est censé retourner la somme, mais qui n'affiche que le dernier en enregistrement ... Voila merci de votre aide et désolé pour le dérangement si c'est une erreur bête !

  2. #2
    Membre actif Avatar de Momodedf
    Inscrit en
    Juillet 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Juillet 2007
    Messages : 246
    Points : 221
    Points
    221
    Par défaut
    On peut avoir la partie affichage de ton code stp ?
    Parceque là tu ne fais que remplir des variables.

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Bien sûr tien la voila :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $pdf->SetFont('Arial','BI',8);
    $pdf->Text(158,192,$total1.' €');
    $pdf->Text(158,196,$tva.' €');
     
    if(!empty($total2)){
    $pdf->Text(158,200,$total2.' €');
    }
    else { 
    $pdf->Text(158,200,'0 €');
    }
     
    $pdf->Output();

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    t'es sur de ton group by? c'est bizare un group by sur un prix

    Tu a testé ta requete directement sous phpMyAdmin? elle te revoi quoi?

  5. #5
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    Par défaut
    Bonjour,

    Moi ce que je trouve bisarre aussi c'est qu'il n'a pas d'erreur sql disant : nom ne fait pas partie de la fonction d'agrégat.

  6. #6
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Non je ne suis pas sûr de mon group by, à vrai dire je débute en PHP MySql ...
    Pour Andalor, non il n'ya pas d'erreur sql, juste la fonction SUM qui ne s'éxecute pas comme je le veux

    PS : c'est quoi une fonction d'agrégat lol ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    a mon avis le pb vient de la requete teste la sur phpMyAdmin jusqu'à ce que tu obtienne le bon resultat

  8. #8
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Je l'ai testé sous PhpMyAdmin, la colonne somme me retourne les même résultats que la colonne prix_ttc ... Y'aurai pas une histoire de COUNT la dedans ?

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    non count ça compte le nombre de résultats correspondant à ta requete mais ça ne totalise pas le contenu

  10. #10
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    Par défaut
    Je me demandais si ce n'était pas plutôt ceci qu'il vous fallait, à savoir la somme de chaque client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("SELECT SUM(prix_ttc) AS 'somme', nom FROM produits GROUP BY nom;")

  11. #11
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    OK Merci !
    Donc est ce que quelqu'un aurait une solution pour que je puisse calculer la somme de tous les prix ttc retournés par ma requête et ensuite la réutiliser ??

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 386
    Points : 275
    Points
    275
    Par défaut
    donc sans group by si tu les veux tous

  13. #13
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Non Andalor ta requête ne fonction tjrs pas, ça m'affiche encore seulement le dernier enregistreement ... :S

  14. #14
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    Par défaut
    Au pire, vous faites 2 requêtes :

    Somme Total de tout les prix de la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(prix_ttc) AS 'somme' FROM produits
    Ceci retourne un seul enregistrement :
    exemple : sommme | 230


    Somme des prix grouper par nom :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUM(prix_ttc) AS 'somme', nom FROM produits GROUP BY nom
    Ceci retourne autant d'enregistrement qu'il y a de nom différents dans la table :
    exemple : nom | Maurice | Robert | JeanPaul | ...
    sommme | 20 | 40 | 10 |....

    Chaque prix pour chaque client :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT prix_ttc, nom FROM produits
    Ceci retourne tout les enregistrements de la table, donc on peut se retrouver avec plusieurs fois le même nom avec plusieurs prix différents (je donne pas d'exmple c'est suffisement explicite.)

  15. #15
    Membre habitué
    Inscrit en
    Juin 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 133
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par nigg4z Voir le message
    Non Andalor ta requête ne fonction tjrs pas, ça m'affiche encore seulement le dernier enregistreement ... :S

    Vous l'avez testé par l'intermédiaire du système de requête de phpmyadmin ? Parceque votre code doit être réadapté pour la recevoir.
    Enfin si vous l'avez tester sur PhpMyAdmin, je ne comprends pas pourquoi elle ne fonctionne pas, d'autant qu'elle est directement tirée d'un cours de sql

    Vous avez combien d'enregistrement dans votre table ?

  16. #16
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2007
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Sayé ça fonctionne enfin

    Merci Andalor, j'ai fais 2 requêtes et c'est bon c'est régler ! hihi

    Bonne continuation à tous et merci du temps que vous m'avez consacré.

    Peace !

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

Discussions similaires

  1. Fonction recursive qui ne fonctionne pas
    Par Hightuxdotnet dans le forum Langage
    Réponses: 3
    Dernier message: 18/02/2009, 16h38
  2. fonction confirm() qui ne fonctionne pas sur IE7
    Par JackBeauregard dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/06/2008, 09h47
  3. Fonction mysql qui ne fonctionne pas pour un ancien postgreIste
    Par floreasy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/01/2008, 18h49
  4. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17
  5. [SQL] Requête à jointure qui ne fonctionne pas
    Par Bensor dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/12/2004, 16h10

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