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

PHP & Base de données Discussion :

Planning PHP & MySQL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Par défaut Planning PHP & MySQL
    Bonjour,

    J'ai une table 'utilisateurs' contenant toutes les informations nécessaires (nom prénom identifiant mot de passe etc...)

    Je gère donc de manière dynamique la création/modification/suppressions de ceux-ci.

    J'ai ensuite un calendrier PHP, affiché mois par mois, sur lequel apparaît chaque jours (1 -> 30/31) ainsi que chaque utilisateur soumit au planning.

    Chaque utilisateur aura donc pour chaque jour du mois un horaire spécifié, ou, un repos etc...

    La question est un peu bête, mais comment stocker tout ça dans MySQL ?

    Personnellement j'avais pensé a ça, mais ça me semble pas très pratique:

    Je crée une table 'planning' avec une colonne DATE de type DATE (2010-12-12 par exemple), ou chaque création de journée dans le planning crée un ligne supplémentaire.

    Ensuite, je pensais, a chaque création d'un utilisateur dans ma table 'utilisateur' ajouter une colonne dans ma table 'planning'.

    Donc pour chaque journée créer dans le planning, il y aura un colonne pour chaque personne soumise au planning.

    C'est une possibilité, sauf que pour le moment il n'y a que 20 personnes environ soumissent à se planning, donc au pire, il y aura donc 20 colonnes dans ma table 'planning'.
    Le souci est que ce planning peut être amené à être utilisé pour 150 personnes, ce qui ne me semble pas être un solution optimale...

    Avez-vous une autre idée dans la manière de concevoir le planning ?
    Ou est-ce la seule méthode?

    Merci !

  2. #2
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Je me souviens avoir fait ça un jour en cours. Enfin, à peu près.

    Ca ressemblait à un truc du genre:

    Table jours, table utilisateurs

    Dans jours tu as l'id de l'utilisateur, la date du jour, un champs texte libre du style=> 9h/12h ou "congé".

    Ensuite pas besoin de table mois. Tout se passe sur le champs "date" de la table jour.

    Pour le mois de janvier tu fais une requête du style

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM jour WHERE date BETWEEN '2010-12-31' AND '2011-02-01' ;

  3. #3
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Salut,

    C'est peut-être pas la meilleure méthode mais voici ma façon de procéder.

    Autre que la table utilisateur, il y a une table "evenements" qui comprend

    un identifiant
    un timestamp de départ
    un timestamp de fin
    un type d'évènement (congé, maladie, autre...)
    et enfin une clé étrangère sur l'id de l'utilisateur
    Qu'en pensez-vous??

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Une table utilisateur => tu l'as déjà
    Une table planning => champs : id - date/heure - type d'événement
    Une table utilisateur/planning => champs : idUtilisateur - idPlanning

    A partir de là pas besoin de rentrer des données pour chaque utilisateur chaque jour. Tu insères des données que lorsque effectivement il se passe quelque chose pour cet utilisateur.

    Pour l'affichage de ton calendrier il ne te reste plus qu'a faire une requête avec jointure sur les 3 tables pour la période de temps voulue. Tu obtiendras un tableau de tous les évènements du mois pour chaque utilisateur.

    Citation Envoyé par defcon_suny
    Qu'en pensez-vous??
    Je suis pas super fan des timestamp. un datetime est tout aussi efficace et pas soumis à l'éventuel bug de 2038
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre chevronné Avatar de defcon_suny
    Homme Profil pro
    Non pas trop...
    Inscrit en
    Décembre 2006
    Messages
    441
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Non pas trop...
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 441
    Par défaut
    Citation Envoyé par grunk Voir le message
    Une table utilisateur/planning => champs : idUtilisateur - idPlanning
    Pourquoi cette table? un évènement correspondra toujours à un et unique utilisateur

    Citation Envoyé par grunk Voir le message
    Je suis pas super fan des timestamp. un datetime est tout aussi efficace et pas soumis à l'éventuel bug de 2038
    Moi non plus, mais la comparaison des dates et quand même plus aisée et rapide avec l'utilisation direct de timestamp. Quant au bug éventuel de 2038... ca me paraît un peu léger comme argument ;-)

  6. #6
    Membre chevronné Avatar de rikemSen
    Homme Profil pro
    Analyste Développeur Web - Fizzup.com
    Inscrit en
    Décembre 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Décembre 2007
    Messages : 387
    Par défaut
    Soit dit en passant, d'ici là, quasiment tous les systèmes seront sous 64bits donc le timestamp qui plante.... J'y crois pas.

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Citation Envoyé par defcon_suny Voir le message
    Pourquoi cette table? un évènement correspondra toujours à un et unique utilisateur
    Pour essayer de normaliser au maximum le schema de bdd , voir ici pour plus d'info , mais aussi parce que rien ne nous dis que demain on voudra pas attribuer l'événement X à 12 personnes.

    Citation Envoyé par defcon_suny Voir le message
    Moi non plus, mais la comparaison des dates et quand même plus aisée et rapide avec l'utilisation direct de timestamp. Quant au bug éventuel de 2038... ca me paraît un peu léger comme argument ;-)
    Un datetime n'est pas moins facile à traiter qu'un timestamp, toutes les fonctions de date et de comparaison s'y applique. Le timestamp est pour le moment compris entre 1970 - 2038 ce qui n'est pas le cas du datetime. Alors certes dans 5 ans on auras tous des serveur 64bit mais c'est juste dommage de parier sur un changement de technos pour assurer la pérénité d'une appli plutot que de s'appuyer sur quelque chose qui marche déjà maintenant et marchera demain (enfin jusqu'en 9999 ...).
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Par défaut
    Merci pour vos réponses !

    En parlant de temps, dans ma tables 'horaires' (dans laquelle je stock les types d'horaires possibles) une colonne heure_debut et une colonne heure_fin, les deux de type TIME (MySQL).

    Cependant, lors de l'affichage, il est affiché HH:MM:SS, or l'affichage des secondes est inutile, et je ne trouve pas le moyen de l'afficher en HH:MM, sauf en changeant mes type en INT et en insérant des TIMESTAMP UNIX via PHP, mais par souci de lisibilité, je souhaiterai concernant mon type TIME si possible.

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

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

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT DATE_FORMAT(heure_debut,"%H:%i") FROM matable
    ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Par défaut
    $selection2 = 'SELECT DATE_FORMAT(heure_debut,"%H:%i") FROM planning WHERE id_utilisateur = '.$data[id].' AND date = '.$date;

    Ca me retourne rien, à part si je mélange tout avec les ' et "

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Par défaut
    Joyeu Noël à tous !

    $selection2 = 'SELECT DATE_FORMAT(heure_debut,"%H:%i") FROM planning WHERE id_utilisateur = '.$data[id].' AND date = \''.$date.'\'';

    ne me renvoi rien, alors que :

    $selection2 = 'SELECT heure_debut FROM planning WHERE id_utilisateur = '.$data[id].' AND date = \''.$date.'\'';

    Me renvoi bien la l'heure mais sous la forme HH:MM:SS

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 6
    Par défaut
    Bon, ben finalement j'ai trouvé la réponse ! (un vrai monologue lol)

    $selection2 = 'SELECT DATE_FORMAT(heure_debut,\'%H:%i\') AS heure_debut FROM planning WHERE id_utilisateur = '.$data[id].' AND date = \''.$date.'\'';

    il manquait un -> AS heure_debut

Discussions similaires

  1. [SGBD] Probleme Avec Php et Mysql
    Par junior258 dans le forum Installation
    Réponses: 2
    Dernier message: 20/09/2005, 10h39
  2. Serv apach 2, php 5, mysql 4
    Par Bouki dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 24/06/2005, 15h32
  3. Travailler avec PHP / Apache / MySQL
    Par R3iTt0R dans le forum Linux
    Réponses: 22
    Dernier message: 24/06/2004, 11h03

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