[RESOLU] Boucle sur des créneaux horaires avec php

Eléphant du PHP | 136 Messages

25 août 2015, 13:17

Bonjour,

Je développe un script d'affichage de créneau horaire avec php.
L'idée est d'afficher 1 résultat par créneaux horaire entre deux horaires avec un intervalle de X mn.

Ces données proviennent d'une base de donnée qui présente les données suivantes :
#TABLE HORAIRE
idunique (INT)
tranchehoraire (HH:MM-HH:MM)

J'ai réussi à développer quelque chose qui fonctionne mais si les horaires sont dans la même journée.
Par contre si mon heure de départ est le soir par exemple 23h et mon heure d'arrivée à 02h du matin, cela ne fonctionne pas.
Normal vu que le script se base sur...la date du jour avec time().
Mais mon cerveau atteint ses limites :) et je ne vois pas comment trouver si une tranche horaire est entre deux jours ou le jour même avec simplement comme donnée une tranche horaire.

Une idée pour m'aider ?

Mon script ci-dessous

Code : Tout sélectionner

<?php $datedujour = time(); $tranchehoraire_explode=explode("-",$result['tranchehoraire']); // $result['tranchehoraire'] : donnée en provenance de mysql $heuredebut=strtotime($tranchehoraire_explode[0]); $heurefin=strtotime($tranchehoraire_explode[1]); $delaicreneau=15*60; // 15 mn de créneau entre 2 résultats (15*60 car résultat en minute) for($i=$heuredebut; $i<$heurefin; $i+=$delaicreneau) { if( $i < $datedujour) continue; echo ''.date("H:i",$i).'<BR>'; } ?>
Merci :)
Bisvan :)

ViPHP
xTG
ViPHP | 7331 Messages

25 août 2015, 13:23

Avec ce que tu as comme code tu vas faire une usine à gaz si tu veux gérer ça.

Le mieux est de te faire un objet DateTime sur le premier créneau puis de faire une boucle l'incrémentant d'heure en heure (avec la fonction qui va bien car elle gère le changement de jour) et de s'arrêter quand on atteint l'heure.
Ainsi tu as un objet qui as toutes les informations en permanence.

Eléphant du PHP | 136 Messages

25 août 2015, 14:01

Aurais tu un début de code pour l'objet ? je ne maitrise pas très bien ce type de code php.
Pour la fonction je vais gérer :)
Bisvan :)

Eléphant du PHP | 136 Messages

25 août 2015, 15:13

J'ai trouvé ça : https://openclassrooms.com/courses/prog ... -la-classe
Je vais me mettre aux objets...merci xTG ça me donnera l'occasion de moderniser mon code :)
Bisvan :)

ViPHP
xTG
ViPHP | 7331 Messages

25 août 2015, 16:01

Tu n'es pas obligé de faire de l'objet.
L'interface existe aussi en procédural ce afin de rester compatible avec les anciennes versions de PHP.

http://php.net/manual/en/ref.datetime.php