gestion absences/presences en php

Eléphant du PHP | 150 Messages

16 juin 2011, 08:53

PS : ce n'est qu'un détail mais comment faire pour que lorsque l'on recherche une feuille de présence existante le motif que l'on a choisis pour une absence s'affiche?car la pour l'instant le motif fonctionne dans l'attestation ou dans la consultation mais je sais comment l'afficher dans "formAssiduite".
Tu ajoutes une colonne dans la table HTML qui affiche les assiduités avec un champ texte pour saisir le motif par étudiant comme on a fait pour les cases à cocher "absent/présent". Et dans le SQL qui fait insert et update il faut prendre en considération le nouveau champ motif.
voici ce qu'il y a dans fonction_formAssiduite.php :
// Nouvel enregistrement ou Mise à jour
                        if ($mode_ajout==true){
                        $sql="INSERT INTO assiduite SET date='".$date."', idEtudiant='".$idEtudiant."',
                                                                        presence_mat_t1='".$presence_mat_t1."',
                                                                        presence_mat_t2='".$presence_mat_t2."',
                                                                        presence_amidi_t1='".$presence_amidi_t1."',
                                                                        presence_amidi_t2='".$presence_amidi_t2."',
                                                                       
																	    motif = '".addslashes($motif)."',
																	   
                                                                        nomProf_mat_t1 = '".$nomProf_mat_t1."',
                                                                        nomProf_mat_t2 = '".$nomProf_mat_t2."',
                                                                        nomProf_amidi_t1 = '".$nomProf_amidi_t1."',
                                                                        nomProf_amidi_t2 = '".$nomProf_amidi_t2."',

                                                                        nomMatiere_mat_t1 = '".$nomMatiere_mat_t1."',
                                                                        nomMatiere_mat_t2 = '".$nomMatiere_mat_t2."',
                                                                        nomMatiere_amidi_t1 = '".$nomMatiere_amidi_t1."',
                                                                        nomMatiere_amidi_t2 = '".$nomMatiere_amidi_t2."';";                            
                        } else {
                                $sql="UPDATE assiduite SET      
                                                                        presence_mat_t1='".$presence_mat_t1."',
                                                                        presence_mat_t2='".$presence_mat_t2."',
                                                                        presence_amidi_t1='".$presence_amidi_t1."',
                                                                        presence_amidi_t2='".$presence_amidi_t2."',
                                                                       
																	    motif = '".addslashes($motif)."',
																	   
                                                                        nomProf_mat_t1 = '".$nomProf_mat_t1."',
                                                                        nomProf_mat_t2 = '".$nomProf_mat_t2."',
                                                                        nomProf_amidi_t1 = '".$nomProf_amidi_t1."',
                                                                        nomProf_amidi_t2 = '".$nomProf_amidi_t2."',

                                                                        nomMatiere_mat_t1 = '".$nomMatiere_mat_t1."',
                                                                        nomMatiere_mat_t2 = '".$nomMatiere_mat_t2."',
                                                                        nomMatiere_amidi_t1 = '".$nomMatiere_amidi_t1."',
                                                                        nomMatiere_amidi_t2 = '".$nomMatiere_amidi_t2."'
                                                                       
                                                WHERE date='".$date."' AND idEtudiant='".$idEtudiant."';";                  
                        }
