Conseils pour un projet d'application web

Eléphant du PHP | 148 Messages

30 août 2007, 08:46

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,

@ +
Et hop !

Eléphant du PHP | 291 Messages

30 août 2007, 09:19

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...

Eléphant du PHP | 148 Messages

30 août 2007, 09:44

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 :?
Et hop !

Eléphant du PHP | 291 Messages

30 août 2007, 09:47

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....).

Eléphant du PHP | 148 Messages

30 août 2007, 11:06

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 ;)
Et hop !

Eléphant du PHP | 291 Messages

30 août 2007, 11:11

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 !

Eléphant du PHP | 148 Messages

30 août 2007, 11:30

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...
Et hop !

Eléphant du PHP | 291 Messages

30 août 2007, 12:06

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à :

Code : Tout sélectionner

DernierJour = maFonction($mois, $annee)
cette fonction aura la gueule suivante :
function daysInMonth($year, $month)
{
    $nbDays = date('t', mktime(0, 0, 0, $month, 1, $year));
}
voilà voilà ;)

Eléphant du PHP | 148 Messages

30 août 2007, 12:23

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 !
Et hop !

Eléphant du PHP | 291 Messages

30 août 2007, 12:25

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 !

Eléphant du PHP | 148 Messages

30 août 2007, 13:56

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 !
Et hop !

Eléphant du PHP | 291 Messages

30 août 2007, 14:00

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 />';
}

Eléphant du PHP | 148 Messages

30 août 2007, 14:40

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 ;)
Et hop !

Mammouth du PHP | 693 Messages

30 août 2007, 14:45

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);
?>

Eléphant du PHP | 148 Messages

30 août 2007, 14:53

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...
Et hop !