|
| Débuté par NdToure, 17 oct. 2025 14:39 - 3 réponses |
| |
| | | |
|
| |
Membre enregistré 326 messages |
|
| Posté le 17 octobre 2025 - 14:39 |
Bonjour , J'ai un fichier qui stock les données de mon planning avec un champs date - heure debut et heure de fin.Je veux afficher sur une table les heures non réservé donc les heures qui ne sont pas référencé dans le fichier de données.Le planning commence de 08h00 à 18h:00 avec des crénaux horaire de 15mn:
Voici mon code mais pour l'instant ca ne fonctionne pas :
// =========================================== // Générer les créneaux libres sur une journée // ===========================================
// Paramètres de la journée hDebutJour est une Heure = ChaîneVersHeure("08:00", "HH:MM") hFinJour est une Heure = ChaîneVersHeure("18:00", "HH:MM") dDateAnalyse est une Date = SAI_Date // champ de saisie date
// Tableaux tabOccupe est un tableau de 2 chaînes // [HeureDébut, HeureFin] tabLibres est un tableau de chaînes
// Nettoyage de la table visuelle TableSupprimeTout(TABLE_heure)
// --- Récupérer les créneaux occupés depuis la table PlanningRV --- POUR TOUT PlanningRV AVEC dateRV = dDateAnalyse sDebut est une chaîne = HeureVersChaîne(PlanningRV.HeureDebut, "HH:MM") sFin est une chaîne = HeureVersChaîne(PlanningRV.HeureFin, "HH:MM") // TableauAjoute(tabOccupe, [sDebut, sFin]) TableauAjoute(tabOccupe,[sDebut,sFin]) FIN
// --- Génération des créneaux de 15 minutes --- hCourante est une Heure = hDebutJour TANTQUE hCourante < hFinJour sHeureDebut est une chaîne = HeureVersChaîne(hCourante, "HH:MM") sHeureFin est une chaîne = HeureVersChaîne(hCourante + 15 min, "HH:MM") // Vérifie si ce créneau chevauche une réservation bOccupe est un booléen = Faux POUR TOUT rdv DE tabOccupe SI (sHeureDebut >= rdv[1] ET sHeureDebut < rdv[2]) OU (sHeureFin > rdv[1] ET sHeureFin <= rdv[2]) ALORS bOccupe = Vrai FIN FIN // Si le créneau est libre, on l'ajoute dans la table et le tableau SI bOccupe=Faux ALORS TableauAjoute(tabLibres, sHeureDebut + " - " + sHeureFin) TableAjouteLigne(TABLE_heure, sHeureDebut, sHeureFin) FIN hCourante += 15 min FIN
A qui a une idée Merci |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 20 messages |
|
| Posté le 17 octobre 2025 - 15:36 |
Hello
Si tes créneaux sont TOUS de 15 minutes et commencent toutes les 15 minutes, fais une boucle de 08:00 à 18:00 avec un incrément minutes+=15 Pour chaque valeur, cherche dans la table des RDV si l'heure de début existe avec cette valeur - si n'existe pas, le créneau est libre.
Bon dev. |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 326 messages |
|
| Posté le 17 octobre 2025 - 17:51 |
Samir BOUCHETIBAT a écrit :
Hello
Si tes créneaux sont TOUS de 15 minutes et commencent toutes les 15 minutes, fais une boucle de 08:00 à 18:00 avec un incrément minutes+=15 Pour chaque valeur, cherche dans la table des RDV si l'heure de début existe avec cette valeur - si n'existe pas, le créneau est libre.
Bon dev.
Merci pour ta réponse. Cela ne fonctionnera pas, car si, par exemple, un créneau de 10h00 à 11h00 est déjà réservé, le programme ne doit pas afficher 10h30 parmi les heures libres, puisque cette heure fait partie d’un créneau déjà planifié. C’est pour cette raison qu’une simple recherche ne suffit pas dans ce cas.
-- Développeur freelance en PHP laravel et produit PCSOFT.En cas de besoin veuillez me contacter (groupesysteme01[at]gmail.com). |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 974 messages |
|
| Posté le 18 octobre 2025 - 10:03 |
Bonjour, si vous souhaitez fonctionner par créneaux et si un créneau de 10h00 à 11h00 est réservé, il aurait fallu dans ce cas enregistrer 4 créneaux occupés dans la base, soit : 10h00 -10h15 10h15 - 10h30 10h30 - 10h45 10h45 - 11h00 mais si vous décidez un jour de modifier la durée d'un créneau (par exemple 10mn), ça ne fonctionnera plus.
Vous pouvez aussi parcourir les créneaux occupés d'un jour donné, convertir l'heure de début et l'heure de fin en entier, et ainsi rechercher pour chaque créneau possible d'une journée, que sa valeur convertie en entier ne se trouve pas entre les entiers d'un créneau réservé :
HeureVersEntier https://doc.pcsoft.fr/?3027017
Cette deuxième méthode fonctionnera également si la durée d'un créneau venait à changer (15mn -> 10mn)
Edit : la méthode de Samir BOUCHETIBAT fonctionne si vous testez en ajoutant 15mn pour chaque créneau depuis l'heure de début occupée jusqu'à l'heure de fin occupée (10h00, 10h00 + 15mn, etc... jusque 11h00)
CdltMessage modifié, 18 octobre 2025 - 10:11 |
| |
| |
| | | |
|
| | | | |
| | |
|