Bonsoir tous le monde,
Je suis entrain de développer une application de gestion d’absentéisme et congé.
J'implémente la partie absences. L'action se base à importer un fichier de pointage sous format Excel ( l'importation est bonne ) : chaque ligne contient la date de pointage ( c a d que la personne s'est bien présentée) l'heur d'arrivé , le nom et prénom et la matricule. J'ai réussi à introduire ce fichier dans la base. Maintenant je dois la transformer sous la forme d'une calendrier :
En sélectionnant une période la page doit afficher tous les dates de la période et la liste des personnes par service déjà introduit. Jusqu'au là j'arrive à lister les utilisateur par services , mais je ne sais pas comment procéder afin de vérifier si chaque utilisateur est bien pointé chaque jour.
Voyons le code dans le Model:==> cette fonction vérifie la liste des personnes qui sont pointé entre datedebut et datefin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public function listeabs_service($service,$datedebut,$datefin) { $req="select num_import, impor.Matricule,date_import,nom_prenom,serv.num_serv from import_abs as impor,utilisateur as util, service as serv where impor.Matricule=util.Matricule and util.num_serv='".$service."' and util.num_serv=serv.num_serv and date_import>='".$datedebut."' and date_import <= '".$datefin."' order by util.Matricule"; return $this->db->fetchAll($req); }
Dans mon controller:
==> se code permet d'avoir la liste des utilisateurs ainsi les pointage faites entre la période désirée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 if ($this->_request->isPost()) { function getDaysInMonth($month,$year) { $dim = date( "t", mktime(0, 0, 0, $month, 1, $year)); return $dim; } Zend_Loader::loadClass('Zend_Filter_StripTags'); $filter = new Zend_Filter_StripTags(); $liste_abs_serv= new Absences(); $service = trim($filter->filter($this->_request->getPost('service'))); $datedebut = trim($filter->filter($this->_request->getPost('datedebut'))); $datefin = trim($filter->filter($this->_request->getPost('date_fin'))); $listeutil_serv=new Utilisateur; $this->view->liste_util_serv=$listeutil_serv->utilisateurbyservice($service); $datedebut=dateang($datedebut); $datefin=dateang($datefin); $this->view->date_debut=$datedebut; $this->view->date_fin =$datefin; function getDatesFromRange($startDate, $endDate) { $return = array($startDate); $start = $startDate; $i = 1; if (strtotime($startDate) < strtotime($endDate)) { while (strtotime($start) < strtotime($endDate)) { $start = date('Y-m-d', strtotime($startDate . '+' . $i . ' days')); $return[] = $start; $i++; } } return $return; }// cette fonction afficher les jours de la période sélectionnée $this->view->Tab_dates=getDatesFromRange($datedebut, $datefin); $this->view->listeall=$allabs->listeabs_service($service,$datedebut,$datefin); // renvoi la liste des utilisateur pointés et les jours de pointage
Dans mon vue:
ça affiche uniquement les jours de la période et les utilisateurs de service sélectionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <tr><td> <p> Employeur</p></td> <td><p> Matricule</p></td> <?php foreach($this->Tab_dates as $date): $date_mois=date_mois_jour($date); echo "<td><p>".$date_mois."</p></td>"; endforeach; ?></tr> <?php foreach($this->liste_util_serv as $liste) : ?> <td ><?php echo $liste['nom'].' '.$liste['nom'];?></td> <td width=""> <?php echo $liste['Matricule'];?> </td> </tr> <?php endforeach; }?>
Ma question est comment je peux afficher si un utilisateur est présent entre la 1er date jusqu'à la dernière . Je n'arrive pas à savoir comment faire si un utilisateur est pointé ou non et comment l'afficher sur le calendrier?
J'espère que je me suis bien exprimer sinon veuillez voir l'imprime ecran pour comprendre l'aspect de calendrier( avec une rectif manuel de se que je veux affcher). Avez vous des idée comment je peux terminer ma page et affiché le calendrier?
Merci d'avance![]()
Partager