Il vous suffit de faire une bonne requête MySQL.
Voir ici .
Vous pouvez faire des additions, des soustractions et des choses comme date BETWEEN x AND Y
, vous pouvez faire un SELECT SUM()
avec un GROUP BY
et ainsi de suite.
Ce que signifie Hakan (je suppose), c'est que vous le faites de la mauvaise manière :vous devez d'abord faire une requête qui fait presque tout le travail pour vous. Pas besoin de développer une chose aussi complexe.
Et trois autres conseils :
- essayez d'éviter les mots-clés en Php comme
$expense->Date
. Cela rend les problèmes de coloration syntaxique (dans le meilleur cas, dans le pire Php ne comprendra pas votre code). - ajoutez d'autres commentaires dans votre code pour expliquer ce que vous essayez de faire.
- essayez d'éviter les mots-clés en Php ET Requêtes SQL. Vous avez une colonne nommée '
Date
' et une colonne nommée 'Type
'. Ce n'est pas sûr.
Voici juste un début de ce à quoi votre SQL pourrait ressembler, et il devrait presque couvrir 95 % de votre code. Note :ceci est une suggestion :laissez tous les serveurs de base de données faire le travail à votre place, ceci est fait pour cela :
SELECT
ps.Due,ps.Date,
wt.Amount,wt.Date,
ex.Amount,ex.Date
LEFT JOIN patient_sessions ps
ON xxx
WHERE ps.Type='Session'
AND ps.Date
BETWEEN DATE_ADD(NOW(), INTERVAL '-28' DAY)
AND DATE_ADD(NOW(), INTERVAL 1 DAY)
LEFT JOIN work_times wt
ON xxx
LEFT JOIN expenses ex
ON xxx
WHERE ex.Client='Psychotherapy'