gestion absences/presences en php

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

13 avr. 2011, 09:13

Bonjour,

Rien de bien méchant, il manque un espace entre SELECT et * dans la requête SQL.

Correction:
$sql="SELECT  *  FROM ELEVES;";
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

13 avr. 2011, 09:22

ça ne change rien du tout et même en mettant ça :
 $sql="SELECT idEleve,Nom,Prenom,idClasse FROM ELEVES;";
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

18 avr. 2011, 08:27

Bonjour,
c'est bon j'ai trouver mon erreur. j'avais une mauvaise config de wamp et de mes fonctions.Par contre j'aurais aimer savoir comment récupérer mon tableau d'absence/présences?on m'a dis que je devais le récupéré par formulaire, mais comment?
Merci d'avance.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

18 avr. 2011, 16:24

Bon, voici un exemple :

La base de données d'exemple : bd_eleves:
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Lun 18 Avril 2011 à 12:59
-- Version du serveur: 5.1.36
-- Version de PHP: 5.3.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `bd_eleves`
--

-- --------------------------------------------------------

--
-- Structure de la table `assiduite`
--

CREATE TABLE IF NOT EXISTS `assiduite` (
  `idSeance` int(11) NOT NULL,
  `idEleve` int(11) NOT NULL,
  `present` tinyint(1) NOT NULL DEFAULT '1',
  UNIQUE KEY `idSeance` (`idSeance`,`idEleve`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


-- --------------------------------------------------------

--
-- Structure de la table `eleve`
--

CREATE TABLE IF NOT EXISTS `eleve` (
  `idEleve` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(20) NOT NULL,
  `prenom` varchar(20) NOT NULL,
  `idClasse` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`idEleve`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Contenu de la table `eleve`
--

INSERT INTO `eleve` (`idEleve`, `nom`, `prenom`, `idClasse`) VALUES
(1, 'LABELLE', 'Aline', 'BTS-INF-A1'),
(2, 'BONHOMME', 'Olivier', 'BTS-INF-A1'),
(3, 'JAMAISLA', 'Stéphane', 'BTS-INF-A1');

-- --------------------------------------------------------

--
-- Structure de la table `seance`
--

CREATE TABLE IF NOT EXISTS `seance` (
  `idSeance` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(255) NOT NULL,
  `date` datetime NOT NULL,
  `idProf` varchar(20) NOT NULL,
  `idClasse` varchar(20) NOT NULL,
  PRIMARY KEY (`idSeance`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

--
-- Contenu de la table `seance`
--

INSERT INTO `seance` (`idSeance`, `nom`, `date`, `idProf`, `idClasse`) VALUES
(1, 'PHP Niveau 1', '2011-03-18 00:00:00', 'M. LEPROF', 'BTS-INF-A1'),
(2, 'PHP Niveau 2', '2011-04-18 00:00:00', 'Mme LAPROF', 'BTS-INF-A1');
Voici une vue du formulaire de saisie des absences/présence des élèves pour une classe donnée et une séance donnée:
------------------------------------------------------------------------------------------------------------------------
Gestion d'assiduité des élèves
------------------------------------------------------------------------------------------------------------------------
Sélectionner une Classe d'élèves : ************ (liste des classes disponibles)
Sélectionner une Séance : ************ (liste des séances correspondantes à la classe sélectionnée)
-------------------------------------------------------------------------------------------------------------------------
Elève ------------------- Absent?
-------------------------------------
BONHOMME ---------- Non (case à cocher => si absent alors la case est cochée)
JAMAISLA ------------- Non (case à cocher => si absent alors la case est cochée)
LABELLE ------------- Non (case à cocher => si absent alors la case est cochée)
----------------------------------------------------------------------------------------------------------------------------
Bouton : Enregistrer
-----------------------------------------------------------------------------------------------------------------------------
Voici le programme qui affiche ce formulaire, remplie les listes de classe et séance et le tableau des élèves et leurs absences/présences puis exécute l'action enregistrer pour mettre à jour la table assiduité.
<?php 
// init variables
$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
$idSeance = isset($_GET['idSeance']) && !empty($_GET['idSeance'])? $_GET['idSeance'] : null;
$listeClasses = null;
$listeSeances = null;
$listeAssiduiteEleves = null;

// enregistrer la saisie du formulaire
if (isset($_GET['action']) && $_GET['action']=='Enregistrer')
{
	// liste des absences saisies dans le formulaire
	$listeAbsence = isset($_GET['present'])?$_GET['present']:null;
	
	// liste des élèves concernés par la mettre à jour de l'assiduité (élèves de la même classe d'une séance)
	$sql = "SELECT e.idEleve, e.nom FROM eleve e JOIN seance s ON e.idClasse=s.idClasse AND s.idSeance='".$idSeance."' ORDER BY e.nom;";
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	// pour tous les éléves concernés : mettre à jour absent ou présent
	while($result && $row=mysql_fetch_array($result))
	{
		$idEleve = $row['idEleve'];
		// déterminer si l'élève est absent ou présent
		if (isset($listeAbsence["$idSeance,$idEleve"])) $present = '0'; else  $present = '1';
		// mettre à jour la table assiduité pour : l'élève et la séance
		$sql="REPLACE INTO assiduite SET present='".$present."', idSeance='".$idSeance."', idEleve='".$idEleve."';";
		mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
		@mysql_query($sql); // exécution de la mise à jour
	}
}

// crée la liste des classes
$sql = "SELECT DISTINCT idClasse FROM eleve ORDER BY idClasse;";
mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
$result = mysql_query($sql) or die(mysql_error());
while($result && $row=mysql_fetch_array($result))
{
	$selected = $row['idClasse']==$idClasse? " selected " : "";
	$listeClasses .= "<option value=\"".$row['idClasse']."\" ".$selected." >".$row['idClasse']."</option>";
}
mysql_close();

// crée la liste des séances d'une classe sélectionnée
if (isset($idClasse))
{
	$sql = "SELECT s.idSeance, s.nom, s.date FROM seance s WHERE s.idClasse='".$idClasse."' ORDER BY s.date DESC;";
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{
		$selected = $row['idSeance']==$idSeance ? " selected " : "";
		$listeSeances .= "<option value=\"".$row['idSeance']."\" ".$selected." >".$row['nom']."</option>";
	}
	mysql_close();
}

// crée la liste des élèves et leurs infos assiduité pour la classe et la séance sélectionnées
if (isset($idClasse) && isset($idSeance))
{
	$sql = "SELECT e.idEleve, e.nom, (select a.present from assiduite a where a.idEleve=e.idEleve and a.idSeance='".$idSeance."') as present 
			FROM eleve e ORDER BY e.nom";
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{
		$checked = $row['present']!=1 && !is_null($row['present']) ? " checked " : ""; // affiche l'absence
		$listeAssiduiteEleves .= "<tr><td>".$row['nom']."</td>
		<td><input type=\"checkbox\" name=\"present[".$idSeance.",".$row['idEleve']."]\" ".$checked." /></td></tr>";
	}
	mysql_close();
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Gestion d'assiduité des élèves</title>
</head>
<body>
<h1>Gestion d'assiduité des élèves</h1>
<form name="form_assuiduite" action="" method="get">
Classe : <select name="idClasse" onchange="form_assuiduite.submit();" value="<?php echo $idClasse; ?>" >
<option value="" ></option>
<?php echo $listeClasses; ?>
</select>
Séance : <select name="idSeance" onchange="form_assuiduite.submit();" value="<?php echo $idSeance; ?>">
<option value=""></option>
<?php echo $listeSeances; ?>
</select>
<hr />
<table>
<tr><th>Elève</th><th>Absent?</th></tr>
<?php echo $listeAssiduiteEleves; ?>
</table>
<input type="submit" name="action" value="Enregistrer" />
</form>
</body>
</html>
Bonne lecture :wink:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

19 avr. 2011, 08:42

Bonjour,
Merci beaucoup cela m'aide beaucoup.LE seul petit problème est que je n'est pas besoin de définir la séance pour afficher les élèves.il faut que je demande juste la classe et cela affiche les élèves de la classe choisi et après je choisi l'enseignant avec la matière (cf code html en dessous) .D'ailleurs c'est bien dans SEANCES que je dois ajouter professeurs + matières?
Gestions des Absences et Présences</div>
	<br/><br/>
	
			Date : &nbsp; <input type="text" style="width:180px" id="dateLib" onfocus="visuCal(this,paramLib);" onblur="masqueCal(this);" >

			<br/><br/>

			Classe : &nbsp;
			<input type="text" >
		
		<br/><br/>
			
			
			
			
			
					
	  <table BORDER=1 BGCOLOR="#CCCCCC" align="center">
		
			<tr align="center">
			<td>Nom - Prenom</td><td>8h00 - 10h00</td><td>10h00 - 12h00</td><td>13h30 - 15h30</td><td>15h30 - 17h30</td>
			</tr>
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs">
							<option  value="present(e)">présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs">
							<option  value="present(e)">présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs">
							<option  value="present(e)">présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs">
							<option  value="present(e)">présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs">
							<option  value="present(e)">présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
			  <td><select name="abs_prs">
							<option  value="present(e)">présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
	    </td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			
			<tr>
				<td>
				Formateur
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
			</tr>
			<tr>
			<td>
				Matière
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				
				
			</tr>
		</table>
		
		<br/><br/><br/>
		
	
	
           <b><input type="submit" style="width:100px" value="enregistrement" name="envoi" align="center"><!--method="post"--></b>	

Merci d'avance
Modifié en dernier par cobra2930 le 19 avr. 2011, 11:54, modifié 1 fois.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Eléphant du PHP | 150 Messages

19 avr. 2011, 11:23

RE,
j'ai mis ton code sur une autre page et il fonctionne très bien mais quand je reprend ce code dans ma page pour afficher les classe il ne fonctionne plus.je ne comprend pas pourquoi.
Cordialement,
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 avr. 2011, 14:05

"Ne fonctionne pas" ne veut rien dire pour nous si tu ne nous donne pas l'erreur affichée ou le bout de code soupçonné.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

19 avr. 2011, 14:50

il n'y a pas d'erreur apparentes quand je clique sur la petite flèche pour afficher les classes rien ne se passe et les classes ne sont pas présentes dans la liste .
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 avr. 2011, 15:57

Voici une adaptation de mon premier exemple à l'affichage que tu souhaite. C'est à dire, l'affichage de la feuille de présence par classe et par date et où les élèves sont listés et leurs présences/absences représentées par des checkbox en 4 tranches horaires.

Pour cela la base de données a été modifiée surtout au niveau de la table "assiduite" car la présence/absence est désormais enregistrée par tranche horaire d'une séance. La séance de cours étant composée de 4 tranches horaires, 2 le matin et 2 l'après-midi.

Voici la nouvelle base de données:
-- phpMyAdmin SQL Dump
-- version 3.3.9
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Mar 19 Avril 2011 à 13:43
-- Version du serveur: 5.5.8
-- Version de PHP: 5.3.4

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `bd_eleves`
--

-- --------------------------------------------------------

--
-- Structure de la table `assiduite`
--

CREATE TABLE IF NOT EXISTS `assiduite` (
  `idSeance` int(11) NOT NULL,
  `idEleve` int(11) NOT NULL,
  `presence_mat_t1` int(11) NOT NULL DEFAULT '1',
  `presence_mat_t2` int(11) NOT NULL DEFAULT '1',
  `presence_amidi_t1` int(1) NOT NULL DEFAULT '1',
  `presence_amidi_t2` int(11) NOT NULL DEFAULT '1',
  UNIQUE KEY `idSeance` (`idSeance`,`idEleve`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Contenu de la table `assiduite`
--

INSERT INTO `assiduite` (`idSeance`, `idEleve`, `presence_mat_t1`, `presence_mat_t2`, `presence_amidi_t1`, `presence_amidi_t2`) VALUES
(3, 1, 1, 1, 1, 1),
(3, 2, 1, 1, 1, 1),
(3, 3, 0, 0, 0, 0),
(4, 1, 1, 1, 1, 1),
(4, 2, 0, 1, 1, 1),
(4, 3, 0, 1, 1, 1);

-- --------------------------------------------------------

--
-- Structure de la table `eleve`
--

CREATE TABLE IF NOT EXISTS `eleve` (
  `idEleve` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(20) NOT NULL,
  `prenom` varchar(20) NOT NULL,
  `idClasse` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`idEleve`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Contenu de la table `eleve`
--

INSERT INTO `eleve` (`idEleve`, `nom`, `prenom`, `idClasse`) VALUES
(1, 'LABELLE', 'Aline', 'BTS-INF-A1'),
(2, 'BONHOMME', 'Olivier', 'BTS-INF-A1'),
(3, 'JAMAISLA', 'Stéphane', 'BTS-INF-A1');

-- --------------------------------------------------------

--
-- Structure de la table `seance`
--

CREATE TABLE IF NOT EXISTS `seance` (
  `idSeance` int(11) NOT NULL AUTO_INCREMENT,
  `nom` varchar(255) NOT NULL,
  `date` date NOT NULL,
  `duree` int(11) NOT NULL DEFAULT '7',
  `idMatiere` varchar(20) NOT NULL,
  `idProf` varchar(20) NOT NULL,
  `idClasse` varchar(20) NOT NULL,
  PRIMARY KEY (`idSeance`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;

--
-- Contenu de la table `seance`
--

INSERT INTO `seance` (`idSeance`, `nom`, `date`, `duree`, `idMatiere`, `idProf`, `idClasse`) VALUES
(3, 'PHP Niveau 1', '2011-03-18', 7, 'Programmation', 'M. LEPROF', 'BTS-INF-A1'),
(4, 'PHP Niveau 1', '2011-03-19', 7, 'Programmation', 'M. LEPROF', 'BTS-INF-A1'),
(5, 'PHP Niveau 1', '2011-03-20', 7, 'Programmation', 'M. LEPROF', 'BTS-INF-A1'),
(6, 'PHP Niveau 1', '2011-03-21', 7, 'Programmation', 'M. LEPROF', 'BTS-INF-A1'),
(7, 'PHP Niveau 1', '2011-03-22', 7, 'Programmation', 'M. LEPROF', 'BTS-INF-A1'),
(8, 'PHP Niveau 2', '2011-04-18', 7, 'Programmation', 'Mme LAPROF', 'BTS-INF-A1'),
(9, 'PHP Niveau 2', '2011-04-19', 7, 'Programmation', 'Mme LAPROF', 'BTS-INF-A1'),
(10, 'PHP Niveau 2', '2011-04-20', 7, 'Programmation', 'Mme LAPROF', 'BTS-INF-A1'),
(11, 'PHP Niveau 2', '2011-04-24', 7, 'Programmation', 'Mme LAPROF', 'BTS-INF-A1'),
(12, 'PHP Niveau 2', '2011-04-25', 7, 'Programmation', 'Mme LAPROF', 'BTS-INF-A1'),
(13, 'PHP Niveau 2', '2011-04-26', 7, 'Programmation', 'Mme LAPROF', 'BTS-INF-A1'),
(14, 'PHP Niveau 2', '2011-04-27', 7, 'Programmation', 'Mme LAPROF', 'BTS-INF-A1');
Et voici le programme qui anime le formulaire de saisie/affichage des présences/absences des élèves :
<?php 
// init
$dateSeance = isset($_GET['dateSeance']) && !empty($_GET['dateSeance'])? $_GET['dateSeance'] : null;
$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
$idSeance = isset($_GET['idSeance']) && !empty($_GET['idSeance'])? $_GET['idSeance'] : null;
$nomSeance 	= null;
$dureeSeance= null;
$idMatiere 	= null;
$idProf 	= null;
$listeClasses = null;
$listeAssiduiteEleves = null;


// enregistrer la saisie du formulaire
if (isset($_GET['action']) && $_GET['action']=='Enregistrer' && isset($_GET['absences']))
{
	$listeAbsences = $_GET['absences'];
	//echo "<pre>"; print_r($listeAbsences); echo "</pre>";
	$sql = "SELECT idEleve 	FROM eleve WHERE idClasse = '".$idClasse."';";
	//
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{
		$idEleve = $row['idEleve'];
                // si l'élève est absent => 0 sinon => 1
		$presence_mat_t1 = isset($listeAbsences['mat_t1']["$idSeance,$idEleve"])?0:1;
		$presence_mat_t2 = isset($listeAbsences['mat_t2']["$idSeance,$idEleve"])?0:1;
		$presence_amidi_t1 = isset($listeAbsences['amidi_t1']["$idSeance,$idEleve"])?0:1;
		$presence_amidi_t2 = isset($listeAbsences['amidi_t1']["$idSeance,$idEleve"])?0:1;
		//
		$sql="REPLACE INTO assiduite SET idSeance='".$idSeance."', idEleve='".$idEleve."',
									presence_mat_t1='".$presence_mat_t1."',
									presence_mat_t2='".$presence_mat_t2."',
									presence_amidi_t1='".$presence_amidi_t1."',
									presence_amidi_t2='".$presence_amidi_t2."';";
		//
		mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
		@mysql_query($sql);
	}
}

// crée la liste des classes
$sql = "SELECT DISTINCT idClasse FROM eleve ORDER BY idClasse;";
mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
$result = mysql_query($sql) or die(mysql_error());
while($result && $row=mysql_fetch_array($result))
{
	$selected = $row['idClasse']==$idClasse? " selected " : "";
	$listeClasses .= "<option value=\"".$row['idClasse']."\" ".$selected." >".$row['idClasse']."</option>";
}
mysql_close();

// crée la liste des séances d'une classe et date sélectionnée
if (isset($idClasse) && isset($dateSeance))
{
	$sql = "SELECT * FROM seance
		  WHERE idClasse='".$idClasse."' AND date(date)=date('".$dateSeance."') 
		  ORDER BY idClasse, date DESC;";
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{
		$idSeance 	= $row['idSeance'];
		$nomSeance 	= $row['nom'];
		$dureeSeance= $row['duree'];
		$idMatiere 	= $row['idMatiere'];
		$idProf 	= $row['idProf'];
	}
	mysql_close();
}

// crée la liste des élèves et leurs infos assiduité pour la classe sélectionnée
if (isset($idClasse) && isset($idSeance))
{
	$sql = "SELECT e.idEleve, e.nom, e.prenom, a.presence_mat_t1, a.presence_mat_t2, a.presence_amidi_t1, a.presence_amidi_t2
	FROM eleve e Left outer JOIN assiduite a ON a.idSeance='".$idSeance."' AND e.idEleve=a.idEleve 
	WHERE e.idClasse = '".$idClasse."'
	ORDER BY e.nom, e.prenom";
	//
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{		
		// 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)
		$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 " : "";

		// les checkbox sont nommés comme un tableau nommé : absences[tranche horaire][id séance][id élève]
		$listeAssiduiteEleves .= "<tr><td>".$row['nom']." ".$row['prenom']."</td>
		<td><input type=\"checkbox\" name=\"absences[mat_t1][".$idSeance.",".$row['idEleve']."]\" ".$mat_t1_checked." /> Absent(e)</td>
		<td><input type=\"checkbox\" name=\"absences[mat_t2][".$idSeance.",".$row['idEleve']."]\" ".$mat_t2_checked." /> Absent(e)</td>
		<td><input type=\"checkbox\" name=\"absences[amidi_t1][".$idSeance.",".$row['idEleve']."]\" ".$amidi_t1_checked." /> Absent(e)</td>
		<td><input type=\"checkbox\" name=\"absences[amidi_t2][".$idSeance.",".$row['idEleve']."]\" ".$amidi_t2_checked." /> Absent(e)</td>
		</tr>";
	}
	mysql_close();
}


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Gestion d'assiduité des élèves</title>
</head>
<body>
<h1>Gestion d'assiduité des élèves</h1>
<form name="form_assuiduite" action="" method="get">
<table>
<tr>
<th>Date : </th><td><input name="dateSeance" value="<?php echo $dateSeance; ?>" /></td>
<th>Classe :</th><td><select name="idClasse" onchange="form_assuiduite.submit();" value="<?php echo $idClasse; ?>" >
<option value="" ></option>
<?php echo $listeClasses; ?>
</select></td>

<th>Séance : </th><td><?php echo $nomSeance; ?><input type="hidden" name="idSeance" value="<?php echo $idSeance; ?>" /></td>
<th>Durée : </th><td><?php echo $dureeSeance; ?>H.</td>
<th>Matière : </th><td><?php echo $idMatiere; ?></td>
<th>Prof : </th><td><?php echo $idProf; ?></td>
</tr>
</table>
<hr />
<table border="1">
<tr><th>Nom - Prenom</th><th>8h00 - 10h00</th><th>10h00 - 12h00</th><th>13h30 - 15h30</th><th>15h30 - 17h30</th></tr>
<?php echo $listeAssiduiteEleves; ?>
</table>
<input type="submit" name="action" value="Enregistrer" />
</form>
</body>
</html>
Bonne lecture.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

19 avr. 2011, 16:27

Merci beaucoup je sais pas comment te remercier. Mais j'aimerais savoir à quoi correspond cette commande :
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 
a quoi sert elle ? c'est pour ne pas mettre le champs absent à zéro mais à présent ?

De plus j'ai mis un calendrier ou pour choisir la date on clique dessus donc comment la date va t'elle s'insérer ?
<html>
	<head>
		<title> Absence/présence élèves </title>
		<meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" />
		 <link rel="stylesheet" type="text/css" href="style.css">
		 <!-- Calendrier-->
		
				
				<style>
		<!-- input   {border:1px white solid;width:80px;} -->

		.divCal {position:absolute;border:1px grey dashed;background:#ffffff;}
		.divCal a{text-decoration:none; width:100%;   }
		.divCal table {font-size:12px;font-family:Tahoma;text-align:center;margin:0px;width:140px;background:#aabbff}
		.divCal td {margin : 0px;border:1px solid #FFFFFF;}
		.divCal .zoneTitre {font-size:12px;font-family:Tahoma;text-align:center;margin:0px;background:#0077ee;}
		.divCal .zoneNav {font-size:10px;font-family:Tahoma;text-align:center;margin:0px;cursor:pointer;background:#88bbff;}
		.divCal .zoneMois {font-family:Tahoma;width:70px;margin:0px;}
		.divCal .zoneAnnee {font-size:10px;font-weight:bold;text-align:right;margin:0px;width:100%;color:#dd00dd;}
		.divCal .nSemaine {font-family:Tahoma;width:30px;margin:0px;color:#dd00dd;}
		.divCal div{ margin : 0px;}

		.divCal .tdx {color:#F0F0F0;} /*par defaut*/
		.divCal .tdx .enWeekend {background:#C0C0C0;}
		.divCal .tdx .enFeriee {background:#C0C0C0;color:red;}
		.divCal .tdx .enMois {color:black;font-weight:bold;}
		.divCal .tdx .aujourdhui {border:2px solid red;}

		.divCal .tdxNow {color:blue;font-weight:bold;} 
		.divCal .tdxNow:hover {background:grey;} 

		.divCal .tdx:hover .enFeriee {background:grey;}
		.divCal .tdx:hover {background:grey;}
		.divCal .tdx:hover .enWeekend {background:grey;}
		.divCal .tdx:hover .enMois {color:black;font-weight:bold;background:red;} /*pour firefox */
		</style>

		<script language="javascript">
		/****************
		
		****************/
		/*--cette partie du script peut être copié dans un fichier .js --*/
		/*variable globale*/
		var pDefaut = {"mois" : new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"),
		"jour" : new Array("Di","Lu","Ma","Me","Je","Ve","Sa"),"jLib" : new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"),
		"titre" : "micro-cal","aujourdhui" : "aujourd'hui",
		"debutSemaine" : 1, /*debut de la semaine 0=dim,1=lun,...*/
		"jPause" : {6:true,0:true},/*jour de pause de la semaine (samedi & dimanche)*/
		"jFeriee": {"1-1":"jour an","1-5":"fête du travail","8-5":"armistice","14-7":"fête nationale","15-8":"ascencion","1-11":"armistice","11-11":"toussain","25-12":"noel"} ,
		"moisMoins" : "-","moisPlus" : "+", /*naviagation par mois*/ "anneeMoins" : "<","anneePlus" : ">", /*naviagation par annee*/
		"format" : "%j/%m/%a" /*format de sortie : %j = jour, %m = mois, %a =année*/ }
		var tempo = new Array(); /*gestion de la fermeture des calendriers quand on perd le focus*/

		function nbJ(dateX) /*Retourne le nombre de jour depuis le 1er janvier (pr le num de semaine)*/
		{
		   var j_mois=[0,31,59,90,120,151,181,212,243,273,304,334];
		   mm=dateX.getMonth();aa=dateX.getFullYear();nb=j_mois[mm]+dateX.getDate()-1 ; 
		   if ((aa%4==0 && aa %100!=0 || aa%400==0) && mm>1) nb++; /*test bissextile*/
		   return nb;
		}

		function gCal(src,srcId,mm,yy) /*génère le calendrier*/
		{
		   if (tempo!=null&&tempo[srcId]!=null) 
		   {
			  clearTimeout(tempo[srcId]);
			  document.getElementById(src).focus();
		   }
		   if (mm<0) {mm+=12;yy--;} 
			  else if (mm>11) {mm-=12;yy++;}
		   dnow=new Date();
		   param=document.getElementById(srcId).parametre;
		   htm="<table cellpadding=0 cellspacing=0 >";
		   /*titre*/
		   if (param["titre"]!= null ) 
			  {htm+="<tr><td colspan='8' class='zoneTitre' >"+param["titre"]+"</td></tr>";}
		   /*entete*/
		   htm+="<tr><td colspan='8'><table width='100%' cellpadding=0 cellspacing=0 ><tr>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+mm+","+(yy-1)+")\">"+param["anneeMoins"]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+(mm-1)+","+yy+")\">"+param["moisMoins"]+"</td>";
		   htm+="<td class='zoneMois'>"+param["mois"][mm]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+(mm+1)+","+yy+")\" >"+param["moisPlus"]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+mm+","+(yy+1)+")\">"+param["anneePlus"]+"</td>";
		   htm+="</tr></table></td></tr>";
		   /*jour*/
		   htm+="<tr><td></td>";
		   pJs = param["debutSemaine"];
		   pJm = new Date(yy,mm,1).getDay(); /*jour du 1ere du mois*/
		   pjT = 1-pJm+pJs;
		   pjT-=(pjT>1)?7:0;
		   dateX = new Date(yy,mm,pjT);
		   for (j=0;j<7;j++) 
			  {htm+="<td>"+param["jour"][(j+pJs)%7]+"</td>";} 
		   htm+="</tr>";
		   avantFinMois=true;idx=0;idxM=parseInt(nbJ(new Date(yy,mm,1))/7+1,10);
		   while(avantFinMois)
		   {
			  htm+=(idx%7==0)?"<tr><td class='nSemaine' >"+idxM+"</td>":"";
			  htm+="<td><a class='tdx' href='#' onclick=\"javascript:choix("+dateX.getFullYear()+","+dateX.getMonth()+","+dateX.getDate()+",'"+srcId+"','"+src+"')\"   >"+subDiv(param,idx,dateX,mm,aa,0)+"</a></td>";
			  idx++;
			  if (idx%7==0)
				 {htm+="</tr>"; idxM++;}
				 dateX= new Date(dateX.getFullYear(),dateX.getMonth(),dateX.getDate()+1);
			  if (idx>7&&idx%7==0&&dateX.getMonth()!=mm) 
				 {avantFinMois=false;}
		   }
		   /*annee*/htm+="<tr><td colspan='6'><a class='tdxNow' href='#' onclick=\"javascript:choix("+dnow.getFullYear()+","+dnow.getMonth()+","+dnow.getDate()+",'"+srcId+"','"+src+"')\"   >"+param["aujourdhui"]+"</a></td><td colspan='2'  class='zoneAnnee'>"+yy+"</td></tr>";
		   htm+="</table>";
		   document.getElementById(srcId).innerHTML=htm;
		}
		function addZero(val) { return ((val<10)?"0":"")+val;}
		function choix(aa,mm,jj,srcId,src)
		{
		var datePos=new Date(aa,mm,jj);var jour = datePos.getDay(); 
		param=document.getElementById(srcId).parametre;
		var dateAffiche = param["format"].replace("%j",addZero(datePos.getDate())).replace("%k",datePos.getDate()).replace("%d",param["jLib"][jour]);
		dateAffiche = dateAffiche.replace("%m",addZero(datePos.getMonth()+1)).replace("%n",datePos.getMonth()+1).replace("%p",param["mois"][datePos.getMonth()]);
		dateAffiche = dateAffiche.replace("%a",datePos.getFullYear()).replace("%y",datePos.getYear());
		document.getElementById(src).value = dateAffiche; 
		}

		function subDiv(param,idx,dateX,mm,aa,code)
		{
		   pJs = param["debutSemaine"];
		   dnow=new Date();
		   switch(code)
		   {
			  case 0 : return (param["jPause"][(idx+pJs)%7]==true) ? "<div class='enWeekEnd' >"+subDiv(param,idx,dateX,mm,aa,1)+"</div>" : subDiv(param,idx,dateX,mm,aa,1) ; break;
			  case 1 : return (param["jFeriee"][dateX.getDate()+"-"+(dateX.getMonth()+1)]!=null) ? ("<div class=\"enFeriee\" title=\""+param["jFeriee"][dateX.getDate()+"-"+(dateX.getMonth()+1)]+"\"  >"+subDiv(param,idx,dateX,mm,aa,2)+"</div>") : subDiv(param,idx,dateX,mm,aa,2) ; break;
			  case 2 : return (dateX.getMonth()==mm) ? "<div class='enMois' >"+subDiv(param,idx,dateX,mm,aa,3)+"</div>" : subDiv(param,idx,dateX,mm,aa,3) ; break;
			  case 3 : return (dateX.getMonth()==dnow.getMonth()&&dateX.getFullYear()==dnow.getFullYear()&&dateX.getDate()==dnow.getDate()) ? "<div class='aujourdhui' >"+subDiv(param,idx,dateX,mm,aa,4)+"</div>" : subDiv(param,idx,dateX,mm,aa,4) ; break;
			  case 4 : return dateX.getDate() ; break;
		   }
		}

		function visuCal(src,paramX)
		{
		   srcId = src.id+"_cal";
		   if (document.getElementById(srcId)==null)
		   {
			  param={}
			  for (e in pDefaut)
			  {trouve=false;
			   if (paramX!=null) 
				 for (i in paramX) { if (e==i) {param[e]=paramX[e];trouve=true;} }
			  if (!trouve) param[e]=pDefaut[e];
			  }
			  dnow= new Date();
			  div = document.createElement('div');
			  div.setAttribute('id',srcId);
			  div.style.position = 'absolute';   
			  div.style.top = src.offsetTop + src.offsetHeight + 'px';
			  div.style.left = src.offsetLeft + 'px'; /*this.deltaG = 0;  */
			  div.className = 'divCal'; 
			  div.parametre = param;
			  document.body.appendChild(div);
			  gCal(src.id,srcId,dnow.getMonth(),dnow.getFullYear(),param);
		   } else
		   {
			  document.getElementById(src.id+"_cal").style.display='inline';
		   }
		}

		function masqueCal(src)
		{
		 tempo[src.id+"_cal"]=window.setTimeout("document.getElementById('"+src.id+"_cal').style.display='none'",500);
		}
		/******fin de la partie du script qui peut être copiée dans un fichier.js ******/
		</script>

		<script language="javascript">
		/* Test une date (JJ/MM/AAAA) si elle est correct...spécial killer */
		function testTypeDate(src)    
		{
		   tst=false;
		   try
		   {rc=src.split("/");nd=new Date(rc[2],(rc[1]-1),rc[0]);
		   tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
		   } catch(e) {}
		   return tst?'black':'red';
		}
		/* création d'un paramétrage spécifique pour le changement de langue ou de propriété */
		paramGB={"mois" : new Array("January","February","March","April","May","June","July","August","September","October","November","December"),
		"jour" : new Array("Su","Mo","Tu","We","Th","Fr","Sa"), "jLib" : new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"), 
		"jFeriee" : {"26-5":"memorial Day","29-5":"JFK Birthday","14-6":"Flag Day","15-6":"Father's Day","1-9":"Labor Day","11-9":"Patriot Day","13-10":"Columbus Day","31-10":"Halloween", "2-11" : "Daylight Saving Time Ends" , "4-11" : "Election Day", "11-11" : "Veteran's Day" , "27-11" : "Thanksgiving" , "24-12" : "Christmas Eve" , "25-12" : "Christmas"},
		"debutSemaine" : 0, "format": "%a-%m-%j" , "titre" : "start","aujourdhui" : "now"}
		paramLib={"titre": "Date","format" : "%d, %k %p %a"}
		</script>

</head>
	
<body style="margin:0px">
		<div id="haut">
		</div>
		
		 

	<div id="contenu">
			Date : &nbsp <input type="text" style="width:180px" id="dateLib" onfocus="visuCal(this,paramLib);" onblur="masqueCal(this);" ><br>
	
			<center>
		
			<br/><br/><br/>

			Classe : 
					
		<br/><br/>
		
		<table BORDER=1 BGCOLOR="#CCCCCC" align="center">
		
			<tr align="center">
			<td>Nom - Prenom</td><td>8h00 - 10h00</td><td>10h00 - 12h00</td><td>13h30 - 15h30</td><td>15h30 - 17h30</td>
			</tr>
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			
			<tr>
				<td>
				Formateur
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
			</tr>
			<tr>
			<td>
				Matière
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				
				
			</tr>
		</table>
		
		<br/><br/><br/>
		
	
	
           <b><input type="submit" style="width:100px" value="enregistrement" name="envoi" align="center"><!--method="post"--></b>		
	</div>	
	</body>
</html>
et comment peut on récupérer ensuite les absences sous la même forme (tableau) ?

Cordialement,

PS : Dsl de te poser autant de question mais c'est pour mon stage de fin d'année de dut et je suis pas super fort en programmation et tout ce joue sur le stage pour que j'ai le DUT donc je te remercie énormément.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 avr. 2011, 16:54

Merci beaucoup je sais pas comment te remercier. Mais j'aimerais savoir à quoi correspond ceci (je ne comprend pas tous ces chiffres) :
--
-- Contenu de la table `assiduite`
--
INSERT INTO `assiduite` (`idSeance`, `idEleve`, `presence_mat_t1`, `presence_mat_t2`, `presence_amidi_t1`, `presence_amidi_t2`) VALUES
(3, 1, 1, 1, 1, 1),
(3, 2, 1, 1, 1, 1),
(3, 3, 0, 0, 0, 0),
(4, 1, 1, 1, 1, 1),
(4, 2, 0, 1, 1, 1),
(4, 3, 0, 1, 1, 1);

ça c'est la nouvelle structure de la table "assiduite" qui enregistre, pour chaque séance et élève, 4 présences/absences pour les 4 tranches horaires :
1. presence_mat_t1 : tranche horaire 1 du matin correspondant à la présence/absence de 8h00-10h00
2. presence_mat_t2 : tranche horaire 2 du matin correspondant à la présence/absence de 10h00-12h00
3. presence_amidi_t1 : tranche horaire 1 de l'après-midi correspondant à la présence/absence de 13h30-15h30
4. presence_amidi_t2 : tranche horaire 2 de l'après-midi correspondant à la présence/absence de 15h30-17h30


Donc dans ces 4 tranches horaires l'élève est soit présent (valeur=1) ou absent (valeur=0)
et aussi cette commande :
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
 
C'est une directive pour MySQL qui lui demande de ne pas incrémenter les valeurs de clé-primaires (auto-increment) que si la nouvelle valeur insérée est NULL et non zéro.
De toutes façons ces directives sont facultatives pour notre script SQL car elles sont générées automatiquement selon le paramétrage du serveur donc tu peux oublier maintenant et te consacrer au plus important : tes tables.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

19 avr. 2011, 17:22

dsl j'avais editer le poste car en faite j'ai compris que après comment cela marchait

j'ai mis un calendrier ou pour choisir la date on clique dessus donc comment la date va t'elle s'insérer ?
<html>
	<head>
		<title> Absence/présence élèves </title>
		<meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-1" />
		 <link rel="stylesheet" type="text/css" href="style.css">
		 <!-- Calendrier-->
		
				
				<style>
		<!-- input   {border:1px white solid;width:80px;} -->

		.divCal {position:absolute;border:1px grey dashed;background:#ffffff;}
		.divCal a{text-decoration:none; width:100%;   }
		.divCal table {font-size:12px;font-family:Tahoma;text-align:center;margin:0px;width:140px;background:#aabbff}
		.divCal td {margin : 0px;border:1px solid #FFFFFF;}
		.divCal .zoneTitre {font-size:12px;font-family:Tahoma;text-align:center;margin:0px;background:#0077ee;}
		.divCal .zoneNav {font-size:10px;font-family:Tahoma;text-align:center;margin:0px;cursor:pointer;background:#88bbff;}
		.divCal .zoneMois {font-family:Tahoma;width:70px;margin:0px;}
		.divCal .zoneAnnee {font-size:10px;font-weight:bold;text-align:right;margin:0px;width:100%;color:#dd00dd;}
		.divCal .nSemaine {font-family:Tahoma;width:30px;margin:0px;color:#dd00dd;}
		.divCal div{ margin : 0px;}

		.divCal .tdx {color:#F0F0F0;} /*par defaut*/
		.divCal .tdx .enWeekend {background:#C0C0C0;}
		.divCal .tdx .enFeriee {background:#C0C0C0;color:red;}
		.divCal .tdx .enMois {color:black;font-weight:bold;}
		.divCal .tdx .aujourdhui {border:2px solid red;}

		.divCal .tdxNow {color:blue;font-weight:bold;} 
		.divCal .tdxNow:hover {background:grey;} 

		.divCal .tdx:hover .enFeriee {background:grey;}
		.divCal .tdx:hover {background:grey;}
		.divCal .tdx:hover .enWeekend {background:grey;}
		.divCal .tdx:hover .enMois {color:black;font-weight:bold;background:red;} /*pour firefox */
		</style>

		<script language="javascript">
		/****************
		
		****************/
		/*--cette partie du script peut être copié dans un fichier .js --*/
		/*variable globale*/
		var pDefaut = {"mois" : new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"),
		"jour" : new Array("Di","Lu","Ma","Me","Je","Ve","Sa"),"jLib" : new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"),
		"titre" : "micro-cal","aujourdhui" : "aujourd'hui",
		"debutSemaine" : 1, /*debut de la semaine 0=dim,1=lun,...*/
		"jPause" : {6:true,0:true},/*jour de pause de la semaine (samedi & dimanche)*/
		"jFeriee": {"1-1":"jour an","1-5":"fête du travail","8-5":"armistice","14-7":"fête nationale","15-8":"ascencion","1-11":"armistice","11-11":"toussain","25-12":"noel"} ,
		"moisMoins" : "-","moisPlus" : "+", /*naviagation par mois*/ "anneeMoins" : "<","anneePlus" : ">", /*naviagation par annee*/
		"format" : "%j/%m/%a" /*format de sortie : %j = jour, %m = mois, %a =année*/ }
		var tempo = new Array(); /*gestion de la fermeture des calendriers quand on perd le focus*/

		function nbJ(dateX) /*Retourne le nombre de jour depuis le 1er janvier (pr le num de semaine)*/
		{
		   var j_mois=[0,31,59,90,120,151,181,212,243,273,304,334];
		   mm=dateX.getMonth();aa=dateX.getFullYear();nb=j_mois[mm]+dateX.getDate()-1 ; 
		   if ((aa%4==0 && aa %100!=0 || aa%400==0) && mm>1) nb++; /*test bissextile*/
		   return nb;
		}

		function gCal(src,srcId,mm,yy) /*génère le calendrier*/
		{
		   if (tempo!=null&&tempo[srcId]!=null) 
		   {
			  clearTimeout(tempo[srcId]);
			  document.getElementById(src).focus();
		   }
		   if (mm<0) {mm+=12;yy--;} 
			  else if (mm>11) {mm-=12;yy++;}
		   dnow=new Date();
		   param=document.getElementById(srcId).parametre;
		   htm="<table cellpadding=0 cellspacing=0 >";
		   /*titre*/
		   if (param["titre"]!= null ) 
			  {htm+="<tr><td colspan='8' class='zoneTitre' >"+param["titre"]+"</td></tr>";}
		   /*entete*/
		   htm+="<tr><td colspan='8'><table width='100%' cellpadding=0 cellspacing=0 ><tr>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+mm+","+(yy-1)+")\">"+param["anneeMoins"]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+(mm-1)+","+yy+")\">"+param["moisMoins"]+"</td>";
		   htm+="<td class='zoneMois'>"+param["mois"][mm]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+(mm+1)+","+yy+")\" >"+param["moisPlus"]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+mm+","+(yy+1)+")\">"+param["anneePlus"]+"</td>";
		   htm+="</tr></table></td></tr>";
		   /*jour*/
		   htm+="<tr><td></td>";
		   pJs = param["debutSemaine"];
		   pJm = new Date(yy,mm,1).getDay(); /*jour du 1ere du mois*/
		   pjT = 1-pJm+pJs;
		   pjT-=(pjT>1)?7:0;
		   dateX = new Date(yy,mm,pjT);
		   for (j=0;j<7;j++) 
			  {htm+="<td>"+param["jour"][(j+pJs)%7]+"</td>";} 
		   htm+="</tr>";
		   avantFinMois=true;idx=0;idxM=parseInt(nbJ(new Date(yy,mm,1))/7+1,10);
		   while(avantFinMois)
		   {
			  htm+=(idx%7==0)?"<tr><td class='nSemaine' >"+idxM+"</td>":"";
			  htm+="<td><a class='tdx' href='#' onclick=\"javascript:choix("+dateX.getFullYear()+","+dateX.getMonth()+","+dateX.getDate()+",'"+srcId+"','"+src+"')\"   >"+subDiv(param,idx,dateX,mm,aa,0)+"</a></td>";
			  idx++;
			  if (idx%7==0)
				 {htm+="</tr>"; idxM++;}
				 dateX= new Date(dateX.getFullYear(),dateX.getMonth(),dateX.getDate()+1);
			  if (idx>7&&idx%7==0&&dateX.getMonth()!=mm) 
				 {avantFinMois=false;}
		   }
		   /*annee*/htm+="<tr><td colspan='6'><a class='tdxNow' href='#' onclick=\"javascript:choix("+dnow.getFullYear()+","+dnow.getMonth()+","+dnow.getDate()+",'"+srcId+"','"+src+"')\"   >"+param["aujourdhui"]+"</a></td><td colspan='2'  class='zoneAnnee'>"+yy+"</td></tr>";
		   htm+="</table>";
		   document.getElementById(srcId).innerHTML=htm;
		}
		function addZero(val) { return ((val<10)?"0":"")+val;}
		function choix(aa,mm,jj,srcId,src)
		{
		var datePos=new Date(aa,mm,jj);var jour = datePos.getDay(); 
		param=document.getElementById(srcId).parametre;
		var dateAffiche = param["format"].replace("%j",addZero(datePos.getDate())).replace("%k",datePos.getDate()).replace("%d",param["jLib"][jour]);
		dateAffiche = dateAffiche.replace("%m",addZero(datePos.getMonth()+1)).replace("%n",datePos.getMonth()+1).replace("%p",param["mois"][datePos.getMonth()]);
		dateAffiche = dateAffiche.replace("%a",datePos.getFullYear()).replace("%y",datePos.getYear());
		document.getElementById(src).value = dateAffiche; 
		}

		function subDiv(param,idx,dateX,mm,aa,code)
		{
		   pJs = param["debutSemaine"];
		   dnow=new Date();
		   switch(code)
		   {
			  case 0 : return (param["jPause"][(idx+pJs)%7]==true) ? "<div class='enWeekEnd' >"+subDiv(param,idx,dateX,mm,aa,1)+"</div>" : subDiv(param,idx,dateX,mm,aa,1) ; break;
			  case 1 : return (param["jFeriee"][dateX.getDate()+"-"+(dateX.getMonth()+1)]!=null) ? ("<div class=\"enFeriee\" title=\""+param["jFeriee"][dateX.getDate()+"-"+(dateX.getMonth()+1)]+"\"  >"+subDiv(param,idx,dateX,mm,aa,2)+"</div>") : subDiv(param,idx,dateX,mm,aa,2) ; break;
			  case 2 : return (dateX.getMonth()==mm) ? "<div class='enMois' >"+subDiv(param,idx,dateX,mm,aa,3)+"</div>" : subDiv(param,idx,dateX,mm,aa,3) ; break;
			  case 3 : return (dateX.getMonth()==dnow.getMonth()&&dateX.getFullYear()==dnow.getFullYear()&&dateX.getDate()==dnow.getDate()) ? "<div class='aujourdhui' >"+subDiv(param,idx,dateX,mm,aa,4)+"</div>" : subDiv(param,idx,dateX,mm,aa,4) ; break;
			  case 4 : return dateX.getDate() ; break;
		   }
		}

		function visuCal(src,paramX)
		{
		   srcId = src.id+"_cal";
		   if (document.getElementById(srcId)==null)
		   {
			  param={}
			  for (e in pDefaut)
			  {trouve=false;
			   if (paramX!=null) 
				 for (i in paramX) { if (e==i) {param[e]=paramX[e];trouve=true;} }
			  if (!trouve) param[e]=pDefaut[e];
			  }
			  dnow= new Date();
			  div = document.createElement('div');
			  div.setAttribute('id',srcId);
			  div.style.position = 'absolute';   
			  div.style.top = src.offsetTop + src.offsetHeight + 'px';
			  div.style.left = src.offsetLeft + 'px'; /*this.deltaG = 0;  */
			  div.className = 'divCal'; 
			  div.parametre = param;
			  document.body.appendChild(div);
			  gCal(src.id,srcId,dnow.getMonth(),dnow.getFullYear(),param);
		   } else
		   {
			  document.getElementById(src.id+"_cal").style.display='inline';
		   }
		}

		function masqueCal(src)
		{
		 tempo[src.id+"_cal"]=window.setTimeout("document.getElementById('"+src.id+"_cal').style.display='none'",500);
		}
		/******fin de la partie du script qui peut être copiée dans un fichier.js ******/
		</script>

		<script language="javascript">
		/* Test une date (JJ/MM/AAAA) si elle est correct...spécial killer */
		function testTypeDate(src)    
		{
		   tst=false;
		   try
		   {rc=src.split("/");nd=new Date(rc[2],(rc[1]-1),rc[0]);
		   tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
		   } catch(e) {}
		   return tst?'black':'red';
		}
		/* création d'un paramétrage spécifique pour le changement de langue ou de propriété */
		paramGB={"mois" : new Array("January","February","March","April","May","June","July","August","September","October","November","December"),
		"jour" : new Array("Su","Mo","Tu","We","Th","Fr","Sa"), "jLib" : new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"), 
		"jFeriee" : {"26-5":"memorial Day","29-5":"JFK Birthday","14-6":"Flag Day","15-6":"Father's Day","1-9":"Labor Day","11-9":"Patriot Day","13-10":"Columbus Day","31-10":"Halloween", "2-11" : "Daylight Saving Time Ends" , "4-11" : "Election Day", "11-11" : "Veteran's Day" , "27-11" : "Thanksgiving" , "24-12" : "Christmas Eve" , "25-12" : "Christmas"},
		"debutSemaine" : 0, "format": "%a-%m-%j" , "titre" : "start","aujourdhui" : "now"}
		paramLib={"titre": "Date","format" : "%d, %k %p %a"}
		</script>

</head>
	
<body style="margin:0px">
		<div id="haut">
		</div>
		
		 

	<div id="contenu">
			Date : &nbsp <input type="text" style="width:180px" id="dateLib" onfocus="visuCal(this,paramLib);" onblur="masqueCal(this);" ><br>
	
			<center>
		
			<br/><br/><br/>

			Classe : 
					
		<br/><br/>
		
		<table BORDER=1 BGCOLOR="#CCCCCC" align="center">
		
			<tr align="center">
			<td>Nom - Prenom</td><td>8h00 - 10h00</td><td>10h00 - 12h00</td><td>13h30 - 15h30</td><td>15h30 - 17h30</td>
			</tr>
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			<tr>
				<td>
					
				</td>
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
				
					<td><select name="abs_prs" >
							<option  value="present(e)" >présent(e)</option>
							<option  STYLE='color:red' id='select1' value="absent(e)"  title="1" >absent(e)</option>
						</select>
					</td>
			</tr>
			
			<tr>
				<td>
				Formateur
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
				<td>
					Formateur : <br/>
					<select name="Formateur" >
						<option  value="null" >choix ...</option>
						<option  id='select1' value="Mme Anneau"  title="1" >Mme Anneau</option>
						<option  id='select1' value="Mme Chambers"  title="2" >Mme Chambers</option>
						<option  id='select1' value="Mr Deal"  title="3" >Mr Deal</option>
						<option  id='select1' value="Mr Marion"  title="4" >Mr Marion</option>
						<option  id='select1' value="Mme Roux"  title="5" >Mme Roux</option>
						<option  id='select1' value="Mme Sukhvinder"  title="6" >Mme Sukhvinder</option>
						<option  id='select1' value="Mr Valema"  title="7" >Mr Valema</option>					
						<option  id='select1' value="Mme Viard"  title="8" >Mme Viard</option>
						<option  id='select1' value="Mr Zahraoui"  title="9" >Mr Zahraoui</option>
					</select>
				</td>
			</tr>
			<tr>
			<td>
				Matière
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				<td>
					Matière : <br/>
					<select name="Matière" >
						<option  value="null2" >choix ...</option>
						<option  id='select1' value="Anglais"  title="1" >Anglais</option>
						<option  id='select1' value="Communication"  title="2" >Communication</option>
						<option  id='select1' value="Culture"  title="3" >Culture</option>
						<option  id='select1' value="Droit"  title="4" >Droit</option>
						<option  id='select1' value="Economie générale"  title="5" >Economie générale</option>
						<option  id='select1' value="Gestion"  title="6" >Gestion</option>
						<option  id='select1' value="Informatique"  title="7" >Informatique</option>
						<option  id='select1' value="Management"  title="8" >Management</option>
						<option  id='select1' value="Management Entr."  title="9" >Management Entr. </option>
						<option  id='select1' value="Marketing"  title="10" >Marketing</option>		
					</select>
				</td>
				
				
			</tr>
		</table>
		
		<br/><br/><br/>
		
	
	
           <b><input type="submit" style="width:100px" value="enregistrement" name="envoi" align="center"><!--method="post"--></b>		
	</div>	
	</body>
</html>
et comment peut on récupérer ensuite les absences sous la même forme (tableau) ?

Cordialement,

PS : Dsl de te poser autant de question mais c'est pour mon stage de fin d'année de dut et je suis pas super fort en programmation et tout ce joue sur le stage pour que j'ai le DUT donc je te remercie énormément.
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

19 avr. 2011, 20:26

Voici comment j'ai intégré ton code JS du calendrier:
1. j'ai collé le code javascript dans un fichier à part nommé "calendrier.js". Le voilà:
		/*--cette partie du script peut être copié dans un fichier .js --*/
		/*variable globale*/
		
		var pDefaut = {"mois" : new Array("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Aout","Septembre","Octobre","Novembre","Décembre"),
		"jour" : new Array("Di","Lu","Ma","Me","Je","Ve","Sa"),"jLib" : new Array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"),
		"titre" : "micro-cal","aujourdhui" : "aujourd'hui",
		"debutSemaine" : 1, /*debut de la semaine 0=dim,1=lun,...*/
		"jPause" : {6:true,0:true},/*jour de pause de la semaine (samedi & dimanche)*/
		"jFeriee": {"1-1":"jour an","1-5":"fête du travail","8-5":"armistice","14-7":"fête nationale","15-8":"ascencion","1-11":"armistice","11-11":"toussain","25-12":"noel"} ,
		"moisMoins" : "-","moisPlus" : "+", /*naviagation par mois*/ "anneeMoins" : "<","anneePlus" : ">", /*naviagation par annee*/
		"format" : "%j/%m/%a" /*format de sortie : %j = jour, %m = mois, %a =année*/ }
		var tempo = new Array(); /*gestion de la fermeture des calendriers quand on perd le focus*/

		function nbJ(dateX) /*Retourne le nombre de jour depuis le 1er janvier (pr le num de semaine)*/
		{
		   var j_mois=[0,31,59,90,120,151,181,212,243,273,304,334];
		   mm=dateX.getMonth();aa=dateX.getFullYear();nb=j_mois[mm]+dateX.getDate()-1 ; 
		   if ((aa%4==0 && aa %100!=0 || aa%400==0) && mm>1) nb++; /*test bissextile*/
		   return nb;
		}

		function gCal(src,srcId,mm,yy) /*génère le calendrier*/
		{
		   if (tempo!=null&&tempo[srcId]!=null) 
		   {
			  clearTimeout(tempo[srcId]);
			  document.getElementById(src).focus();
		   }
		   if (mm<0) {mm+=12;yy--;} 
			  else if (mm>11) {mm-=12;yy++;}
		   dnow=new Date();
		   param=document.getElementById(srcId).parametre;
		   htm="<table cellpadding=0 cellspacing=0 >";
		   /*titre*/
		   if (param["titre"]!= null ) 
			  {htm+="<tr><td colspan='8' class='zoneTitre' >"+param["titre"]+"</td></tr>";}
		   /*entete*/
		   htm+="<tr><td colspan='8'><table width='100%' cellpadding=0 cellspacing=0 ><tr>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+mm+","+(yy-1)+")\">"+param["anneeMoins"]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+(mm-1)+","+yy+")\">"+param["moisMoins"]+"</td>";
		   htm+="<td class='zoneMois'>"+param["mois"][mm]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+(mm+1)+","+yy+")\" >"+param["moisPlus"]+"</td>";
		   htm+="<td class='zoneNav' onclick=\"gCal('"+src+"','"+srcId+"',"+mm+","+(yy+1)+")\">"+param["anneePlus"]+"</td>";
		   htm+="</tr></table></td></tr>";
		   /*jour*/
		   htm+="<tr><td></td>";
		   pJs = param["debutSemaine"];
		   pJm = new Date(yy,mm,1).getDay(); /*jour du 1ere du mois*/
		   pjT = 1-pJm+pJs;
		   pjT-=(pjT>1)?7:0;
		   dateX = new Date(yy,mm,pjT);
		   for (j=0;j<7;j++) 
			  {htm+="<td>"+param["jour"][(j+pJs)%7]+"</td>";} 
		   htm+="</tr>";
		   avantFinMois=true;idx=0;idxM=parseInt(nbJ(new Date(yy,mm,1))/7+1,10);
		   while(avantFinMois)
		   {
			  htm+=(idx%7==0)?"<tr><td class='nSemaine' >"+idxM+"</td>":"";
			  htm+="<td><a class='tdx' href='#' onclick=\"javascript:choix("+dateX.getFullYear()+","+dateX.getMonth()+","+dateX.getDate()+",'"+srcId+"','"+src+"')\"   >"+subDiv(param,idx,dateX,mm,aa,0)+"</a></td>";
			  idx++;
			  if (idx%7==0)
				 {htm+="</tr>"; idxM++;}
				 dateX= new Date(dateX.getFullYear(),dateX.getMonth(),dateX.getDate()+1);
			  if (idx>7&&idx%7==0&&dateX.getMonth()!=mm) 
				 {avantFinMois=false;}
		   }
		   /*annee*/htm+="<tr><td colspan='6'><a class='tdxNow' href='#' onclick=\"javascript:choix("+dnow.getFullYear()+","+dnow.getMonth()+","+dnow.getDate()+",'"+srcId+"','"+src+"')\"   >"+param["aujourdhui"]+"</a></td><td colspan='2'  class='zoneAnnee'>"+yy+"</td></tr>";
		   htm+="</table>";
		   document.getElementById(srcId).innerHTML=htm;
		}
		function addZero(val) { return ((val<10)?"0":"")+val;}
		function choix(aa,mm,jj,srcId,src)
		{
		var datePos=new Date(aa,mm,jj);var jour = datePos.getDay(); 
		param=document.getElementById(srcId).parametre;
		var dateAffiche = param["format"].replace("%j",addZero(datePos.getDate())).replace("%k",datePos.getDate()).replace("%d",param["jLib"][jour]);
		dateAffiche = dateAffiche.replace("%m",addZero(datePos.getMonth()+1)).replace("%n",datePos.getMonth()+1).replace("%p",param["mois"][datePos.getMonth()]);
		dateAffiche = dateAffiche.replace("%a",datePos.getFullYear()).replace("%y",datePos.getYear());
		document.getElementById(src).value = dateAffiche; 
		}

		function subDiv(param,idx,dateX,mm,aa,code)
		{
		   pJs = param["debutSemaine"];
		   dnow=new Date();
		   switch(code)
		   {
			  case 0 : return (param["jPause"][(idx+pJs)%7]==true) ? "<div class='enWeekEnd' >"+subDiv(param,idx,dateX,mm,aa,1)+"</div>" : subDiv(param,idx,dateX,mm,aa,1) ; break;
			  case 1 : return (param["jFeriee"][dateX.getDate()+"-"+(dateX.getMonth()+1)]!=null) ? ("<div class=\"enFeriee\" title=\""+param["jFeriee"][dateX.getDate()+"-"+(dateX.getMonth()+1)]+"\"  >"+subDiv(param,idx,dateX,mm,aa,2)+"</div>") : subDiv(param,idx,dateX,mm,aa,2) ; break;
			  case 2 : return (dateX.getMonth()==mm) ? "<div class='enMois' >"+subDiv(param,idx,dateX,mm,aa,3)+"</div>" : subDiv(param,idx,dateX,mm,aa,3) ; break;
			  case 3 : return (dateX.getMonth()==dnow.getMonth()&&dateX.getFullYear()==dnow.getFullYear()&&dateX.getDate()==dnow.getDate()) ? "<div class='aujourdhui' >"+subDiv(param,idx,dateX,mm,aa,4)+"</div>" : subDiv(param,idx,dateX,mm,aa,4) ; break;
			  case 4 : return dateX.getDate() ; break;
		   }
		}

		function visuCal(src,paramX)
		{
		   srcId = src.id+"_cal";
		   if (document.getElementById(srcId)==null)
		   {
			  param={}
			  for (e in pDefaut)
			  {trouve=false;
			   if (paramX!=null) 
				 for (i in paramX) { if (e==i) {param[e]=paramX[e];trouve=true;} }
			  if (!trouve) param[e]=pDefaut[e];
			  }
			  dnow= new Date();
			  div = document.createElement('div');
			  div.setAttribute('id',srcId);
			  div.style.position = 'absolute';   
			  div.style.top = src.offsetTop + src.offsetHeight + 'px';
			  div.style.left = src.offsetLeft + 'px'; /*this.deltaG = 0;  */
			  div.className = 'divCal'; 
			  div.parametre = param;
			  document.body.appendChild(div);
			  gCal(src.id,srcId,dnow.getMonth(),dnow.getFullYear(),param);
		   } else
		   {
			  document.getElementById(src.id+"_cal").style.display='inline';
		   }
		}

		function masqueCal(src)
		{
		 tempo[src.id+"_cal"]=window.setTimeout("document.getElementById('"+src.id+"_cal').style.display='none'",500);
		}
		/******fin de la partie du script qui peut être copiée dans un fichier.js ******/

		function testTypeDate(src)    
		{
		   tst=false;
		   try
		   {rc=src.split("/");nd=new Date(rc[2],(rc[1]-1),rc[0]);
		   tst=(rc[2]>1800&&rc[2]<2200&&rc[2]==nd.getFullYear()&&rc[1]==(nd.getMonth()+1)&&rc[0]==nd.getDate());
		   } catch(e) {}
		   return tst?'black':'red';
		}
		/* création d'un paramétrage spécifique pour le changement de langue ou de propriété */
		paramGB={"mois" : new Array("January","February","March","April","May","June","July","August","September","October","November","December"),
		"jour" : new Array("Su","Mo","Tu","We","Th","Fr","Sa"), "jLib" : new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"), 
		"jFeriee" : {"26-5":"memorial Day","29-5":"JFK Birthday","14-6":"Flag Day","15-6":"Father's Day","1-9":"Labor Day","11-9":"Patriot Day","13-10":"Columbus Day","31-10":"Halloween", "2-11" : "Daylight Saving Time Ends" , "4-11" : "Election Day", "11-11" : "Veteran's Day" , "27-11" : "Thanksgiving" , "24-12" : "Christmas Eve" , "25-12" : "Christmas"},
		"debutSemaine" : 0, "format": "%a-%m-%j" , "titre" : "start","aujourdhui" : "now"}
		paramLib={"titre": "Date","format" : "%d, %k %p %a"}
2. aussi j'ai collé le code correspondant au style CSS relatif au calendrier dans fichier à part nommé "calendrier.css". Le voici:
<!-- Calendrier-->
		<!-- input   {border:1px white solid;width:80px;} -->

		.divCal {position:absolute;border:1px grey dashed;background:#ffffff;}
		.divCal a{text-decoration:none; width:100%;   }
		.divCal table {font-size:12px;font-family:Tahoma;text-align:center;margin:0px;width:140px;background:#aabbff}
		.divCal td {margin : 0px;border:1px solid #FFFFFF;}
		.divCal .zoneTitre {font-size:12px;font-family:Tahoma;text-align:center;margin:0px;background:#0077ee;}
		.divCal .zoneNav {font-size:10px;font-family:Tahoma;text-align:center;margin:0px;cursor:pointer;background:#88bbff;}
		.divCal .zoneMois {font-family:Tahoma;width:70px;margin:0px;}
		.divCal .zoneAnnee {font-size:10px;font-weight:bold;text-align:right;margin:0px;width:100%;color:#dd00dd;}
		.divCal .nSemaine {font-family:Tahoma;width:30px;margin:0px;color:#dd00dd;}
		.divCal div{ margin : 0px;}

		.divCal .tdx {color:#F0F0F0;} /*par defaut*/
		.divCal .tdx .enWeekend {background:#C0C0C0;}
		.divCal .tdx .enFeriee {background:#C0C0C0;color:red;}
		.divCal .tdx .enMois {color:black;font-weight:bold;}
		.divCal .tdx .aujourdhui {border:2px solid red;}

		.divCal .tdxNow {color:blue;font-weight:bold;} 
		.divCal .tdxNow:hover {background:grey;} 

		.divCal .tdx:hover .enFeriee {background:grey;}
		.divCal .tdx:hover {background:grey;}
		.divCal .tdx:hover .enWeekend {background:grey;}
		.divCal .tdx:hover .enMois {color:black;font-weight:bold;background:red;} /*pour firefox */
3. Dans mon page html/php d'affichage de la feuille de présence des élèves, j'ai mis des liens vers ces deux fichiers JS et CSS. J'ai placé la zone de saisie de la date calendrier et j'ai ajouté un bouton "submit" nommé "Rechercher" pour démarrer la recherche des infos après le choix d'une date.
En fait, selon moi, quand une date est sélectionnée il faut relancer la recherche des classes ayant des séances prévues à cette date. Et c'est après cette recherche que la liste des classes est remplie. Quand on sélectionne alors une classe, la fiche de présence des élèves s'affiche pour mettre à jour les états de présence/absence pour cette classe et la date sélectionnée au départ. Voila.

Eu, en fait, ce programme joue double rôles : il affiche les états de présences des élèves tel que c'est enregistré dans la base en utilisant le bouton "Rechercher" et en même temps il permet de mettre à jour la fiche en modifiant les états de présence et les enregistrant avec le bouton "Enregistrer"

Voici le programme après intégration du calendrier JS:
<?php 
// init
$dateSeance = isset($_GET['dateSeance']) && !empty($_GET['dateSeance'])? $_GET['dateSeance'] : null;
$idClasse = isset($_GET['idClasse']) && !empty($_GET['idClasse'])? $_GET['idClasse'] : null;
$idSeance = isset($_GET['idSeance']) && !empty($_GET['idSeance'])? $_GET['idSeance'] : null;
$nomSeance 	= null;
$dureeSeance= null;
$idMatiere 	= null;
$idProf 	= null;	
$listeClasses = null;
$listeAssiduiteEleves = null;


// enregistrer la saisie du formulaire
if (isset($_GET['action']) && $_GET['action']=='Enregistrer' && isset($_GET['absences']))
{
	$listeAbsences = $_GET['absences'];
	//echo "<pre>"; print_r($listeAbsences); echo "</pre>";
	$sql = "SELECT idEleve 	FROM eleve WHERE idClasse = '".$idClasse."';";
	//
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{
		$idEleve = $row['idEleve'];
                // si l'élève est absent => 0 sinon => 1
		$presence_mat_t1 = isset($listeAbsences['mat_t1']["$idSeance,$idEleve"])?0:1;
		$presence_mat_t2 = isset($listeAbsences['mat_t2']["$idSeance,$idEleve"])?0:1;
		$presence_amidi_t1 = isset($listeAbsences['amidi_t1']["$idSeance,$idEleve"])?0:1;
		$presence_amidi_t2 = isset($listeAbsences['amidi_t1']["$idSeance,$idEleve"])?0:1;
		//
		$sql="REPLACE INTO assiduite SET idSeance='".$idSeance."', idEleve='".$idEleve."',
									presence_mat_t1='".$presence_mat_t1."',
									presence_mat_t2='".$presence_mat_t2."',
									presence_amidi_t1='".$presence_amidi_t1."',
									presence_amidi_t2='".$presence_amidi_t2."';";
		//
		mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
		@mysql_query($sql);
	}
}

// crée la liste des classes
if (isset($dateSeance))
{
	$sql = "SELECT DISTINCT e.idClasse FROM eleve e JOIN seance s ON e.idClasse=s.idClasse 
	WHERE s.date = date('".$dateSeance."')
	ORDER BY e.idClasse;";
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{
		$selected = $row['idClasse']==$idClasse? " selected " : "";
		$listeClasses .= "<option value=\"".$row['idClasse']."\" ".$selected." >".$row['idClasse']."</option>";
	}
	mysql_close();
}

// crée la liste des séances d'une classe et date sélectionnée
if (isset($idClasse) && isset($dateSeance))
{
	$idSeance 	= null;
	$nomSeance 	= null;
	$dureeSeance= null;
	$idMatiere 	= null;
	$idProf 	= null;	
	$sql = "SELECT * FROM seance
		  WHERE idClasse='".$idClasse."' AND date=date('".$dateSeance."') 
		  ORDER BY idClasse, date DESC;";
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{
		$idSeance 	= $row['idSeance'];
		$nomSeance 	= $row['nom'];
		$dureeSeance= $row['duree'];
		$idMatiere 	= $row['idMatiere'];
		$idProf 	= $row['idProf'];
	}
	mysql_close();
}

// crée la liste des élèves et leurs infos assiduité pour la classe sélectionnée
if (isset($idClasse) && isset($idSeance))
{
	$sql = "SELECT e.idEleve, e.nom, e.prenom, a.presence_mat_t1, a.presence_mat_t2, a.presence_amidi_t1, a.presence_amidi_t2
	FROM eleve e Left outer JOIN assiduite a ON a.idSeance='".$idSeance."' AND e.idEleve=a.idEleve 
	WHERE e.idClasse = '".$idClasse."'
	ORDER BY e.nom, e.prenom";
	//
	mysql_select_db("bd_eleves", @mysql_connect("localhost","root","")) or die(mysql_error());
	$result = mysql_query($sql) or die(mysql_error());
	while($result && $row=mysql_fetch_array($result))
	{		
		// 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)
		$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 " : "";

		// les checkbox sont nommés comme un tableau nommé : absences[tranche horaire][id séance][id élève]
		$listeAssiduiteEleves .= "<tr><td>".$row['nom']." ".$row['prenom']."</td>
		<td><input type=\"checkbox\" name=\"absences[mat_t1][".$idSeance.",".$row['idEleve']."]\" ".$mat_t1_checked." /> Absent(e)</td>
		<td><input type=\"checkbox\" name=\"absences[mat_t2][".$idSeance.",".$row['idEleve']."]\" ".$mat_t2_checked." /> Absent(e)</td>
		<td><input type=\"checkbox\" name=\"absences[amidi_t1][".$idSeance.",".$row['idEleve']."]\" ".$amidi_t1_checked." /> Absent(e)</td>
		<td><input type=\"checkbox\" name=\"absences[amidi_t2][".$idSeance.",".$row['idEleve']."]\" ".$amidi_t2_checked." /> Absent(e)</td>
		</tr>";
	}
	mysql_close();
}


?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Gestion d'assiduité des élèves</title>
<link rel="stylesheet" type="text/css" href="calendrier.css">
<script type="text/javascript" src="calendrier.js"></script>
</head>
<body>
<h1>Gestion d'assiduité des élèves</h1>

<form name="form1" action="" method="get">
<table>
<tr>
<th>Date : </th><td><input type="text" id="dateLib" name="dateSeance" value="<?php echo $dateSeance; ?>" style="width:180px"
	onfocus="visuCal(this,{'format' : '%a-%m-%j'})" onblur="masqueCal(this);"  /></td>
<th>Classe :</th><td><select name="idClasse" onchange="form1.submit();" value="<?php echo $idClasse; ?>" >
<option value="" ></option>
<?php echo $listeClasses; ?>
</select>
</td>
<td><input type="submit" name="action" value="Rechercher" /></td>
</tr></table>
<table>
<tr>
<th>Séance : </th><td><?php echo $nomSeance; ?><input type="hidden" name="idSeance" value="<?php echo $idSeance; ?>" /></td>
<th>Durée : </th><td><?php echo $dureeSeance; ?>H.</td>
<th>Matière : </th><td><?php echo $idMatiere; ?></td>
<th>Prof : </th><td><?php echo $idProf; ?></td>
</tr>
</table>
<hr />
<table border="1">
<tr><th>Nom - Prenom</th><th>8h00 - 10h00</th><th>10h00 - 12h00</th><th>13h30 - 15h30</th><th>15h30 - 17h30</th></tr>
<?php echo $listeAssiduiteEleves; ?>
</table>
<input type="submit" name="action" value="Enregistrer" />
</form>
</body>
</html>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Eléphant du PHP | 150 Messages

20 avr. 2011, 08:30

encore MERCI!!
En fait, selon moi, quand une date est sélectionnée il faut relancer la recherche des classes ayant des séances prévues à cette date. Et c'est après cette recherche que la liste des classes est remplie. Quand on sélectionne alors une classe, la fiche de présence des élèves s'affiche pour mettre à jour les états de présence/absence pour cette classe et la date sélectionnée au départ. Voila.
moi j'aimerais que les classe s'affiche tout le temps sans qu'on est besoin de définir les séances au préalable, donc j'ai modifié un petit peu le dernier code que tu m'as donner en mettant la liste des classe du code précédent, cela fonctionne mais les élèves de la classe ne s'affiche toujours pas.
De plus j'aimerais pouvoir sélectionner le formateur et la matière depuis le site si on les a rentré auparavant dans la base de donnée (je supprimerais aussi la durée du cours qui ne m'est pas utile) et pourquoi a tu mis un nom de matière et un id?Pour moi vu que tu as mis un "nom" dans l'id il y en a un des deux inutile non?
Eu, en fait, ce programme joue double rôles : il affiche les états de présences des élèves tel que c'est enregistré dans la base en utilisant le bouton "Rechercher" et en même temps il permet de mettre à jour la fiche en modifiant les états de présence et les enregistrant avec le bouton "Enregistrer"
ça s'est super pratique mais j'aimerais aussi qu'on fasse une recherche par élève pour voir ses absences. On gère sa grâce a une simple commande sql ou c'est plus compliqué?
Tu veux mourir? OK!! Mais pas dans ma voiture, alors attache ta ceinture !! :pouce:
Tony :boire9:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

20 avr. 2011, 10:24

moi j'aimerais que les classe s'affiche tout le temps sans qu'on est besoin de définir les séances au préalable, donc j'ai modifié un petit peu le dernier code que tu m'as donner en mettant la liste des classe du code précédent, cela fonctionne mais les élèves de la classe ne s'affiche toujours pas.
Dans le programme, pour afficher les élèves c'est le rôle de la requête :
$sql = "SELECT e.idEleve, e.nom, e.prenom, a.presence_mat_t1, a.presence_mat_t2, a.presence_amidi_t1, a.presence_amidi_t2
        FROM eleve e Left outer JOIN assiduite a ON a.idSeance='".$idSeance."' AND e.idEleve=a.idEleve
        WHERE e.idClasse = '".$idClasse."'
        ORDER BY e.nom, e.prenom";
Où on sélectionne tous les élèves d'une classe donnée (Where e.idClasse=$idClasse) et les informations de présence de la table 'assiduite' seulement si elles existent (Left outer Join) remarque que l'idSeance est utilisé pour bien se positionner dans la table 'assiduite'.
Si le programme php n'affiche pas les données escomptées, il faudrait au préalable, tester toutes les requêtes sous phpMyAdmin en interrogeant directement MySQL.
De plus j'aimerais pouvoir sélectionner le formateur et la matière depuis le site si on les a rentré auparavant dans la base de donnée
Il faut pour ça créer 2 tables : "formateur" et "matiere" et préalablement les remplir puis intégrer deux listes déroulantes (balise <select ...>) dans ton html préalablement remplies par php via 2 requêtes SQL SELECT.
et pourquoi a tu mis un nom de matière et un id?Pour moi vu que tu as mis un "nom" dans l'id il y en a un des deux inutile non?
Peut importe dans mon programme de test. J'ai utiliser le nom de la matière dans le champ idMatiere comme je l'ai fait avec idProf et idClasse. Mais c'est juste pour simplifier le programme de test. Pour aller plus loin, il faudrait créer des tables supplémentaires en relation avec nos tables principales qui détailleront les infos : Matiere, Prof et Classe.
ça c'est super pratique mais j'aimerais aussi qu'on fasse une recherche par élève pour voir ses absences. On gère sa grâce a une simple commande sql ou c'est plus compliqué?
Chaque chose en son temps. Sinon, Oui, une simple requête SQL ferait l'affaire.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène