par
yann18 » 17 nov. 2013, 22:05
tu peux tout faire en 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,"\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)
tu peux tout faire en php:
[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,"\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);
}
[/php]
si tu souhaites utiliser la fonction indépendamment de mysql, tu peux faire ceci:
[php]
echo "<pre>";
var_dump(jourParMois("2010-02-02" ,"2010-04-22"));
echo "</pre>";
[/php]
affichera
[php]
array (size=3)
0 => string 'Feb:26jours' (length=11)
1 => string 'Mar:31jours' (length=11)
2 => string 'Apr:8jours' (length=10)
[/php]