[RESOLU] Sous Total par compte

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Sous Total par compte

Re: [RESOLU] Sous Total par compte

par securizedMonster » 08 nov. 2025, 02:04

Tu as pu regler ton soucis ?

Re: Sous Total par compte

par bernard25 » 21 juin 2025, 14:46

Re-Bonjour,
Pour celles et ceux que cela intéresse :

Code : Tout sélectionner

$requetetest =$bdd->prepare('SELECT * FROM '.$comptabilite_BDD.' WHERE referencecopropriete LIKE "'.$numcopro.'%" AND dateecriture >="'.$datedebutexercice.'" AND dateecriture <="'.$datefinexercice.'" ORDER BY compte ASC'); $requetetest->execute(); $requetetest02 =$bdd->prepare('SELECT * FROM '.$comptabilite_BDD.' WHERE referencecopropriete LIKE "'.$numcopro.'%" AND dateecriture >="'.$datedebutexercice.'" AND dateecriture <="'.$datefinexercice.'" ORDER BY compte DESC'); $requetetest02->execute(); $donneeid = $requetetest02->fetch(); $dernierid = $donneeid['id']; $subTotal = 0; $oldCompte = ""; // la requete sql // le traitement while ($data = $requetetest->fetch()) { if($data['totaldebit']>0){ if(empty($oldCompte)){ $oldCompte = $data['compte']; } if(!empty($oldCompte) && $oldCompte != $data['compte']){ echo 'Sous-Total Compte '.$oldCompte.' : '.number_format($subTotal, 2, '.', ' ').'</br>'; $subTotal = 0; $oldCompte = $data['compte']; } echo 'Ligne ID '.$data['id'].' '.$data['fournisseur'].' / Compte '.$data['compte'].' Montant : '.$data['totaldebit'].'<br />'; $subTotal += $data['totaldebit']; if($dernierid ==$data['id']){ echo 'Sous-Total Compte '.$oldCompte.' : '.number_format($subTotal, 2, '.', ' ').'</br>'; } } }
et le résultat :
Ligne ID 17 STE NETTOYAGE / Compte 101-400 Montant : 174.00
Ligne ID 49 STE NETTOYAGE / Compte 101-400 Montant : 162.00
Sous-Total Compte 101-400 : 336.00
Ligne ID 48 PROVISIONS / Compte 101-650 Montant : 162.00
Sous-Total Compte 101-650 : 162.00
Ligne ID 18 STE NETTOYAGE / Compte 401 Montant : 174.00
Sous-Total Compte 401 : 174.00
Ligne ID 1 Ste FIRMIN / Compte 401-001 Montant : 144.00
Ligne ID 15 / Compte 401-001 Montant : 144.00
Sous-Total Compte 401-001 : 288.00
Ligne ID 50 STE NETTOYAGE / Compte 401-715 Montant : 162.00
Sous-Total Compte 401-715 : 162.00
Ligne ID 3 ELEC PRO / Compte 501-001 Montant : 651.56
Sous-Total Compte 501-001 : 651.56

Re: Sous Total par compte

par bernard25 » 21 juin 2025, 14:21

Bonjour à Tous,

J'essaie d'obtenir le résultat escompté mais sans succès

Code : Tout sélectionner

$requetetest =$bdd->prepare('SELECT * FROM '.$comptabilite_BDD.' WHERE referencecopropriete LIKE "'.$numcopro.'%" AND dateecriture >="'.$datedebutexercice.'" AND dateecriture <="'.$datefinexercice.'" ORDER BY compte ASC'); $requetetest->execute(); $subTotal = 0; $oldCompte = ""; while ($data = $requetetest->fetch()) { if($data['totaldebit']>0){ echo 'Ligne ID '.$data['id'].' '.$data['fournisseur'].' / Compte '.$data['compte'].' Montant : '.$data['totaldebit'].'<br />'; $subTotal += $data['totaldebit']; if(empty($oldCompte)){ $oldCompte = $data['compte']; } if(!empty($oldCompte) && $oldCompte != $data['compte']){ $subTotal = 0; } } }
Voici le résultat :
Ligne ID 17 STE NETTOYAGE / Compte 101-400 Montant : 174.00
Ligne ID 49 STE NETTOYAGE / Compte 101-400 Montant : 162.00
Ligne ID 48 PROVISIONS / Compte 101-650 Montant : 162.00
Ligne ID 18 STE NETTOYAGE / Compte 401 Montant : 174.00
Ligne ID 1 Ste FIRMIN / Compte 401-001 Montant : 144.00
Ligne ID 15 / Compte 401-001 Montant : 144.00
Ligne ID 50 STE NETTOYAGE / Compte 401-715 Montant : 162.00
Ligne ID 3 ELEC PRO / Compte 501-001 Montant : 651.56

