Page 1 sur 2
Conseils pour un projet d'application web
Posté : 30 août 2007, 08:46
par Zurg
Bonjour tout le monde !
je viens vers vous afin d'obtenir quelques conseils. Je travaille dans un hopital, et je dois réaliser une application de gestion de planning des médecins qui doit permettre de calculer leur temps de travail.
J'ai pensé créer une interface web pour : d'une part permettre aux médecins de saisir au jour le jour, ou en prévisionnel leur planning, et d'autre part permettre à la DRH de consulter le calcul du temps de travail pour établir la paye, prendre en compte les RTT et compagnie.
Là où je pêche un peu, c'est comment stocker les plannings des médecins dans la base ?
Cela vous parait-il faisable en php ?
Merci d'avance,
@ +
Posté : 30 août 2007, 09:19
par cf357
Hello !
j'ai un peu le même "problème" en ce moment, on doit stocker des plannings d'étudiants et les faire concorder avec des planning d'entreprises qui recherchent des étudiants pour des petits boulots.
Après un peu de réflexion, la meilleure solution pour stocker des "évènements" dans un planning comme ça était la suivante : Stocker la date de début de l'évènement, sa date de fin. Cette représentation nous permet de faire facilement tous types d'opérations : supprimer un jour, rajouter un jour, déplacer de X jours, etc... sans prendre trop de places en BDD (calculé pour 100 000 personnes qui utiliseraient un planning comme ça sur 1 an).
Après, je ne sais pas si ça te conviendrait...
Posté : 30 août 2007, 09:44
par Zurg
Salut,
merci pour ta réponse.
Effectivement, ça pourrait convenir. Autre question, existe-t-il en php, une fonction qui permette d'obtenir un calendrier, ou faut-il se baser sur la fonction date et l'incrémenter pour, par exemple afficher un planning sur un mois ?
merci

Posté : 30 août 2007, 09:47
par cf357
J'ai développé une petite classe de gestion de date à ces fins, avec des fonctionnalités comme "ajouter X jours", "nombre de jours dans le mois", etc...
Ensuite je me suis fait une fonction genererCalendrier($annee, $mois) pour afficher un calendrier sur un mois via cette classe, c'était du gateau (incrémenter un compteur de jours....).
Posté : 30 août 2007, 11:06
par Zurg
En fait, je cherche à afficher sous forme d'un tableau un calendrier mensuel. Les jours seraient rangés chacun dans une colonne, chaque ligne correspondrait à une tranche horaire.
Par où commencer ?
merci

Posté : 30 août 2007, 11:11
par cf357
J'ai développé il y a un petit moment une application de gestion de webradio, dont voici la grille des programmes :
http://tekover.net/fcrm/demo/grille.php
Si c'est quelque chose dans cet esprit là que tu souhaites obtenir, c'est simple !
Code : Tout sélectionner
pour heure allant de 0 à 23 faire
nouvelle ligne
pour chaque jour faire
(colonne (heure, jour))
fin pour
fin pour
N'hésite pas à développer tes questions !
Posté : 30 août 2007, 11:30
par Zurg
Oui super !
ça ressemble bigrement à ce que je veux faire, sauf que cela s'étale sur le mois, et mes tranches horaires sont plus simples:
8h30-13h30 ; 13h30-18h30 ; 18h30-8h30
ensuite il faut que je puisse affecter à chaque tranche un code qui correspond à l'activité du médecin, et qui permettra de calculer son temps de travail. Et tout ça, évidemment pour chaque médecin du service.
Comment as-tu fait ?
Ah oui, il faut également que l'affichage du mois soit dynamique, c'est à dire qu'en fonction du mois choisi les dates correspondent, qu'on puisse changer de mois etc... mais chaque chose en son temps...
En fait, je crois avoir compris l'esprit du truc, maintenant, il faut que je réussisse à créer dynamiquement ce tableau.
Une piste pour débuter ?
Je ne sais pas si je suis très clair...
Posté : 30 août 2007, 12:06
par cf357
Pour débuter je te conseillerai d'écrire une fonction qui retourne la liste des jours en fonction du mois / année passés en paramètre
2 cas possibles :
1) Tu veux obtenir le jour de la semaine :
Code : Tout sélectionner
fonction listeJours(mois, annee)
{
tableauJour = tableauVide()
PremierJour = 1
DernierJour = maFonction($mois, $annee) // fonction qui donne le nombre de jour dans le mois
pour compteur allant de PremierJour à DernierJour faire
{
JourDeLaSemaine = maFonction(compteur) // entre 1 et 7
JourDansLeMois = compteur
nouveauJour = tableau(JourDeLaSemaine, JourDansLeMois)
ajouter(nouveauJour, tableauJour)
compteur++
}
retourner(tableauJour)
}
A partir de là, tu auras un tableau pour tout ton mois avec, par exemple :
3 | 1 // 3 = mercredi => le 1er du mois sera un mercredi
4 | 2 // 4 = jeudi, le 2 du mois sera un jeudi...
5 | 3
6 | 4
7 | 5 // 7 = dimanche, ...
1 | 6
2 | 7 ...
Pour afficher ce tableau, tu peux te servir de foreach
2) Tu te fiches du jour de la semaine, tu veux juste les jours du mois
alors la seule ligne qui t'interesse est celle là :
cette fonction aura la gueule suivante :
function daysInMonth($year, $month)
{
$nbDays = date('t', mktime(0, 0, 0, $month, 1, $year));
}
voilà voilà

