Rien de bien méchant, il manque un espace entre SELECT et * dans la requête SQL.
Correction:
$sql="SELECT * FROM ELEVES;";
$sql="SELECT * FROM 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:
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é.------------------------------------------------------------------------------------------------------------------------
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
-----------------------------------------------------------------------------------------------------------------------------
<?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 Gestions des Absences et Présences</div>
<br/><br/>
Date : <input type="text" style="width:180px" id="dateLib" onfocus="visuCal(this,paramLib);" onblur="masqueCal(this);" >
<br/><br/>
Classe :
<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
-- 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.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 ?<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 :   <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) ?
ç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 :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);
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.et aussi cette commande :SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
<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 :   <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) ?
/*--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.<?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>
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.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.
ç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é?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"
Dans le programme, pour afficher les élèves c'est le rôle de la requête :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.
$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'.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.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
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.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?
Chaque chose en son temps. Sinon, Oui, une simple requête SQL ferait l'affaire.ç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é?