Ce que j'aimerai obtenir c'est le total de chaque compte :

Ligne ID 17 STE NETTOYAGE / Compte 101-400 Montant : 174.00
Ligne ID 49 STE NETTOYAGE / Compte 101-400 Montant : 162.00
Sous-Total : 336.00
Ligne ID 48 PROVISIONS / Compte 101-650 Montant : 162.00
Sous-Total : 162.00
Ligne ID 18 STE NETTOYAGE / Compte 401 Montant : 174.00
Sous-Total : 174.00
Ligne ID 1 Ste FIRMIN / Compte 401-001 Montant : 144.00
Ligne ID 15 / Compte 401-001 Montant : 144.00
Sous-Total : 288.00
Ligne ID 50 STE NETTOYAGE / Compte 401-715 Montant : 162.00
Sous-Total : 162.00
Ligne ID 3 ELEC PRO / Compte 501-001 Montant : 651.56
Sous-Total : 651.56

Merci pour votre aide qui serait la bienvenue, je me sens bien seul sur un problème qui me dépasse

Re: Sous Total par compte

par bernard25 » 20 juin 2025, 15:35

Bonjour Or1,
Merci de t'intéresser à mon problème et pour le lien

juste avec GROUP BY pas de changement
Voici ce que j'ai fais

Code : Tout sélectionner

$requetetest =$bdd->prepare('SELECT compte, SUM(totaldebit) as totaldebit FROM '.$comptabilite_BDD.' WHERE referencecopropriete LIKE "'.$numcopro.'%" AND dateecriture >="'.$datedebutexercice.'" AND dateecriture <="'.$datefinexercice.'" GROUP BY compte ORDER BY compte ASC'); $requetetest->execute();
qui me donne :
Changement : 101-400 336
Changement : 101-650 162
Changement : 401 174
Changement : 401-001 288
Changement : 401-715 162
Changement : 501-001 651.56
ce qui est OK
Peut-être puis-je abuser de ton savoir
maintenant j'aimerais afficher une table avec toutes les lignes de chaque compte et lorsque cela change de compte afficher le sous-total.
Actuellement j'affiche bien ma table avec tous les comptes, mais là j'avoue, j'ai les neurones à l'arrêt

Merci beaucoup

Re: Sous Total par compte

par or 1 » 19 juin 2025, 16:29

un group by dans la requête sql : https://sql.sh/cours/group-by

Re: Sous Total par compte

par bernard25 » 19 juin 2025, 15:42

Voici le résultat :
101-400 Total Général : 336
101-650 Total Général : 162
401 Total Général : 174
401-001 Total Général : 288
101-650 Total Général : 162

Re: Sous Total par compte

par bernard25 » 19 juin 2025, 15:39

J'ai trouvé laborieusement un semblant de solution (pour l'instant je l'ai fait sur 5 comptes différents) :

Code : Tout sélectionner

