Bonjour à tous !
J'ai un projet de développement contenant un calendrier de réservations de véhicules, jusque là, pas de problème !
Enfin rien que je n'ai su surmonter seul et/ou avec x milles heures de recherches @^@/ ...
Seulement voilà :
J'commence à être un p'ti peu las de chercher en vainsurtout que ce que j'essaie là relève presque d'avantage de la fonction mathématique que d'une recherche de programmation,
Et je suis très mauvais "mathématicien", mais encore PIRE sur c'qui est des manipulations de dates !
J'vous préviens d'avance : je suis vraiment en mal sur mon algorithme ... Sinon je n'serais pas là j'imagine
Alors je viens quémander un coups de main ^^ !
Et si quelqu'un se sent d'm'aider j'lui en serait vraiment reconnaissant ;-;'
Je vais m'expliquer en fonctionnalités pures plutôt qu'en code, cela m'aide à y voir plus clair, et mon code final diffère vachement d'un truc basique avec tous ce que je passe dedans mais je devrais pouvoir convertir ^^' !
Enfin c'est surtout que j'ai pas VRAIMENT de code fait au final, pas là dessus, car je n'arrive pas à définir ce fichu algorithme >_> !
Je peux joindre mon code et/ou mes essais de logique algorithmique si besoin...
Bref :
On souhaite affecter un véhicule à une réservation pour la valider.
La réservation se fera sur une plage définie par une date/heure de départ, et une autre de retour.
Mon calendrier affiche les véhicules déjà réservés.
J'ai à côté tout une liste de véhicules, ceux qui existent dans ma BD, pour les affecter à la réservation à valider...
Ce que j'veux faire : C'est rayer dans la liste : les véhicules déjà réservés sur la plage horaire de la réservation à faire, pour empêcher d'les allouer 2 fois...
Seulement là, j'me r'tourne le crâne .... Pas sur comment rayer où afficher les véhicules, mais sur comment vérifier qu'ils sont prit sur une plage qui occupe tout ou partie de la plage voulue.
Je ne sais pas comment tourner mes conditionnels pour vérifier ça d'mannière efficace, surtout qu'un véhicule peut-être prît sur plusieurs jours et c'est même là l'gros d'mon problème x_x ..
Je n'arrive résolument pas à trouver comment faire tous les cas ... Et pourtant j'essaie vraiment >w<
J'ai des dates de départ et de retour, pour les réservations créées || Et pour celle que l'on veut faire.
J'ai aussi des heures départ & retour pour les 2 types de réservations.
Je peux éventuellement tout rassembler pour une comparaison ... type "2018-04-19 11:20" Si c'est utile ..
PHP à pleins de fonctions dateTime du genre, don une de "diff" qui calcul le temps entre 2 dates ...
Mais je n'y comprends pas grand chose, et surtout je n'arrive pas à en extraire LA fonction utile puisque je ne sais pas vraiment comment m'y prendre ...
J'ai vite, trèèès vite, tendance à me perdre quand il s'agît de temporalité..
Idéalement :
J'aimerais pouvoir définir des PLAGES INDISPONIBLES posées sur les Réservations en Cours.
Et comparer la plage de la Réservation à Créer avec celles-là, pour afficher les véhicules indisponibles de toutes les réservations don la plage empiète sur celle désirée...
Logique, non ?!
Mais je n'arrive pas à imbriquer des conditionnels de sorte à couvrir tous les cas, où bien à faire des vérifications "simples" que si la plage voulue se trouve dans une plage prise, on indique que c'est mort !
Pourtant c'est envisageable non ? Où bien alors y à une façon plus méthodique d'aborder tous les cas de réservations possibles les uns après les autres ?! Non ?
Actuellement je m'noie dans des horreurs de type :
Enfin voilà, j'me noie complet et si une bonne âme passe dans l'coin avec une p'tite bouée j'veux bien la prendre 8)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Si(le trajet est sur une journée) { ->Comparer les heures : //Là je m'embrouille à mort, avec des tests genre : si départ_voulu > départ_prit, alors on vérifie retour_voulu < retour_prit etc ... Mais ça ne va pas. //Pour essayer de trouver quand une plage prise empiète sur la plage voulue, sur une journée } SINON { ->Comparer les heures : //Encore + bordélique, car il faut prendre en compte qu'une réservation du 15/05/2018 16H30, au 16/05/2018 09H20 va bloquer le véhicule sur ce laps de temps, //Et donc empêcher une réservation sur le 15/05/18, de 17H à 22H, par exemple, puisque le véhicule reste indisponible jusqu'au lendemain @-@ } //J'ai séparé la comparaison sur un même jour à celle sur plusieurs jours, car j'estimais la verif' des heures différente de l'un à l'autre mais je m'y perds, complétement.
Partager