Code : Tout sélectionner
$janviern = mysql_query("SELECT * FROM 'chats' WHERE 'date_entree' LIKE '$ann-01-%' AND 'valid' = '1'");
$nbresajanviern = mysql_num_rows($janviern);
while($sq = mysql_fetch_array($janviern))
{
$dateentree = $sq[date_entree];
$datesortie = $sq[date_sortie];
$mois = substr("$datesortie", 5, 2);
if($mois == '02')
{
$encoursjanvier = date( "t", mktime ( 0, 0, 0, 1, 1, "$ann"));
$janvds = "$ann-01-$encoursjanvier";
$nbfjanv = round((strtotime($janvds) - strtotime($dateentree))/(60*60*24));
$nbfjanvier = ($nbfjanv + $nbfjanvier);
}
$nbjanviern = round((strtotime($datesortie) - strtotime($dateentree))/(60*60*24));
$nbjoursjanviern = ($nbjoursjanviern + $nbjanviern);
}
$nbjourspourjanvier = ($nbfjanv + $nbresajanviern);
//$nbjoursjanviern = ($nbjoursjanviern + $nbresajanviern);
$restejanvier = ($nbjoursjanviern - $nbjourspourjanvier + $nbresajanviern);Code : Tout sélectionner
SELECT count(*), DATEDIFF((DATE(`date_sortie`)), (DATE(`date_entree`)) ) FROM chats WHERE `date_entree` LIKE '2012-07-%'
$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,"\n";
}
}
/*
*
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;
$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);
}
si tu souhaites utiliser la fonction indépendamment de mysql, tu peux faire ceci:echo "<pre>";
var_dump(jourParMois("2010-02-02" ,"2010-04-22"));
echo "</pre>";
affichera
array (size=3)
0 => string 'Feb:26jours' (length=11)
1 => string 'Mar:31jours' (length=11)
2 => string 'Apr:8jours' (length=10)