Somme des dernières entrées - SQL/NoSQL - Programmation
Marsh Posté le 18-10-2006 à 11:05:27
tu veux le total des 7 dernières entrées ou des 7 derniers jours? Car j'imagine qu'il y a peut-être des jours sans entrées....
Marsh Posté le 18-10-2006 à 11:34:10
anapajari a écrit : tu veux le total des 7 dernières entrées ou des 7 derniers jours? Car j'imagine qu'il y a peut-être des jours sans entrées.... |
il y a obligatoirement une entrée par jour donc pas de soucis de ce côté là
Par contre je vois le problem des mois avec 30 et 31 jours qui arrive, mais une chose à la fois
Marsh Posté le 18-10-2006 à 11:50:47
Code :
|
Marsh Posté le 18-10-2006 à 12:00:42
Merci de ton aide, mais j'ai un message d'erreur :
Erreur : You have an error in your SQL syntax near 'DAYS)' at line 1 |
Peu être que cela vient de la façon dont le formulaire est rempli :
Code :
|
Marsh Posté le 18-10-2006 à 14:04:54
ReplyMarsh Posté le 18-10-2006 à 15:20:23
anapajari a écrit : affiche la requete que tu executes stp! |
ceci ?
Code :
|
Marsh Posté le 18-10-2006 à 15:50:50
donc non pas ceci
Tu dois avoir
Ce bout de code la:
Code :
|
Quand la requete pete il affiche ton erreur change le die en
Code :
|
Relance ton truc, et dis nous ce qu'il affiche
Spoiler : bien envie de relancer de 3 charentaises et pour pouvoir sortir un "pâté de chat et rouflaquettes" sur ce topic... |
Marsh Posté le 18-10-2006 à 16:00:47
J'ai semble t'il résolu mon problem avec ceci :
Code :
|
Cela te semble t'il du "bon" code ?
Cela me règle le problem pour les 7 derniers jours, mais pour la fin du mois, sachant qu'il y a parfois 30 où 31 jours, quel serait la meilleur solution ?
Marsh Posté le 18-10-2006 à 19:01:07
Tu veux les 7 derniers jours, que tu sois le 1er, le 31 ou le 17 t'auras les 7 derniers jours, l'est où le problème
Marsh Posté le 18-10-2006 à 20:15:36
leflos5 a écrit : Tu veux les 7 derniers jours, que tu sois le 1er, le 31 ou le 17 t'auras les 7 derniers jours, l'est où le problème |
Je donne un indice :
date varchar(255) NOT NULL default '',
(avec ce genre de structure, forcément, il y a des problèmes qui se posent)
Marsh Posté le 18-10-2006 à 21:11:05
mrbebert a écrit : Je donne un indice : |
J'avais pas vu (ni penser qu'on puisse faire ça...) m'enfin ça dit pas pourquoi y'aurait un souci avec le 30-31
Je dirais bien que pour eviter de suite toute surprise ou effort inutile, il suffit de donner le vrai type à l'attribut
Marsh Posté le 18-10-2006 à 21:42:17
Oui, effectivement, vu qu'il trie sur la colonne "id", je vois pas non plus le problème avec le 30-31
(en fait, comme il ne prend pas en compte la date, il n'y a pas du tout de souci de date )
Marsh Posté le 19-10-2006 à 11:27:55
mrbebert a écrit : Oui, effectivement, vu qu'il trie sur la colonne "id", je vois pas non plus le problème avec le 30-31 |
Bien en fait j'ai une page qui affiche les résultats et qui donne ceci :
Code :
|
Donc il est écrit en dur 'Sur les 30 derniers jours' mais le soucis c'est quand on est le 31 il manque le 1er du mois
Marsh Posté le 19-10-2006 à 11:28:39
Donc j'ai changé mes tables comme ceci :
Code :
|
Je pense qu'avec le champ 'mois' qui est rempli avec soit '01' '02'... je peux afficher le total par mois. Voici le formulaire pour info :
Code :
|
Voici l'ancien code qui me permettais d'afficher les 30 derniers jours, mais, comment additionner seulement ceux d'une meme valeur dans la colonne 'mois' ?
Code :
|
Merci encore
Marsh Posté le 19-10-2006 à 11:31:26
Comprends rien ...
Tu veux les trentes derniers jours:
Code :
|
Tu veux le mois dernier(qu'il y ait ou non 31 jours):
Code :
|
Tu veux le "mois en cours" ( si on est le 1er: un seul jour; si on est le 31, 31 jours):
Code :
|
edit: c'est une hérésie de splitter une date en trois champs parce qu'on ne connait pas les "bonnes" fonctions sql...
Je pense avoir enfin compris ce que tu voulais, il s'agissait de la 3eme requete, qui aurait très bien fonctionné si tu n'avais pas changé la structure de ta table
Marsh Posté le 19-10-2006 à 11:38:12
anapajari a écrit : Comprends rien ... |
En fait je veux le total du mois de janvier '01', fevrier '02' ... à n'importe quel moment de l'année je me trouve
Les 7 derniers jours c'était que pour le lundi matin cela fasse une semaine, donc là ca fonctionne. Mais les 30 derniers jours (pour 1 mois) cela ne fonctionne pas vu que tous les mois n'on pas le meme nombre de jours
Marsh Posté le 19-10-2006 à 11:40:30
oui bien ce que je disais 3eme requête, sauf que tu changes le:
Code :
|
si tu veux février 2006, tu mets:
Code :
|
Marsh Posté le 19-10-2006 à 12:19:04
Je n'ai pas de message d'erreur mais le résultat est zéro alors qu'il devrait être de 6
Code :
|
Marsh Posté le 19-10-2006 à 12:27:47
tu lis ton code des fois ????
Citation : $sql = 'SELECT SUM(total) as masomme FROM district1 where MONTH(mois)=10 AND YEAR(annee)=2006'; |
s'pas gagné hein
Marsh Posté le 19-10-2006 à 12:41:12
anapajari a écrit : tu lis ton code des fois ???? |
Je débute, alors tout ne me saute pas aux yeux
Mais j'ai toujours zéro qui m'est retourné au lieu de 6
Code :
|
Marsh Posté le 19-10-2006 à 12:55:31
[quotemsg=1460351,16,8c'est une hérésie de splitter une date en trois champs parce qu'on ne connait pas les "bonnes" fonctions sql...
Je pense avoir enfin compris ce que tu voulais, il s'agissait de la 3eme requete, qui aurait très bien fonctionné si tu n'avais pas changé la structure de ta table [/quotemsg]
athome a écrit : $sql = 'SELECT SUM(total) as masomme FROM district1 where MONTH(mois)=10 AND YEAR(annee)=2006'; |
Euh j'avais dit plus haut que ça ne marcherait que si tu remettais l'ancienne structure de date et pas ce nawak qui est la séparation entre trois champs.
YEAR et MONTH sont des fonctions qui s'appliquent sur un champs date !
Marsh Posté le 19-10-2006 à 13:10:51
anapajari a écrit : C'est une hérésie de splitter une date en trois champs parce qu'on ne connait pas les "bonnes" fonctions sql... |
Euh en fait, je préfère que les users puissent modifier la date jj-mm-aa, s'ils ratent un jour et ma version de mysql ne me permet pas de convertir je crois : 3.23.39
Donc j'ai fais trois champs 'jour' 'mois' et 'annee' et puis trier la colonne 'mois' et additionner tous les '10' (octobre) par exemple, je sais que ce n'est du code pur mais à mon niveau c'est la seule façon simple que j'ai trouvé
Donc si tu as une idée sans les fonctions YEAR et MONTH, je suis preneur ?
Marsh Posté le 19-10-2006 à 13:25:18
cela semble fonctionner
Code :
|
Peu tu me dire si cela est bon ?
Marsh Posté le 19-10-2006 à 15:47:33
CA à l'air mais t'es têtu!
Pourquoi faire un truc crade à souhait, qui va te prendre la tête dès que tu auras besoin de faire un truc supplémentaire
Tu mets une date de type date et tu pourras faire ce que tu veux, 30 ou 31 jours, février ou octobre, modification de la date ou non
Marsh Posté le 18-10-2006 à 10:55:17
Bonjour,
J'explique mon soucis, en fait chaque matin, un formulaire est rempli, la date se fait automatiquement via du php et il y a aussi une colonne qui s'incrémente de 1 à chaque entrée.
Et donc je voudrais que les 7 dernières entrées de la colonne 'total' soient additionné pour en faire un total sur les 7 derniers jours.
Voici la table :
et le bout de code :