ensuite je n'est pas très bien compris ce qu'il faut faire par la suite, moi actuellement j'ai ça :
// LISTE DES ÉLÈVES DE LA CLASSE SÉLECTIONNÉE
                $listeAssiduiteEtudiants = "";
                if (isset($idClasse) && isset($date))
                {
                                // on fait une jointure externe à gauche du côté de la table client vers la table assiduité
                                // pour afficher tous les étudiants de la classe même si les données de présence sont NULL (cas nouvelle saisie)
                                $sql = "SELECT a.*, total_ha.*, e.*
                                FROM etudiant e LEFT OUTER JOIN assiduite a ON e.idEtudiant=a.idEtudiant AND a.date=date('".$date."')
                                LEFT OUTER JOIN total_heures_absence total_ha ON e.idEtudiant=total_ha.idEtudiant
                                WHERE e.idClasse = '".$idClasse."'
                                ORDER BY e.nom, e.prenom";
                                //echo $sql;
                                $result = mysql_query($sql) or die(mysql_error());
                                while($result && $row=mysql_fetch_array($result))
                                {              
                                                // si les données d'assiduité sont NULL (surtout la date) alors il s'agit d'une nouvelle feuille de présence
                                                // sinon affiche l'absence sous 4 tranches horaires : 2 le matin(mat_t1 et mat_t2) et 2 l'après-midi(amidi_t1 et amidi_t2)
                                                if (is_null($row["date"])) $mode_ajout = true; else $mode_ajout = false;
                                                // stat du total des nbre_heures_absence
                                              $motif = $row['motif'];
											  $nbre_heures_absence = $row['nbre_heures_absence'];
                                                //
                                                $nomProf_mat_t1 = $row['nomProf_mat_t1'];
                                                $nomProf_mat_t2 = $row['nomProf_mat_t2'];
                                                $nomProf_amidi_t1 = $row['nomProf_amidi_t1'];
                                                $nomProf_amidi_t2 = $row['nomProf_amidi_t2'];
                                                //
                                                $nomMatiere_mat_t1 = $row['nomMatiere_mat_t1'];
                                                $nomMatiere_mat_t2 = $row['nomMatiere_mat_t2'];
                                                $nomMatiere_amidi_t1 = $row['nomMatiere_amidi_t1'];
                                                $nomMatiere_amidi_t2 = $row['nomMatiere_amidi_t2'];
                                                //
                                                $mat_t1_checked = $row['presence_mat_t1']!=1 && !is_null($row['presence_mat_t1']) ? " checked " : "";
                                                $mat_t2_checked = $row['presence_mat_t2']!=1 && !is_null($row['presence_mat_t2']) ? " checked " : "";
                                                $amidi_t1_checked = $row['presence_amidi_t1']!=1 && !is_null($row['presence_amidi_t1']) ? " checked " : "";
                                                $amidi_t2_checked = $row['presence_amidi_t2']!=1 && !is_null($row['presence_amidi_t2']) ? " checked " : "";
                                                //
                                                $listeAssiduiteEtudiants .= "<tr><td>".$row['nom']." ".$row['prenom']."</td>
                                                <td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][mat_t1]\" ".$mat_t1_checked." /> Absent(e)</td>
                                                <td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][mat_t2]\" ".$mat_t2_checked." /> Absent(e)</td>
                                                <td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][amidi_t1]\" ".$amidi_t1_checked." /> Absent(e)</td>
                                                <td><input type=\"checkbox\" name=\"absences[".$row['idEtudiant']."][amidi_t2]\" ".$amidi_t2_checked." /> Absent(e)</td>
												<td><SELECT name=\"absences[".$row['idEtudiant']."][motif]\"><option value=\"\"></option><option value=\"personnelle\">personnelle</option><option value=\"médicale\">médicale</option><option value=\"professionnelle\">professionnelle</option><option value=\"injustifiée\">injustifiée</option><option value=\"autre\">autre</option>".($motif)." /></SELECT>
												</td>
                                                <td>" . $nbre_heures_absence . "</td></tr>";
                                }
                }
j'ai donc une liste déroulante on l'on choisis la cause de l'absence mais quand je recherche avec cette meme page une feuille de présence existante, le motif n'apparait pas.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

16 juin 2011, 09:26

Dis moi tu n'aurais pas une solution pour mettre wamp en portable?parce que j'ai trouver des logiciel : j'en est essayer deux et j'ai la même erreur et je ne comprend pas pourquoi : l'index marche avec le menu et tout mais dès que je vais sur une page avec des fonctions comme formAssiduite.php etc il me marque : "Unknown table engine 'InnoDB'" alors que je n'est pas de table nommé comme ça, et ce qui est de plus bizarre ces que les pages sur l'entreprise avec ajout d'entreprise, modification et suppression sont les seules pages qui fonctionne et qui n'affiche pas ce message.pk?

Ps : je n'arrive pas a imprimer une page en paysage même en rajoutant du code dans ton script d'impression.

Code : Tout sélectionner

@page { size:landscape; marks:none;size: 21.0cm;margin: 0cm ;}
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

16 juin 2011, 14:28

j'ai donc une liste déroulante on l'on choisis la cause de l'absence mais quand je recherche avec cette même page une feuille de présence existante, le motif n'apparait pas.
Ok, il te faut simplement placer le motif au début des options de la liste déroulante, comme ça il sera affiché dans le cas d'une consultation d'assiduité existante sinon la première option restera vide. On peut ajouter aussi l'attribut "value" pour attribuer comme valeur $motif.

C'est un peu comme on a fait pour déterminer le "checked" pour les cases à cocher s'il y a déjà une coche dans la base.
Voici comment faire à ce niveau du script:
<td><SELECT name=\"absences[".$row['idEtudiant']."][motif]\"  value=\"".$motif."\">

<option value=\"".$motif."\">".$motif."</option>

<option value=\"personnelle\">personnelle</option>
<option value=\"médicale\">médicale</option>
<option value=\"professionnelle\">professionnelle</option>
<option value=\"injustifiée\">injustifiée</option>
<option value=\"autre\">autre</option>
</SELECT></td>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

16 juin 2011, 15:19

Dis moi tu n'aurais pas une solution pour mettre wamp en portable?parce que j'ai trouver des logiciel : j'en est essayer deux et j'ai la même erreur et je ne comprend pas pourquoi : l'index marche avec le menu et tout mais dès que je vais sur une page avec des fonctions comme formAssiduite.php etc il me marque : "Unknown table engine 'InnoDB'" alors que je n'est pas de table nommé comme ça, et ce qui est de plus bizarre ces que les pages sur l'entreprise avec ajout d'entreprise, modification et suppression sont les seules pages qui fonctionne et qui n'affiche pas ce message.pk?
Désolé, j'ai jamais essayé.
Ps : je n'arrive pas a imprimer une page en paysage même en rajoutant du code dans ton script d'impression.

Code : Tout sélectionner

@page { size:landscape; marks:none;size: 21.0cm;margin: 0cm ;}
Je pense que cette norme de mise en page n'a jamais fonctionné pour la majorité des navigateurs.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

16 juin 2011, 16:02

Lol et tu saurais comment faire pour imprimer en mode paysage?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

16 juin 2011, 17:09

lol oui mais je te dirai pas :mrgreen:

je plaisante, p'tt ce soir. si je dors pas sur mon clavier :mrgreen:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

17 juin 2011, 00:54

lol oui mais je te dirai pas :mrgreen:

je plaisante, p'tt ce soir. si je dors pas sur mon clavier :mrgreen:
Lol je conclut que tu dois dormir sur le clavier.attention au azerty sur la joue!lol!bonne nuit!
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

17 juin 2011, 17:42

Bonjour,

Malheureusement, rêver les oreilles sur un clavier ne m'a pas plus inspiré. J'ai testé certaines solutions avec les CSS mais il faut absolument que l'utilisateur choisisse lui même l'orientation du papier dans la mise en page du navigateur. Les fameuses directives de @page ne fonctionnent pas. Donc voilà une de ces solutions avec CSS :
<style type="text/css" media="print">
  .A4_portrait { width: 18.5cm; height: 27.2cm } /* tailles A4 - marges par défaut de 2.5cm*/
  .A4_paysage { width: 27.2cm; height: 18.5cm } /* tailles A4 - marges par défaut de 2.5cm*/
</style>
puis formater soit tout un document soit simplement des divs spécifiques avec un de ces 2 styles. Par exemple:
<body class="A4_portrait">
.......
......
</body>
ou
<div class="A4_paysage">...........</div>
...

Je retourne dormir :sleeping:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène