Sélection de jours entre deux dates pour un calendrier PHP

Rechercher

Sélection de jours entre deux dates pour un calendrier PHP

Par fawi  -  3 reponses  -  Le 18/02/2012 18:46  -  Editer  - 

Bonjour,Jai une DB MYSQL pour des évènements avec la date de début (date_in de type 2012-12-31) et la date de fin (date_out de type 2012-12-31)Je souhaiterais faire une requête qui me permet de récupérer dans un tableau (array) les jours ou il y a des évènements y compris ceux entre les deux datesEx. si event a lieu du 2012-02-21 au 2012-02-25 et un autre du 2012-02-28 au 2012-02-29Mon array devrait contenir 21,22,23,24,25,28,29Est-il possible de faire ca simplement avec une requête ?

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 19/02/2012 10:35  -  Haut de page  - 

Salut,

autant il est très simple de récupérer uniquement les lignes où il y a un évènement, autant récupérer les jours du calendrier entre les deux dates d'un évènement sera plus compliqué en SQL. C'est techniquement faisable, mais pas avec une simple requête, il faudrait créer une fonction en SQL qui va effectuer une boucle entre les dates de début et de fin pour créer des lignes de dates intermédiaires qui ne sont pas dans la table.

Une alternative peut-être plus simple consistrerait à récupérer en SQL les date de début et dates de fin puis ensuite compter nombre de jours entre les deux de chaque ligne et construire la liste des dates intermédiaires par programmation en PHP.

 

 
Par fawi  -  Le 19/02/2012 11:35  -  Haut de page  - 

Merci pour ta réponse Cyrano, C'est la solution vers laquelle je me suis touné ce matin, mais je bloque un peu ! Récupération des dates SQL aucun problème (j'ai donc deux variables : $date_in et $date_out) Ensuite je fais une boucle WHILE après ma requete et une seconde boucle FOR du genre : while ($data....) { for ($date_in < $date_out; $dates=strtotime('+1 day', $date_in);) { echo $dates; } } Où est l'erreur ?

 
Par fawi  -  Le 19/02/2012 11:50  -  Haut de page  - 

J'ai trouvé la solution :

while($data = mysql_fetch_assoc($req)) { echo $data['event_id'].' : '.$data['event_date_in'].'-'.$data['event_date_out'].''; $date_in=strtotime($data['event_date_in']); $date_out=strtotime($data['event_date_out']); for($i = $date_in; $i < $date_out; $i+=86400 ) { echo date('Y-m-d', $i).''; } }

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |