SELECT SUM par mois - avec PDO

Fermé
Outlook - Modifié le 20 oct. 2021 à 20:18
 Outlook - 20 oct. 2021 à 21:26
Bonjour,

Je cherche à obtenir le total des ventes par mois sur une année donnée, avec PHP & PDO, sachant que mes dates de factures enregistrées en bdd sont au format 2021-12-31...
J'ai du mal à trouver la syntaxe requise...

$year = 2021;

$q = "SELECT invoice_date, SUM(total) as recette_du_mois FROM customer_orders WHERE order_status = ? AND YEAR(invoice_date) = ? GROUP BY MONTH(invoice_date)" ;
if (! $stmt = $pdo->prepare($q)) {die(var_export($pdo->errorinfo(), TRUE));} 
$params = [ $year, 1 ]; 
$stmt->execute($params); if(!$stmt->execute()) echo $stmt->error;
while( $r = $stmt ->fetch(PDO::FETCH_ASSOC))
{  echo  $r['MONTH'].":  ".$r['recette_du_mois ']." <br />";
 //Format souhaité :  Janvier : 500 <br /> Février : 600; etc...
}

EDIT : Ajout du LANGAGE dans les balises de code

Merci pour votre aide.

3 réponses

yg_be Messages postés 23364 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 3 décembre 2024 Ambassadeur 1 556
20 oct. 2021 à 19:18
bonjour,
n'as-tu aucun message d'erreur?
je trouve bizarre de voir invoice_date après SELECT et MONTH(invoice_date) après GROUP BY.
peux-tu donner un exemple du résultat attendu?
0
Bonsoir, Salut, :)

Non aucun message d'erreur, ni aucun retour non plus. Je ne prétends pas que ce statement soit correct, loin de là : je ne sais pas quelle syntaxe utiliser pour afficher le total des ventes, mois par mois, et les récupérer dans des variables correctement nommées.

Dans l'idéal, j'aimerais afficher :
$Janvier : $total_des_ventes_pour_janvier <br />
$Février : $total_des_ventes_pour_février;
etc...

afin de pouvoir construire des histogrammes et autres graphiques avec...
Merci pour ton aide :)
0
jordane45 Messages postés 38326 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 2 décembre 2024 4 712
20 oct. 2021 à 20:21
Bonjour,

Une requête SQL ça se teste déjà directement dans la bdd ( via phpmyadmin) AVANT d''essayer de l'utiliser dans du php...

En gros, ta requête devrait ressembler à un truc du genre
SELECT  MONTH(invoice_date) as MONTH
      , SUM(total) as recette_du_mois 
FROM customer_orders 
WHERE order_status = ? 
AND YEAR(invoice_date) = ? 
GROUP BY MONTH(invoice_date)

0
Bonsoir Jordane,

Avant de poster, je cherche sur Google, Stack... etc... et je teste pendant des heures, et des fois pendant des jours.. Un détail et plein de méthodes trouvées approximatives peuvent aider ou faire qu'on recommence et re-teste 1000 fois, et qu'à la fin on s'y perd.... Ce qui est mon cas, quand certains détails nous échappent.

Bref, merci en tous cas, ça fonctionne, mais partiellement par rapport à ce que je souhaite faire. Donc je re examine tout ça, et reviens pour demander soit plus d'aide, soit pour marquer résolu dans son intégralité. Merci pour l'avancée dans mon script :)
0