Posté : 30 août 2007, 12:23
par Zurg
Ok merci,
moi, ce qui m'intéresse, c'est le numéro du jour, mais aussi de savoir si c'est un Samedi ou pas. Donc c'est la première solution non ?
J'essaie de faire ça et je reviens !
Posté : 30 août 2007, 12:25
par cf357
En effet, la première solution permet de récupérer une bonne fois pour toutes seulement les jours intéressants ! Il suffit de rajouter une condition dans la boucle avant d'ajouer le jour au tableau final !
Posté : 30 août 2007, 13:56
par Zurg
Bon, alors j'ai fait ça :
Un fichier function.inc.php
<?php
function JourDsAnnee ($month, $year)
{
$nbJours = date('t', mktime(0, 0, 0, $month, 1, $year));
}
function listeJours($mois, $annee)
{
$tableauJour = array();
$PremierJour = 1;
$DernierJour = JourDsAnnee($mois, $annee);
for ($i=$PremierJour; $i<=$DernierJour; $i++)
{
$JourDeLaSemaine = JourDsAnnee($i);
$JourDansLeMois = $i;
$nouveauJour = array($JourDeLaSemaine, $JourDansLeMois);
array_push($nouveauJour, $tableauJour);
}
return($tableauJour);
}
?>
Et un fichier test.php :
<?php
include ("function.inc.php");
echo listeJours(1, 2007);
?>
Et quand j'exécute la page test.php, je n'ai qu'un
Array
qui s'affiche à l'écran.
Où se trouve donc mon erreur ? (ou mes erreurs ?)
Merci !
Posté : 30 août 2007, 14:00
par cf357
pour afficher ton tableau, utilise
print_r($tableau); // utile pour debugguer, verifier les valeurs
Et si tu veux ton propre affichage, utilise :
foreach ($array as $key => $value)
{
echo $key.' : '.$value.'<br />';
}
Posté : 30 août 2007, 14:40
par Zurg
Bon, j'ai bien essayé, mais je ne sais pas trop comment utiliser les infos que tu m'as données.
voilà ce que j'ai rajouté à mon fichier test.php :
<?php
include ("function.inc.php");
listeJours(2,2007);
print_r($tableauJour);
?>
L'autre fichier n'a pas bougé, j'ai maintenant une page vide, rien ne s'affiche, j'ai mal du implémenter la fonction... peux-tu m'aiguiller ?
Merci d'avance

Posté : 30 août 2007, 14:45
par orgerix
Les variables dans les fonctions n'ont qu'une porté locale, c'est à dire que tu ne peux pas y accèder directement à l'exterieur de la fonction, tout comme tu ne peux pas accèder aux variables externe à l'interieur d'une fonction par défaut.
Il faut donc que tu attribue le résultat de la fonction à une variable. Dans ce cas, ca sera quelque chose comme ca :
<?php
include ("function.inc.php");
$tableauJour=listeJours(2,2007);
print_r($tableauJour);
?>
Posté : 30 août 2007, 14:53
par Zurg
Salut,
merci pour ta réponse !
J'ai corrigé selon ton conseil, mais j'ai toujours un " Array() " affiché. Je pense qu'il y a un problème dans la fonction, mais je ne vois pas trop où pour le moment...
Si quelqu'un a un oeil perçant...