IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Gestion avancée horaires d'ouvertures


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 229
    Points
    229
    Par défaut Gestion avancée horaires d'ouvertures
    Bonsoir, je suis en train de réaliser une application avec symfony2, pour les besoins de la dite application, je souhaite afficher gérer de façon avancée les horaires d'ouvertures.

    Je m'explique, j'ai actuellement 80 commerces en BDD et les horaires d'ouvertures sont affichées sous forme de texte, stocké en string en bdd.

    Par exemple le commerce A, il est ouvert du lundi au jeudi de 9h à 18h et le vendredi il ouvre bien à 9h mais ferme à 16h30.
    Sauf qu'il est également fermé le midi au format texte c'est pas très compliqué, ça ne dépend que de l'espace disponible, soit uniquement le nombre de caractères.

    L'objectif c'est d'afficher sur l'appli, de façon visuelle si le commerce est ouvert ou non au moment où on navigue sur l'appli.

    Si ça ne gère pas les fermetures du midi... dans un premier temps, ce n'est pas dramatique.

    Ces informations sont également éditable par le commerçant lui même depuis un backoffice donc il est primordiale de proposer quelque chose de relativement simple.

    Pour le moment, mon idée consiste à créer une table dédiée que j'appelle "horaires".
    Dans la table, j'ai plusieurs champs, un champ ID, un champ qui fait référence à l'id du commerce (table externe), un champ pour chaque jour de la semaine, un autre pour la gestion des jours fériés.

    Chaque champ contient les informations suivantes sous forme de tableau (sérialisé), l'heure d'ouverture, l'heure de fermeture... pour chaque jour.

    Je récupère la date et l'heure actuelle, je check le champ correspond au jour puis si l'heure actuelle est comprise entre l'heure de fermeture et d'ouverture stockée dans le champ.

    Est ce que mon résonnement est correcte ou est ce qu'il existe une solution plus adaptée à mes besoins ?

    Merci d'avance pour vos réponses

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    L'idée d'une table supplémentaire est bonne.
    La sérialisation des données l'est beaucoup moins.

    J'aurais fais une table avec les champs suivant :
    id_commercant | numero_jour_semaine (small int) | time_ouverture (time) | time_fermeture (time) | ferme_midi (boolean)
    Reste la notion de travail les jours fériés, que tu peux stocker sous la forme d'un boolean dans la table du commercant ou sous la forme d'une table suppplémentaire si le commercant peut choisir ses jours fériés.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 229
    Points
    229
    Par défaut
    Merci beaucoup pour la réponse rapide grunk, en effet c'est surement plus facilement maintenable de procéder comme ceci mais sur la page affichant les commerces (donc l'icone "ouvert/fermé").

    Je me retrouve à parser 7 entrées pour chaque commerce, soit sur une page affichant 10 commerces par exemple, plus de 50 entrées.

    C'est pour cette raison que j'avais envisagé de n'utiliser qu'une entrée avec plusieurs champs (quitte à créer deux champs distincts pour le matin/après midi) qu'en pense tu ?

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    A mon avis ca va plus vite de faire une boucle sur les 7 résultats d'un magasin fois le nombre de magasin que de dé sérialiser autant de données
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 229
    Points
    229
    Par défaut
    Ok merci

  6. #6
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Sérialiser des données en base de données c'est inutile, plus complexe, plus coûteux en terme de performances et surtout incorrecte (en effet la bdd ne respecte même pas du coup la première forme normale).

    Pour ma part, j'envisagerais ceci :

    id_commercant | numero_jour_semaine (tinyint) | time_ouverture (time) | time_fermeture (time) | time_ouverture_midi (time) |time_fermeture_midi(time)
    avec les time du midi à NULL s'il n'y a pas de fermeture le midi.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  7. #7
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 229
    Points
    229
    Par défaut
    Encore une fois, merci
    En effet et il est primordiale de faire le choix le plus judicieux des maintenant parce que ça risque d'être compliqué à mettre en place dans un deuxième temps...

    Je vais suivre le dernier model du coup...

  8. #8
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2012
    Messages
    133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2012
    Messages : 133
    Points : 229
    Points
    229
    Par défaut
    Bonjour à tous, me revoilà avec la suite de mon problème...

    Je suivis vos conseils et adopté la structure de Spartacusply.

    Cela fonctionne très bien pour les commerces qui ferment avant minuit (24:00:00).

    Le soucis c'est qu'après minuit, il ne faut plus check les horaires du jour actuel, mais de la veille (la date de fermeture du soir en particulier).

    Jusque la c'est asses logique...

    J'en suis venu à adapter mon code pour check si l'heure actuelle est inférieure a 5h du matin on considère qu'on a besoin des infos de la veille (donc de la nuit actuelle).

    En résumé, un samedi à deux heures du matin, en réalité on est dimanche matin...
    Donc il faut check les horaires de fermeture du samedi soir, donc $jour = date('N')-1;.

    Malheureusement je n'arrive pas à créer une fonction capable de prendre en compte cette problématique...

    Si vous avez des indices sur comment parvenir à ce résultat, je suis très intéressé.

    Dans le cas contraire, j'apporterai ma solution ici même.

  9. #9
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par ze0ne Voir le message
    Donc il faut check les horaires de fermeture du samedi soir, donc $jour = date('N')-1;.
    Salut !

    Pourtant, t'as déjà fait la moitié du taff !

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $jour = ($heure < 6) ? date('N') - 1 : date('N');
    if ($jour < 1) { // dans le cas où on serait lundi avant 6h du matin...
         $jour = 7; // ...il faut revenir aux infos du dimanche
    }

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/10/2006, 22h46
  2. Gestion avancée d'exception et compatibilité dotnet
    Par RamDevTeam dans le forum Delphi .NET
    Réponses: 1
    Dernier message: 14/11/2005, 18h12
  3. Réponses: 2
    Dernier message: 15/09/2005, 15h08
  4. [QuickReport] Gestion avancée des imprimante ?
    Par portu dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2005, 10h55
  5. Concilier gestion avancée de vertices et API OpenGL
    Par GaldorSP dans le forum OpenGL
    Réponses: 4
    Dernier message: 30/08/2005, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo