Trier des resultats statistiques date

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 : Trier des resultats statistiques date

Re: Trier des resultats statistiques date

par alpha911 » 04 mai 2014, 02:51

En effet un enregistrement donne ceci :
(etiquette enregistrements) enregistrement.

(idchat), (nom), (date_entree), (date_sortie)
1, Minette, 2013-12-30, 2014-01-02
2, Titou, 2013-12-29, 2014-01-04

le tableau devrait etre une statistique globale de ce genre :

Decembre : 3 jours
Janvier : 6 jours

Minette et titou sont dans la base et minette a fait 1 jour en decembre et Titou a fait 2 jours en decmebre soit un total general de 3 jours ... pareil en Janvier.

Re: Trier des resultats statistiques date

par moogli » 02 mai 2014, 11:39

salut,

la requête que je t'ai donnée non, elle compte le nombre de chats présents sur un mois.

par contre le principe est similaire, il te faut faire le calcul dans la requête mysql sais très bien faire cela.

pour info la doc sur les fonctions de date de mysql : http://dev.mysql.com/doc/refman/5.0/fr/ ... tions.html

tu auras besoin de datediff()

exemple
select idchat, nom, date_entree, date_sortie,  datediff(date_sortie,date_entree) as nbJour from chats
par contre je ne vois pas exactement le rapport avec ton exemple du début qui affiche un nombre de jour par mois.

@+

Re: Trier des resultats statistiques date

par alpha911 » 02 mai 2014, 11:11

Merci pour cette réponse,
j'ai plusieurs noms dans cett base de données de chats et celà se presente comme ceci :

idchat, nom, date_entree, date_sortie

et dans l'exemple j'aimerais savoir en tout combien de jours sont restés les chats avant l'adoption classé par mois mais une vue globale

la donnée est ainsi :

1, Titi, 2013-12-04, 2014-01-02 (soit 27 jours en décembre, 2 jours en janvier)
2, Minette, 2013-12-30, 2014-01-03 (soit 1 jour en decembre, 3 jours en janvier)

le tableau doit donner :

Decembre : 28 jours (27 jours de Titi et 1 jours de Minette)
Janvier : 5 jours (2 jours de Titi et 3 de Minette)

Penses tu que la requette que tu me proposes réussisse à faire ce travail ?

Merci sincèrement car je galère depuis quelques mois la dessus ...

Re: Trier des resultats statistiques date

par moogli » 02 mai 2014, 10:52

salut,

ceci peux ce faire simplement en sql, avec un count + group by

exemple
SELECT COUNT(1) AS nb, extract( month from ladate) AS dt
FROM chats
GROUP BY dt
nb contient le nombre de chats pour le mois indiqué dans dt.
dt est un nombre de 1 à 12 (facile pour la traduction ;) ). j'ai utiliser les numéros de mois parce que tu les npms sur le serveur ne sont pas forcément traduit.

@+

Trier des resultats statistiques date

par alpha911 » 02 mai 2014, 09:46

Bonjour,
j'aimerais trier et additionner les données afin de les mettre dans un tableau de synthese par exemple :

Janvier : 47 jours
Fevrier : 59 jours
Mars : 23 jours
Avril : 12 jours

Une ame charitable pourrait t'elle m'aiguiller ?

voici le code
<?php
$result=mysql_query("SELECT * FROM chats");
while($row = mysql_fetch_array($result)){
 $tabDates = jourParMois($row['date_entree'], $row['date_sortie']); //appel à la fonction jourParmois()
  /*pour chaque couple(date_entree,date_sortie)
  on  affiche éventuellement tous les mois compris entre date_entree et date_sortie incluses*/
  foreach($tabDates as $date){
   echo $date,"<br>";
 }
}

/*
*
détermine les mois compris entre 2 dates
**/
 
function jourParMois($dateDebut, $dateFin){
$dateDebut=strtotime($dateDebut);

$dateFin =strtotime($dateFin);


$dateCourante = $dateFin;

$dates=array();
//les dates à comparer correspondent à des mois different, alors on peut chercher les mois  compris entre dateDebut et dateFin
if(  date('m',$dateDebut) != date('m',$dateFin))         {
while ($dateCourante >= $dateDebut) {
     $dateCourante = strtotime( date('Y/m/01/',$dateCourante).' -1 month');
   $dates[]=date('M',$dateCourante) .':'.date('t',$dateCourante).'jours';

}
sort($dates);
$dates[0]=date('M',$dateDebut).':'.jRestants($dateDebut).'jours';//on ajoute la DateDebut
$dates[]=date('M',$dateFin).':'.jRestants($dateFin).'jours';//on ajoute la dateFin au tableau
}else{//cas les 2 dates (debut et fin) correspondent au même mois
$nbJours = ((($dateFin - $dateDebut)/86400) + 1).' jours';
//$nbJours = (($dateFin - $dateDebut)/86400).' jours';
$dates[] = date('M', $dateDebut).':'. $nbJours;
}

return  $dates;
}
/*
nombre de jours restants d'un mois donné
*/
function jRestants($date){
  
return date('t',$date)-date('d',$date);
}