$cpte01=0; $cpte02=0; $cpte03=0; $cpte04=0; $cpte05=0; $cpte06=0; $cpte07=0; $cpte08=0; $cpte09=0; $cpte10=0; // $compteur = 0; while ($data = $requetetest->fetch()) { $compte01 = '101-400'; $compte02 = '101-650'; $compte03 = '401'; $compte04 = '401-001'; $compte05 = '101-650'; $compte06 = '401-001'; $compte07 = '401-325'; $compte08 = '401-715'; $compte09 = '401-999'; $compte10 = '501-001'; if($data['totaldebit']>0){ if($data['compte'] == $compte01){ $cpte01= $cpte01 + $data['totaldebit']; $_SESSION['compte1'] = $compte01; $_SESSION['totalgeneralcompte1'] = $cpte01; } if($data['compte'] == $compte02){ $cpte02= $cpte02 + $data['totaldebit']; $_SESSION['compte2'] = $compte02; $_SESSION['totalgeneralcompte2'] = $cpte02; } if($data['compte'] == $compte03){ $cpte03= $cpte03 + $data['totaldebit']; $_SESSION['compte3'] = $compte03; $_SESSION['totalgeneralcompte3'] = $cpte03; } if($data['compte'] == $compte04){ $cpte04= $cpte04 + $data['totaldebit']; $_SESSION['compte4'] = $compte04; $_SESSION['totalgeneralcompte4'] = $cpte04; } if($data['compte'] == $compte05){ $cpte05= $cpte05 + $data['totaldebit']; $_SESSION['compte5'] = $compte05; $_SESSION['totalgeneralcompte5'] = $cpte05; } } } echo $_SESSION['compte1'].' Total Général : '.$_SESSION['totalgeneralcompte1'].'</br>'; echo $_SESSION['compte2'].' Total Général : '.$_SESSION['totalgeneralcompte2'].'</br>'; echo $_SESSION['compte3'].' Total Général : '.$_SESSION['totalgeneralcompte3'].'</br>'; echo $_SESSION['compte4'].' Total Général : '.$_SESSION['totalgeneralcompte4'].'</br>'; echo $_SESSION['compte5'].' Total Général : '.$_SESSION['totalgeneralcompte5'].'</br>';
Mais qui me semble du bricolage, sur 10 comptes, c'est faisable, mais il y en aura entre 30 et 50
Je cherche depuis plusieurs jours et je n'ai rien trouvé de concret sur les forums

Merci de pouvoir m'aider

Sous Total par compte

par bernard25 » 19 juin 2025, 11:05

Bonjour à Toutes et à Tous,

Je souhaite afficher le total par compte, j'ai trouvé un petit morceau de code mais qui ne correspond pas

Voici les résultat de ma table :
les données de la lignes affichées ici : ID 17 / Compte 101-400 : Montant Débit 174.00
les données de la lignes affichées ici : ID 49 / Compte 101-400 : Montant Débit 162.00
les données de la lignes affichées ici : ID 48 / Compte 101-650 : Montant Débit 162.00
les données de la lignes affichées ici : ID 18 / Compte 401 : Montant Débit 174.00
les données de la lignes affichées ici : ID 1 / Compte 401-001 : Montant Débit 144.00
les données de la lignes affichées ici : ID 15 / Compte 401-001 : Montant Débit 144.00
les données de la lignes affichées ici : ID 50 / Compte 401-715 : Montant Débit 162.00
les données de la lignes affichées ici : ID 3 / Compte 501-001 : Montant Débit 651.56

Code : Tout sélectionner

$requetetest =$bdd->prepare('SELECT * FROM '.$comptabilite_BDD.' WHERE referencecopropriete LIKE "'.$numcopro.'%" AND dateecriture >="'.$datedebutexercice.'" AND dateecriture <="'.$datefinexercice.'" ORDER BY compte ASC'); $requetetest->execute(); $subTotal = 0; $oldCompte = ""; while ($data = $requetetest->fetch()) { if($data['totaldebit']>0){ if(empty($oldCompte)){ $oldCompte = $data['compte']; } if(!empty($oldCompte) && $oldCompte != $data['compte']){ echo 'le sous total : ID '.$data['id'].' / Compte '.$data['compte'].' : Sous-Total '.$subTotal,'<br /><br />'; $subTotal = 0; } $subTotal += $data['totaldebit']; } }
qui me donne :
Le sous total : ID 48 / Compte 101-650 : Sous-Total 336
le sous total : ID 18 / Compte 401 : Sous-Total 162
le sous total : ID 1 / Compte 401-001 : Sous-Total 174
le sous total : ID 15 / Compte 401-001 : Sous-Total 144
le sous total : ID 50 / Compte 401-715 : Sous-Total 144
le sous total : ID 3 / Compte 501-001 : Sous-Total 162
le compte 101-400 devrait me donner : 336 et le compte 401-001 : 288

Je vous avoue, que je sèche, merci pour votre aide