Calcul ligne par ligne dans un tableau PHP - MySQL
Résolu/FerméAstolpho Messages postés 73 Date d'inscription vendredi 8 avril 2022 Statut Membre Dernière intervention 12 juin 2024 - 20 avril 2023 à 14:34
- Calcul ligne par ligne dans un tableau PHP - MySQL
- Aller à la ligne excel - Guide
- Tableau croisé dynamique - Guide
- Site de vente en ligne particulier - Guide
- Partager photos en ligne - Guide
- Apparaitre hors ligne instagram - Guide
8 réponses
18 avril 2023 à 15:48
Bonjour,
Déjà, pour le prix par ligne, pas besoin du php .. tu peux le gérer directement dans ta requête SQL
par exemple
SELECT a.nfacture, a.prixtotal, a.quantity, a.promo, a.customers, a.start_date, a.summary, a.state, a.numero, b.paid , a.prixtotal * a.quantity as PRIX_LIGNE
Ensuite, pour le total du tableau, tu as oublié d'additionner les valeurs précédentes à ta variable $total
Avec ma modif dans ta requête sql; ça donnerait :
$prix = $donnees['PRIX_LIGNE'] $total += $prix
18 avril 2023 à 16:06
Bonjour Jordane45,
J'ai toujours le même résultat 580 au lieu de 420 j'ai :
1 article à 100 avec 2 quantité = 200
1 article à 160 avec 1 quantité = 160
1 article à 30 avec 2 quantité = 60
En tout ça devrait faire 420 et non 580, il y à 160 de plus ça correspond à l'article qui vaut 160.
18 avril 2023 à 16:52
Peux tu nous montrer une capture écran du résultat de la requête exécutée dans phpmyadmin ?
Les données qui y sont correspondent bien à ce que tu attends ?
18 avril 2023 à 17:09
18 avril 2023 à 18:37
Ce n'est pas le résultat de la requête que je t'ai donné visiblement ou alors tu n'affiche pas tous les champs dans ta capture écran
Modifié le 18 avril 2023 à 18:41
De plus, je ne vois rien dans ta requête, qui limite à la facture numéro 7.....
18 avril 2023 à 19:08
j'ai fait la requête qui limite la facture à la numéro 7 (AND a.nfacture = 7)
WHERE a.nfacture=b.nfacture AND a.nfacture = 7 ORDER BY nfacture DESC
J'ai le même résultat
18 avril 2023 à 18:59
18 avril 2023 à 20:50
Ta requête, ne retourne qu'une seule ligne.... Et le montant qui figure, n'est pas le bon ?
Toi, tu veux obtenir la liste des produits commandés ?' C'est bien ça ?
Tu dois donc bien constater que ta requête SQL ne retourne pas les informations que tu souhaites....
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question18 avril 2023 à 21:15
Oui c'est ça, la liste des produits pour chaque facture, une par ligne dans le tableau.
18 avril 2023 à 21:50
Et ce n'est pas ce que te retourne ta requête...
19 avril 2023 à 12:22
J'ai fait cette requête :
SELECT a.nfacture, SUM(services.price * a.quantity) - SUM(promotions.amount * a.quantity) as prixtotal, a.quantity, a.promo, a.customers, DATE_FORMAT(a.start_date,'%d/%m/%Y') as start_date, a.summary, a.state, a.numero, b.paid, (services.price * a.quantity) - (promotions.amount * a.quantity) as PRIX_LIGNE, services.price FROM (SELECT invoices.invoice as nfacture, services.id_items, quantity as quantity, SUM(services.price) as prixtotal, SUM(promotions.amount) as promo, customers.fullname as customers, start_date, states.state as state, invoices.numero as numero, comments.summary as summary FROM invoices LEFT JOIN customers ON (invoices.id_customers=customers.id_customers) LEFT JOIN services ON (invoices.invoice=services.invoice) LEFT JOIN promotions ON (invoices.invoice=promotions.invoice AND services.id_items = promotions.id_items) LEFT JOIN items ON (services.id_items=items.id_items) LEFT JOIN states ON (invoices.invoice=states.invoice) LEFT JOIN comments ON (invoices.invoice=comments.invoice) WHERE states.type = 1 AND (states.state = 1 OR states.state = 9) GROUP BY nfacture, services.id_items ) as a, (SELECT invoices.invoice as nfacture, SUM(payments.amount) as paid FROM invoices LEFT JOIN payments ON (invoices.invoice=payments.invoice) GROUP BY nfacture ) as b, services WHERE a.nfacture=b.nfacture AND services.invoice = a.nfacture AND services.id_items = a.id_items ORDER BY nfacture DESC
j'ai le message :
Fatal error: Uncaught PDOException: SQLSTATE[42S22]: Column not found: 1054 Champ 'promotions.amount' inconnu dans field list
alors que le champs amount existe bien dans la table promotions
19 avril 2023 à 13:01
bonjour,
l'erreur vient de la ligne 11: la table promotions n'est pas dans le FROM correspondant.
Plus tu compliques ton SELECT, plus tu t'éloignes de la réponse à ta question initiale.
19 avril 2023 à 19:00
cette requete foncionne :
SELECT invoices.invoice as nfacture, SUM(services.price * services.quantity) as prixtotal, services.quantity as quantity, (SELECT SUM(promotions.amount) FROM promotions WHERE promotions.invoice = services.invoice AND promotions.id_items = services.id_items) as promo, states.state as state, invoices.numero as numero, SUM(payments.amount) as paid, SUM(services.price * services.quantity) - IFNULL((SELECT SUM(promotions.amount) FROM promotions WHERE promotions.invoice = services.invoice AND promotions.id_items = services.id_items), 0) as PRIX_LIGNE FROM invoices LEFT JOIN services ON (invoices.invoice=services.invoice) LEFT JOIN states ON (invoices.invoice=states.invoice) LEFT JOIN payments ON (invoices.invoice=payments.invoice) WHERE states.type = 1 AND (states.state = 1 OR states.state = 9) GROUP BY nfacture ORDER BY nfacture DESC
20 avril 2023 à 12:45
peux-tu alors marquer la discussion comme résolue?
20 avril 2023 à 14:34
j'ai pas terminé