Premier commit

This commit is contained in:
pierre renaudot 2023-09-28 08:33:38 +02:00
parent f2a7094f65
commit 5d06dc1486
79 changed files with 3068 additions and 0 deletions

View File

@ -0,0 +1,59 @@
<?php
// ****************************************'
// Le CASTEL-BTS SIO/ PROJET SDIS29 '
// Programme: c_connexion.php '
// Objet : authentification '
// Client : Bts SIO2 '
// Version : 2023 '
// Date : 18 septembre 2023 à 12h00 '
// Auteur : pascal-blain@wanadoo.fr '
//*****************************************'
if(!isset($_REQUEST['action'])){$_REQUEST['action'] = 'demandeConnexion';}
$action = $_REQUEST['action'];
switch($action){
case 'demandeConnexion':{
session_unset();
unset($choix);
$formulaire ="frmIdentification";
$champ ="login";
include("vues/v_entete.php");
include("vues/v_connexion.php");
break;
}
case 'valideConnexion':{
$login = $_REQUEST['login'];
$mdp = md5($_REQUEST['mdp']);
$utilisateur = $pdo->getInfosPompier($login,$mdp);
if(!is_array( $utilisateur)){
$formulaire ="frmIdentification";
$champ ="login";
include("vues/v_entete.php");
ajouterErreur("Login ou mot de passe incorrect");
include("vues/v_erreurs.php");
include("vues/v_connexion.php");
}
else{
$id = $utilisateur['id'];
$nom = $utilisateur['nom'];
$prenom = $utilisateur['prenom'];
$a1 = $utilisateur['cNom'];
$a2 = $utilisateur['cAdresse'];
$a3 = "<small>(GT de ".$utilisateur['cGroupement'].")</small>";
$a4 = $utilisateur['cTel'];
connecter($utilisateur['pCis'],$id,$nom,$prenom,$utilisateur['pStatut'], $a1, $a2, $a3, $a4);
header ('location: index.php?choixTraitement=pompiers&action=voir');
}
break;
}
default :{
$formulaire ="frmIdentification";
$champ ="login";
include("vues/v_entete.php");
include("vues/v_connexion.php");
break;
}
}
?>

View File

@ -0,0 +1,19 @@
<?php
session_start();
include (__DIR__ . '/../include/class.pdo.php');
var_dump($_POST);
$pdo = PdoBD::getPdoBD();
var_dump($_SESSION);
$pdo->majActivite(
$_SESSION['cis'],
$_SESSION['idUtilisateur'],
$_POST['date'],
$_POST['tranche'],
$_POST['dispo']
);

45
controleurs/c_gardes.php Normal file
View File

@ -0,0 +1,45 @@
<?php
// ****************************************'
// Le CASTEL-BTS SIO/ PROJET SDIS29 '
// Programme: c_gardes.php '
// Objet : gestion des gardes '
// Client : Bts SIO2 '
// Version : 2023 '
// Date : 18/09/2023 à 23h50 '
// Auteur : pascal-blain@wanadoo.fr '
//*****************************************'
$action = $_REQUEST['action'];
switch($action)
{
case 'voir':
{
include("vues/v_entete.php");
if(!isset($_REQUEST['zSemaine'])){$_REQUEST['zSemaine'] = date('W');}
$semaine = $_REQUEST['zSemaine'];
if(!isset($_REQUEST['zAnnee'])){$_REQUEST['zAnnee'] = date('Y');}
$annee = $_REQUEST['zAnnee'];
$premierJour = strtotime("+$semaine weeks",mktime(0,0,0,1,1,$annee));
if (date('w',$premierJour) != 1){$premierJour = strtotime("last monday",$premierJour);}
$lesTranches = $pdo->getParametre("tranche");
$lesTypesDispos = $pdo->getParametre("dispo");
$lesPompiers = $pdo->getLesPompiers($_SESSION['cis']);
$lesDispos = $pdo->getDisposHebdo("*", $semaine, $annee);
include("vues/v_ficheGardes.php");
break;
}
//-----------------------------------------
case 'majGarde':
{
$Garde = ($_REQUEST["ztExGarde"] == "0") ? 1 : 0;
$pdo->majGarde();
header ('location: index.php?choixTraitement=gardes&action=voir&zSemaine='.$_REQUEST["zSemaine"].'&zAnnee='.$_REQUEST["zAnnee"]);
break;
}
//-----------------------------------------
default :
{
echo 'erreur d\'aiguillage !'.$action;
break;
}
}
?>

View File

@ -0,0 +1,67 @@
<?php
// ****************************************'
// Le CASTEL-BTS SIO/ PROJET SDIS29 '
// Programme: c_interventions.php '
// Objet : gestion des interventions '
// Client : Bts SIO2 '
// Version : 1.0 '
// Date : 23/05/2019 à 12h00 '
// Auteur : pascal-blain@wanadoo.fr '
//*****************************************'
$action = $_REQUEST['action'];
switch($action)
{
case 'voir':
{
include("vues/v_entete.php");
if(!isset($_REQUEST['zSemaine'])){$_REQUEST['zSemaine'] = date('W');}
$semaine = $_REQUEST['zSemaine'];
if(!isset($_REQUEST['zAnnee'])){$_REQUEST['zAnnee'] = date('Y');}
$annee = $_REQUEST['zAnnee'];
$premierJour = strtotime("+$semaine weeks",mktime(0,0,0,1,1,$annee));
if (date('w',$premierJour) != 1){$premierJour = strtotime("last monday",$premierJour);}
$lesTranches = $pdo->getParametre("tranche");
$lesTypesDispos = $pdo->getParametre("dispo");
$titre="CIS"; //Centre d'incendie et de secours :";
$lesCasernes = $pdo->getLesCasernes($_SESSION["adr1"]);
include("vues/v_choixCaserne.php");
$lesPompiers = $pdo->getLesPompiers($choix);
$lesInterventions=$pdo->getLesInterventions($choix);
$intervention=1;
$lesParticipants= $pdo->getLesParticipants($choix, $intervention);
include("vues/v_Intervention.php");
break;
}
//-----------------------------------------
case 'majGarde':
{
$pdo->majGarde($_REQUEST["ztLaDate"], $_REQUEST["ztLaTranche"], $_REQUEST["ztExGarde"], $_REQUEST["ztPompier"]);
header ('location: index.php?choixTraitement=gardes&action=voir&zSemaine='.$_REQUEST["zSemaine"].'&zAnnee='.$_REQUEST["zAnnee"]);
break;
}
//-----------------------------------------
default :
{
echo 'erreur d\'aiguillage !'.$action;
break;
}
}
/*
table equipe:
eCis smallint(6)
ePompier smallint(6)
eIntervention smallint(6)
table intervention :
iCis smallint(6)
iId smallint(6)
iLieu varchar(50)
iDescription varchar(255)
iDate datetime
iTranche tinyint(3)
iHeureDebut datetime
iHeureFin datetime
*/
?>

85
controleurs/c_param.php Normal file
View File

@ -0,0 +1,85 @@
<?php
// ****************************************'
// Le CASTEL-BTS SIO/ PROJET SDIS29 '
// Programme: c_param.php '
// Objet : controleur parametres '
// Client : Bts SIO2 '
// Version : 2023 '
// Date : 18/09/2023 à 16h00 '
// Auteur : pascal-blain@wanadoo.fr '
//*****************************************'
if(!isset($_REQUEST['type'])){$_REQUEST['type'] = '';}
$type = $_REQUEST['type'];
if(!isset($_REQUEST['valeur'])){$_REQUEST['valeur'] = '';}
$valeur = $_REQUEST['valeur'];
if(!isset($_REQUEST['zPlancher'])){$_REQUEST['zPlancher'] = '';}
$plancher = intval($_REQUEST['zPlancher']);
if(!isset($_REQUEST['zPlafond'])){$_REQUEST['zPlafond'] = '';}
$plafond = intval($_REQUEST['zPlafond']);
if(!isset($_REQUEST['zType'])){$_REQUEST['zType'] = '';}
$zType = $_REQUEST['zType'];
if(!isset($_REQUEST['zIndice'])){$_REQUEST['zIndice'] = '';}
$indice = $_REQUEST['zIndice'];
$action = $_REQUEST['action'];
switch($action) {
case 'voir':
{
include("vues/v_entete.php");
$lesParametres=$pdo->getLesParametres();
include("vues/v_choixParam.php");
$enteteParametre=$lesParametres[$noP-1];
$lesInfosParametre = $pdo->getParametre($choix,"*");
include("vues/v_ficheParametre.php");
$stat="2";
break;
}
//-----------------------------------------liste détaillée pour un parametre
case 'liste':
{
include("vues/v_entete.php");
$lesParametres=$pdo->getLesParametres();
include("vues/v_choixParam.php");
$lesStatistiques = $pdo->getParametre($choix, $indice);
$titre2=$lesStatistiques[0]['libelle'];
include("vues/v_listeStat.php");
break;
}
//----------------------------------------- AJOUT
case 'ajouter':
case 'modifier':
case 'supprimer':
{
include("vues/v_entete.php");
$infosParam = $pdo->getInfosParam($type, $valeur);
include("vues/v_unParam.php");
break;
}
//----------------------------------------- VALIDATIONS
case 'validerAjouter':
{// enregistrement de la ligne et retour
if ($_REQUEST['zOk']=="OK") {$pdo->ajoutParametre($type, $valeur, addslashes ($_REQUEST['zLibelle']), $plancher, $plafond);}
header ('location: index.php?choixTraitement=parametres&action=voir&lstParam='.$type);
}
//----------------------------------------- MODIFICATION
case 'validerModifier':
{
if ($_REQUEST['zOk']=="OK") {$pdo->majParametre($type, $valeur, addslashes ($_REQUEST['zLibelle']), $plancher, $plafond);}
header ('location: index.php?choixTraitement=parametres&action=voir&lstParam='.$type);
break;
}
//----------------------------------------- SUPPRESSION
case 'validerSupprimer':
{
if ($_REQUEST['zOk']=="OK") {$pdo->supprimeParametre($type, $valeur);}
header ('location: index.php?choixTraitement=parametres&action=voir&lstParam='.$type);
break;
}
default :
{
echo 'erreur d\'aiguillage !'.$action;
break;
}
}
?>

136
controleurs/c_pompiers.php Normal file
View File

@ -0,0 +1,136 @@
<?php
// ****************************************'
// Le CASTEL-BTS SIO/ PROJET SDIS29 '
// Programme: c_pompiers.php '
// Objet : gestion des pompiers '
// Client : Bts SIO2 '
// Version : 2023.0 '
// Date : 18/09/2023 à 16h50 '
// Auteur : pascal.blain@ac-dijon.fr '
//*****************************************'
$action = $_REQUEST['action'];
switch($action) {
case 'voir':
{
$formulaire = "choixP"; //Donne le focus dans le form
$champ = "lstPompiers";
include("vues/v_entete.php");
$lesLignes = $pdo->getLesPompiers($_SESSION['cis']);
include("vues/v_choixPompier.php"); // Formulaire de choix des pompiers
$lesInfosPompier = $pdo->getInfosPompier("*",$choix);
$lesTranches = $pdo->getParametre("tranche");
$lesGardes = $pdo->getInfosGardes($choix);
if(!isset($_REQUEST['zSemaine'])) {
$_REQUEST['zSemaine'] = date('W');
}
$semaine = $_REQUEST['zSemaine'];
if(!isset($_REQUEST['zAnnee'])) {
$_REQUEST['zAnnee'] = date('Y');
}
$annee = $_REQUEST['zAnnee'];
$lesDispos = $pdo->getDisposHebdo($choix, $semaine, $annee);
//echo "annee:".$annee."pompier: ".$choix."semaine : ".$semaine;
$premierJour = strtotime("+$semaine weeks", mktime(0,0,0,1,1,$annee));
if (date('w',$premierJour) != 1){
$premierJour = strtotime("last monday", $premierJour);
}
$lesTypesDispos = $pdo->getParametre("dispo");
include("vues/v_fichePompier.php");
break;
}
//----------------------------------------- FORMULAIRE DE SAISIE
case 'ajouter':
case 'modifier':
case 'supprimer':
{
$formulaire ="frmA";
$champ ="ztNom";
include("vues/v_entete.php");
$choix= $_REQUEST['lstPompiers'];
$lesInfosPompier = $pdo->getInfosPompier("*",$choix);
$lesTypes = $pdo->getParametre("typePer");
$lesGrades = $pdo->getParametre("grade");
$lesStatuts = $pdo->getParametre("statAgt");
include("vues/v_unPompier.php");
break;
}
//----------------------------------------- VALIDATION
case 'validerAjouter':
case 'validerModifier':
case 'validerSupprimer':
{
$valeur = $_REQUEST['agent'];
if ($_REQUEST['zOk']=="OK")
{
if ($action==="validerSupprimer") {$pdo->supprimePompier($valeur);}
else
{
$nom = addslashes ($_REQUEST['ztNom']);
$prenom = addslashes ($_REQUEST['ztPrenom']);
$type = $_REQUEST['lstType'];
$grade = $_REQUEST['lstGrade'];
$statut = $_REQUEST['lstStatut'];
$cis = $_REQUEST['zCis'];
$mail = $_REQUEST['ztMail'];
$login = $_REQUEST['ztLogin'];
$mdp = md5($_REQUEST['ztMdp']); if($_REQUEST['brMdp']==0 AND $action==="validerModifier") {$mdp="*";}
$adresse = addslashes ($_REQUEST['ztAdresse']);
if (strlen($_REQUEST['ztCP'])>1){
$cp = $_REQUEST['ztCP'];} else {$cp = "Null";
}
$ville = addslashes($_REQUEST['ztVille']);
if (strlen($_REQUEST['ztTel'])>1) {
$tel = str_replace(" ", "", $_REQUEST['ztTel']);
$tel=str_replace(".", "", $tel);
$tel=str_replace("/", "", $tel);
} else {
$tel="Null";
}
$commentaire = addslashes ($_REQUEST['ztObs']);
if ($action === "validerAjouter") {
$pdo->ajoutPompier($cis, $valeur,$nom,$prenom,$statut,$mail,$login,$mdp,$grade,$type,$adresse,$cp,$ville,$tel,$commentaire);
$sujet = "nouveau compte";
$msg = "Bonjour " . $prenom . " " . $nom . ", \r\nLe Castel vient de créer un compte pour vous ...\r\n";
} else {
$pdo->majPompier($cis, $valeur,$nom,$prenom,$statut,$mail,$login,$mdp,$grade,$type,$adresse,$cp,$ville,$tel,$commentaire);
$sujet = "nouveau mot de passe";
$msg = "Bonjour " . $prenom . " " . $nom . ", \r\nLe Castel vient de modifier votre mot de passe ...\r\n";
}
$entete = "From: Pascal Blain <pascal-blain@wanadoo.fr>\r\n";
$entete .= "Mime-Version: 1.0\r\n";
$entete .= "Content-type: text/html; charset=utf-8\r\n";
$entete .= "\r\n";
$msg .= "Statut : " . $statut."\r\n";
$msg .= "Identifiant : " . $login."\r\n";
$msg .= "Mot de passe : " . $_REQUEST['ztMdp'] . "\r\n";
//$pdo->envoyerMail($mail, $sujet, $msg, $entete);
}
}
header ('location: index.php?choixTraitement=pompiers&action=voir&lstPompiers=' . $valeur);
break;
}
//-----------------------------------------
case 'majActivite':
{
$pdo->majActivite($_REQUEST["ztLaDate"], $_REQUEST["ztLaTranche"], $_REQUEST["ztExDispo"],$_REQUEST["brDispo"] );
header ('location: index.php?choixTraitement=pompiers&action=voir&zSemaine='.$_REQUEST["zSemaine"].'&zAnnee='.$_REQUEST["zAnnee"]);
break;
}
//-----------------------------------------
default :
{
echo 'erreur d\'aiguillage !'.$action;
break;
}
}
?>

BIN
images/Thumbs.db Normal file

Binary file not shown.

BIN
images/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
images/ajout.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/ajouter.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/ajoutmembre.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
images/alerte moyen.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/alerte.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
images/alerte.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
images/alerte_petit.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
images/annuler.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/bt-print.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 B

BIN
images/bt-send.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

BIN
images/castel.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
images/cocheB.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
images/cocheR.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/cocheV.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/copyleft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

BIN
images/cp.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 B

BIN
images/danger.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

BIN
images/deconnexion.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

BIN
images/droite.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 234 B

BIN
images/droite_.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

BIN
images/editer.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

BIN
images/fermer.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
images/fleche_oblique.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

BIN
images/gauche.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

BIN
images/gauche_.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 343 B

BIN
images/goDernier.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 271 B

BIN
images/goPrecedent.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

BIN
images/goPremier.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 405 B

BIN
images/goSuivant.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

BIN
images/group.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
images/imprimer.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
images/infobulle.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 509 B

BIN
images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
images/milieu.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 555 B

BIN
images/milieu_.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 563 B

BIN
images/modif.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
images/picto_disconnect.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 499 B

BIN
images/plus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
images/plusB.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
images/plusBleu.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
images/plusGrand.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
images/recherche.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

BIN
images/recherche2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

BIN
images/recherche3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

BIN
images/rechercher.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
images/supprimer.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
images/supprimer.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/users.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
images/validation.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
images/valider.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

502
include/class.pdo.php Normal file
View File

@ -0,0 +1,502 @@
<?php
/**
* @author : Pascal BLAIN, lycee le Castel à Dijon
* @version : 2023-09-18 à 16h43
* Classe d'acces aux donnees. Utilise les services de la classe PDO pour l'application
* Les attributs sont tous statiques, les 4 premiers pour la connexion
* $monPdo est de type PDO - $monPdoBD contient l'unique instance de la classe
* @link http://www.php.net/manual/fr/book.pdo.php
*/
class PdoBD
{
private static $serveur = 'mysql:host=localhost';
private static $bdd = 'dbname=sdis29';
private static $user = 'root';
private static $mdp = '';
private static $monPdo;
private static $monPdoBD = null;
private function __construct()
{
PdoBD::$monPdo = new PDO(PdoBD::$serveur . ';' . PdoBD::$bdd, PdoBD::$user, PdoBD::$mdp);
PdoBD::$monPdo->query("SET CHARACTER SET utf8");
}
public function _destruct()
{
PdoBD::$monPdo = null;
}
/**
* Fonction statique qui cree l'unique instance de la classe PdoBD
* Appel : $instancePdoBD = PdoBD::getPdoBD();
*/
public static function getPdoBD()
{
if (PdoBD::$monPdoBD == null) {
PdoBD::$monPdoBD = new PdoBD();
}
return PdoBD::$monPdoBD;
}
/**
* Retourne les informations d'un centre de coordination
*/
public function getLesCasernes($leCentre)
{
$req = "SELECT cId, cNom, cAdresse, cTel, cGroupement
FROM caserne
WHERE cGroupement='" . $leCentre . "'
ORDER BY cNom;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture des casernes ..", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
/**
* Retourne les informations des pompiers
*/
public function getLesPompiers($cis)
{
$req = "SELECT pCis, pId, pNom, pPrenom, pStatut
FROM pompier
WHERE pCis=" . $cis . "
ORDER BY pNom;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture des pompiers ..", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
/**
* Retourne les informations d'un pompier sous la forme d'un tableau associatif
*/
public function getInfosPompier($login, $mdp)
{
$req = "SELECT pCis, pId as id, pNom as nom, pPrenom as prenom, pStatut, pMail, pLogin, pMdp, pGrade, pAdresse, pCp, pVille, pBip, pCommentaire,
'la caserne' as cNom, 'adresse' as cAdresse, 'telephone' as cTel, 'le groupement' as cGroupement, 'le grade' as wGrade, 'le statut' as wStatut, 'le type' as wType
FROM pompier";
if ($login === "*") {
$req .= " WHERE pCis=" . $_SESSION['cis'] . " AND pId = $mdp";
} else {
$req .= " WHERE pLogin='$login'
AND pMdp='$mdp'";
}
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture des informations d'un pompier...", $req, PdoBD::$monPdo->errorInfo());
}
$ligne = $rs->fetch();
return $ligne;
}
/**
* Met à jour l'activité d'un pompier sur une tranche
*/
public function majActivite($cis, $idUser, $jour, $tranche, $newDispo)
{
$existedTranche = 'SELECT aDisponibilite FROM `activite`
WHERE aCis = ' . $cis . ' AND aDateGarde = "' . $jour . '" AND aTranche = ' . $tranche . ' AND aPompier = ' . $idUser . ';';
$rs = PdoBD::$monPdo->query($existedTranche);
var_dump($rs);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la mise à jour de l'activité dans la base de donn&eacute;es.", $existedTranche, PdoBD::$monPdo->errorInfo());
} else {
if (count($rs->fetch()) !== 2) {
$req = 'INSERT INTO activite (aCis, aPompier, aDateGarde, aTranche, aDisponibilite, aGarde)
VALUES (' . $cis . ',
' . $idUser . ',
' . $jour . ',
' . $tranche . ',
' . $newDispo . ', 0);';
} else {
$req = 'UPDATE activite
SET aDisponibilite = ' . $newDispo . '
WHERE aCis = ' . $cis . '
AND aPompier = ' . $idUser . '
AND aDateGarde = "' . $jour . '"
AND aTranche = ' . $tranche . ';';
}
var_dump($req);
$rs = PdoBD::$monPdo->exec($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la mise à jour de l'activité dans la base de donn&eacute;es.", $existedTranche, PdoBD::$monPdo->errorInfo());
}
}
}
/**
* Met à jour la garde d'un pompier sur une tranche
*/
public function majGarde()
{
$req = "
";
$rs = PdoBD::$monPdo->exec($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la mise à jour de la garde dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
}
/**
* Met à jour une ligne de la table pompier
*/
public function majPompier($cis, $valeur, $nom, $prenom, $statut, $mail, $login, $mdp, $grade, $type, $adresse, $cp, $ville, $tel, $commentaire)
{
$req = "
;";
$rs = PdoBD::$monPdo->exec($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la mise à jour du pompier dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
}
/**
* supprime une ligne de la table pompier
*/
public function supprimePompier($cis, $valeur)
{
$req = "
;";
$rs = PdoBD::$monPdo->exec($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la suppression du pompier dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
}
/**
* ajoute une ligne dans la table pompier
*/
public function ajoutPompier($cis, $valeur, $nom, $prenom, $statut, $mail, $login, $mdp, $grade, $type, $adresse, $cp, $ville, $tel, $commentaire)
{
$req = "INSERT INTO pompier
(pCis,pId,pNom,pPrenom,pStatut,pMail,pLogin,pMdp,pGrade,pType, pAdresse,pCp,pVille,pBip,pCommentaire,pDateEnreg,pDateModif)
VALUES
(
);";
$rs = PdoBD::$monPdo->exec($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de l'insertion du pompier dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
}
/**
* Retourne les informations des gardes d'un pompier (ou des pompiers) sous la forme d'un tableau associatif
*/
public function getInfosGardes($pompier)
{
$req = "SELECT aPompier, DATE_FORMAT(aDateGarde,'%d/%m/%Y') as wDate, aTranche, pLibelle as tLibelle
FROM activite INNER JOIN parametre ON pType='tranche' AND aTranche=pIndice
WHERE aCis=" . $_SESSION['cis'];
if ($pompier <> "*") {
$req .= " AND aPompier=" . $pompier;
}
$req .= " AND aGarde=True
ORDER BY aPompier, aDateGarde DESC, aTranche ASC;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture des gardes d'un pompier...", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
/**
* Retourne les informations des disponibilites hebdomadaires d'un pompier sous la forme d'un tableau associatif
*/
public function getDisposHebdo($pompier, $semaine, $annee)
{
$premierJour = strtotime("+$semaine weeks", mktime(0, 0, 0, 1, 1, $annee)); //renvoie la date du lundi
if (date('w', $premierJour) != 1) {
$premierJour = strtotime("last monday", $premierJour);
}
$debut = date('Y/m/d', $premierJour);
$fin = date('Y/m/d', strtotime("6 days", $premierJour));
$req = "SELECT pId, pNom, pPrenom, DATE_FORMAT(aDateGarde,'%d/%m/%Y') as wDate, aTranche, aDisponibilite, aGarde, d.pValeur as dCouleur
FROM (activite INNER JOIN parametre t ON t.pType='tranche'AND aTranche=t.pIndice
INNER JOIN parametre d ON d.pType='dispo' AND aDisponibilite=d.pIndice)
RIGHT OUTER JOIN pompier ON aCis=pCis AND aPompier=pId
WHERE aCis=" . $_SESSION['cis'];
if ($pompier <> "*") {
$req .= " AND aPompier=" . $pompier;
}
$req .= " AND aDateGarde BETWEEN '" . $debut . "' AND '" . $fin . "'
AND aDisponibilite>0
ORDER BY aPompier, aDateGarde ASC, aTranche ASC;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture des gardes d'un pompier...", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
$lesDispos = array();
if ($pompier <> "*") {
for ($jour = 0; $jour <= 6; $jour++) {
$laDate = date('d/m/Y', strtotime('+' . $jour . ' day', $premierJour));
$lesDispos[$pompier][$laDate] = array(
'dPompier' => $pompier,
'dDate' => $laDate,
'd1' => 0,
'd2' => 0,
'd3' => 0,
'd4' => 0,
'g1' => 0,
'g2' => 0,
'g3' => 0,
'g4' => 0,
'c1' => 'gray',
'c2' => 'gray',
'c3' => 'gray',
'c4' => 'gray'
);
}
} else {
$req = "SELECT pCis, pId, pNom, pPrenom, pStatut
FROM pompier
WHERE pCis=" . $_SESSION['cis'] . "
ORDER BY pNom, pPrenom;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture des pompiers ..", $req, PdoBD::$monPdo->errorInfo());
}
$lesPompiers = $rs->fetchAll();
foreach ($lesPompiers as $unPompier) {
$pompier = $unPompier['pId'];
for ($jour = 0; $jour <= 6; $jour++) {
$laDate = date('d/m/Y', strtotime('+' . $jour . ' day', $premierJour));
$lesDispos[$pompier][$laDate] = array(
'dPompier' => $pompier,
'dDate' => $laDate,
'd1' => 0,
'd2' => 0,
'd3' => 0,
'd4' => 0,
'g1' => 0,
'g2' => 0,
'g3' => 0,
'g4' => 0,
'c1' => 'gray',
'c2' => 'gray',
'c3' => 'gray',
'c4' => 'gray'
);
}
}
}
foreach ($lesLignes as $uneLigne) {
$pompier = $uneLigne['pId'];
$laDate = $uneLigne['wDate'];
$dispo = "d" . $uneLigne['aTranche'];
$garde = "g" . $uneLigne['aTranche'];
$couleur = "c" . $uneLigne['aTranche'];
$lesDispos[$pompier][$laDate][$dispo] = $uneLigne['aDisponibilite'];
$lesDispos[$pompier][$laDate][$garde] = $uneLigne['aGarde'];
$lesDispos[$pompier][$laDate][$couleur] = $uneLigne['dCouleur'];
}
/* echo "<PRE>";
print_r($lesDispos);
echo "</PRE>";*/
return $lesDispos;
}
/**
* Retourne dans un tableau associatif les informations de la table tranche
*/
public function getLesTranches()
{
$req = "SELECT pIndice as tId, pLibelle as tLibelle
FROM parametre WHERE pType='tranche'
ORDER by 1;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la recherche des tranches dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
/**
* Retourne les informations de la table typeParametre
*/
public function getLesParametres()
{
$req = "SELECT tpId, tpLibelle, tpBooleen, tpChoixMultiple
FROM typeParametre
ORDER BY tpLibelle;";
$rs = PdoBD::$monPdo->query($req);
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
/**
* Retourne dans un tableau associatif les informations de la table PARAMETRE (pour un type particulier)
*/
public function getParametre($type)
{
$req = "SELECT pIndice, pLibelle, pValeur, pPlancher, pPlafond ";
if ($type == "typePer") {
$req .= ",(SELECT count(*) FROM parametre p INNER JOIN pompier on p.pIndice=pompier.pType WHERE p.pType='$type' AND p.pIndice=parametre.pIndice) as nb";
} elseif ($type == "statAgt") {
$req .= ",(SELECT count(*) FROM parametre p INNER JOIN pompier on p.pIndice=pompier.pStatut WHERE p.pType='$type' AND p.pIndice=parametre.pIndice) as nb";
} elseif ($type == "grade") {
$req .= ",(SELECT count(*) FROM parametre p INNER JOIN pompier on p.pIndice=pompier.pgrade WHERE p.pType='$type' AND p.pIndice=parametre.pIndice) as nb";
} else {
$req .= ", 0 as nb";
}
$req .= " FROM parametre
WHERE pType='$type'
ORDER by pIndice;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la recherche des parametres " . $type . " dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
/**
* Retourne dans un tableau associatifles informations de la table PARAMETRE (pour un type particulier)
*/
public function getInfosParam($type, $valeur)
{
if ($valeur == "NULL") {
$req = "SELECT pType, max(pIndice)+1 AS pIndice, ' ' AS pLibelle, tpLibelle
FROM parametre INNER JOIN typeParametre ON typeParametre.tpId=parametre.pType
WHERE pType='$type';";
} else {
$req = "SELECT pType, pIndice, pLibelle, tpLibelle, pPlancher, pPlafond
FROM parametre INNER JOIN typeParametre ON typeParametre.tpId=parametre.pType
WHERE pType='$type'
AND pIndice='$valeur';";
}
$rs = PdoBD::$monPdo->query($req);
$ligne = $rs->fetch();
return $ligne;
}
/**
* Met a jour une ligne de la table PARAMETRE
*/
public function majParametre($type, $valeur, $libelle, $plancher, $plafond)
{
$req = "UPDATE parametre SET pLibelle='$libelle', pPlancher='$plancher', pPlafond='$plafond'
WHERE pType='$type'
AND pIndice=$valeur;";
$rs = PdoBD::$monPdo->exec($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la modification d'un parametre dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
}
/**
* supprime une ligne de la table PARAMETRE
*/
public function supprimeParametre($type, $valeur)
{
$req = "DELETE
FROM parametre
WHERE pType='$type'
AND pIndice=$valeur;";
$rs = PdoBD::$monPdo->exec($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la suppression d'un parametre dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
}
/**
* ajoute une ligne dans la table PARAMETRE
*/
public function ajoutParametre($type, $valeur, $libelle, $plancher, $plafond)
{
$req = "INSERT INTO parametre
(pType, pIndice, pLibelle, pPlancher, pPlafond)
VALUES ('$type', $valeur, '$libelle', $plancher, $plafond);";
$rs = PdoBD::$monPdo->exec($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de l'insertion d'un parametre dans la base de donn&eacute;es.", $req, PdoBD::$monPdo->errorInfo());
}
}
/**
* envoyer un message electronique
*/
public function envoyerMail($mail, $sujet, $msg, $entete)
{
if (mail($mail, $sujet, $msg, null) == false) {
echo 'Suite à un problème technique, votre message n a pas été envoyé a ' . $mail . ' sujet' . $sujet . 'message ' . $msg . ' entete ' . $entete;
}
}
/**
* Retourne les informations d'une intervention
*/
public function getInfosIntervention($intervention)
{
$req = "SELECT iCis, iId, iLieu, iDescription, iDate , iTranche, iHeureDebut, iHeureFin
FROM intervention
WHERE iId=" . $intervention . ";";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture de l'intervention ...", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
/**
* Retourne les informations de toutes les interventions d'une caserne
*/
public function getLesInterventions($cis)
{
$req = "SELECT iCis, iId, iLieu, iDescription, iDate , iTranche, iHeureDebut, iHeureFin
FROM intervention
WHERE iCis=" . $cis . "
ORDER BY iId;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture des interventions de la caserne ...", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
/**
* Retourne les participants à une intervention
*/
public function getLesParticipants($cis, $intervention)
{
$req = "SELECT pId, pNom, pPrenom
FROM pompier INNER JOIN equipe ON pompier.pId=equipe.ePompier AND pompier.pCis=equipe.eCis
WHERE eIntervention=" . $intervention . "
AND eCis=" . $cis . "
ORDER BY pNom, pPrenom;";
$rs = PdoBD::$monPdo->query($req);
if ($rs === false) {
afficherErreurSQL("Probleme lors de la lecture des participants ..", $req, PdoBD::$monPdo->errorInfo());
}
$lesLignes = $rs->fetchAll();
return $lesLignes;
}
}
?>

206
include/fct.inc.php Normal file
View File

@ -0,0 +1,206 @@
<?php
/**
* Fonctions php pour l'application SDIS29
* @version 1.0 version MVC modifiee le 11 septembre par Blain Pascal
*/
/**
* Teste si un pompier est connecté (return vrai ou faux)
*/
function estConnecte(){
return isset($_SESSION['idUtilisateur']);
}
/**
* Enregistre dans des variables de session les informations d'un pompier
*/
function connecter($cis, $id, $nom, $prenom, $statut, $a1, $a2, $a3, $a4){
$_SESSION['cis'] = $cis; //Caserne
$_SESSION['idUtilisateur'] = $id; //ID pompier
$_SESSION['nom'] = $nom; //Nom
$_SESSION['prenom'] = $prenom; //Prénom
$_SESSION['statut'] = $statut; //Statut
$_SESSION['adr1'] = $a1; //Nom caserne
$_SESSION['adr2'] = $a2; //Adresse Caserne
$_SESSION['adr3'] = $a3; //groupement caserne
$_SESSION['adr4'] = $a4; //Tel caserne
}
/**
* Detruit la session active
*/
function deconnecter(){
session_destroy();
}
/**
* Transforme une date au format français jj/mm/aaaa vers le format anglais aaaa-mm-jj
* @param $madate au format jj/mm/aaaa
* @return la date au format anglais aaaa-mm-jj
*/
function dateFrancaisVersAnglais($maDate){
if(estDateValide($maDate)== true)
{
@list($jour,$mois,$annee) = explode('/',$maDate);
return date('Y-m-d',mktime(0,0,0,$mois,$jour,$annee));
}
else
{
return null;
}
}
/**
* Transforme une date au format format anglais aaaa-mm-jj vers le format français jj/mm/aaaa
* @param $madate au format aaaa-mm-jj
* @return la date au format format français jj/mm/aaaa
*/
function dateAnglaisVersFrancais($maDate)
{
@list($annee,$mois,$jour)=explode('-',$maDate);
$date="$jour"."/".$mois."/".$annee;
return $date;
}
/**
* retourne le mois au format aaaamm selon le jour dans le mois
* @param $date au format jj/mm/aaaa
* @return le mois au format aaaamm
*/
function getMois($date){
@list($jour,$mois,$annee) = explode('/',$date);
if(strlen($mois) == 1){
$mois = "0".$mois;
}
return $annee.$mois;
}
/**
* retourne la date en texte
*/
function dateTexte($laDate){
$NomDuJour = array ("Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi");
$NomDuMois = array ("janvier", "f&eacute;vrier", "mars", "avril", "mai", "juin", "juillet", "ao&ucirc;t", "septembre", "octobre", "novembre", "d&eacute;cembre");
$lejour = date("j",$laDate);
$lemois = $NomDuMois[date("n",$laDate)-1];
$dateTexte=$NomDuJour[date("w",$laDate)]." ";
if($lejour==01){$dateTexte.=' 1er '; }
else {$dateTexte.=$lejour.' ';}
$dateTexte.=$lemois.' '.date('Y', $laDate);
return $dateTexte;
}
/**
* retourne le mois en texte
*/
function moisTexte($mois){
$tabMois = array( '01' => "Janvier",
'02' => "F&eacute;vrier",
'03' => "Mars",
'04' => "Avril",
'05' => "Mai",
'06' => "Juin",
'07' => "Juillet",
'08' => "Ao&ucirc;t",
'09' => "Septembre",
'10' => "Octobre",
'11' => "Novembre",
'12' => "D&eacute;cembre");
return $tabMois[$mois];
}
/* gestion des erreurs*/
/**
* Indique si une valeur est un entier positif ou nul
* @param $valeur
* @return vrai ou faux
*/
function estEntierPositif($valeur)
{
return preg_match("/[^0-9]/", $valeur) == 0;
}
/**
* Indique si un tableau de valeurs est constitué d'entiers positifs ou nuls
* @param $tabEntiers : le tableau
* @return vrai ou faux
*/
function estTableauEntiers($tabEntiers)
{
$ok = true;
foreach($tabEntiers as $unEntier)
{
if(!estEntierPositif($unEntier)){$ok=false;}
}
return $ok;
}
/**
* Vérifie si une date est inférieure d'un an à la date actuelle
* @param $dateTestee
* @return vrai ou faux
*/
function estDateDepassee($dateTestee)
{
$dateActuelle=date("d/m/Y");
@list($jour,$mois,$annee) = explode('/',$dateActuelle);
$annee--;
$AnPasse = $annee.$mois.$jour;
@list($jourTeste,$moisTeste,$anneeTeste) = explode('/',$dateTestee);
return ($anneeTeste.$moisTeste.$jourTeste < $AnPasse);
}
/**
* Vérifie la validité du format d'une date française jj/mm/aaaa
* @param $date
* @return vrai ou faux
*/
function estDateValide($date){
$tabDate = explode('/',$date);
$dateOK = true;
if (count($tabDate) != 3) {
$dateOK = false;
}
else {
if (!estTableauEntiers($tabDate)) {
$dateOK = false;
}
else {
if (!checkdate($tabDate[1], $tabDate[0], $tabDate[2])) {
$dateOK = false;
}
}
}
return $dateOK;
}
/**
* Ajoute le libelle d'une erreur au tableau des erreurs
* @param $msg : le libellé de l'erreur
*/
function ajouterErreur($msg){
if (! isset($_REQUEST['erreurs'])){
$_REQUEST['erreurs']=array();
}
$_REQUEST['erreurs'][]=$msg;
}
/**
* Retoune le nombre de lignes du tableau des erreurs
* @return le nombre d'erreurs
*/
function nbErreurs(){
if (!isset($_REQUEST['erreurs'])){
return 0;
}
else{
return count($_REQUEST['erreurs']);
}
}
/** afficherErreurSQL :
Affichage de messages lors l'accès &agrave; la bdd avec une requete SQL
@param $message : message a afficher
@param $req : requete executee
@param $info : erreur constatee
*/
function afficherErreurSQL($message, $req, $info) {
echo $message . "<br />";
echo "Requete : " . $req . "<br />";
echo "Code erreur : " . $info[0] . ", Message : " . $info[2];
die();
}
?>

312
include/proceduresJava.js Normal file
View File

@ -0,0 +1,312 @@
// proceduresJava.js / version modifiée le 18/09/2023 par Pascal Blain
var ongletActif=1;
// ========================= passer le focus à un champ
function donner_focus(frm,champ) {
document.forms[frm].elements[champ].focus();
}
// ========================= fonction gestion de la fenetre de saisie d'une disponibilité
function majDispo(laDate, laTranche, exDispo) {
document.getElementById("ztJour").innerHTML = laDate;
document.getElementById("brDispo" + exDispo).checked=true;
document.forms["frmActivites"].ztLaDate.value = laDate.substring(6) + "/" + laDate.substring(3,5) + "/" + laDate.substring(0,2);
document.forms["frmActivites"].ztLaTranche.value= laTranche;
document.forms["frmActivites"].ztExDispo.value = exDispo;
location.href="#fenetreDispo";
}
// ========================= fonction gestion des gardes
function majGarde(laDate, laTranche, laGarde, lePompier) {
document.forms["frmDispos"].ztLaDate.value = laDate.substring(6) + "/" + laDate.substring(3,5) + "/" + laDate.substring(0,2);
document.forms["frmDispos"].ztLaTranche.value = laTranche;
document.forms["frmDispos"].ztExGarde.value = laGarde;
document.forms["frmDispos"].ztPompier.value = lePompier;
document.forms["frmDispos"].action = "index.php?choixTraitement=gardes&action=majGarde";
document.forms["frmDispos"].submit();
}
// ========================= fonction de navigation dans le calendrier des dispos
function autreSemaine(semaine, annee) {
document.forms["frmDispos"].zSemaine.value = semaine;
document.forms["frmDispos"].zAnnee.value = annee;
document.forms["frmDispos"].submit();
}
// ========================= fonctions de navigation dans la liste de choix
function premier(frm, liste) {
document.forms[frm].elements[liste].value = document.forms[frm].elements[liste].options[0].value;
document.forms[frm].submit();
}
function precedent(frm, liste) {
document.forms[frm].elements[liste].value = document.forms[frm].elements[liste].options[Math.max(0,document.forms[frm].elements[liste].selectedIndex-1)].value;
document.forms[frm].submit();
}
function suivant(frm, liste) {
document.forms[frm].elements[liste].value = document.forms[frm].elements[liste].options[(Math.min((document.forms[frm].elements[liste].options.length-1),document.forms[frm].elements[liste].selectedIndex+1))].value;
document.forms[frm].submit();
}
function dernier(frm, liste) {
document.forms[frm].elements[liste].value = document.forms[frm].elements[liste].options[(document.forms[frm].elements[liste].options.length-1)].value;
document.forms[frm].submit();
}
// =========================
function faire(frm, action) {
document.forms[frm].action.value = action;
if(action=="supprimer") {alert("ATTENTION : \n demande de suppression \n cette action est irreversible !");}
document.forms[frm].submit();
}
// =========================
function validerAutre(frm, ordreAc, ordreCe, onglet)
{
document.getElementById("zOrdreAc").value=ordreAc;
document.getElementById("zOrdreCe").value=ordreCe;
document.getElementById("zOnglet").value=onglet;
document.forms[frm].submit();
}
// =========================
function voirListe(type, indice, colonne)
{
document.forms["choixP"].zType.value=type;
document.forms["choixP"].zIndice.value=indice;
document.forms["choixP"].zColonne.value=colonne;
document.forms["choixP"].action.value = "liste";
document.forms["choixP"].submit();
}
// ========================= fonction annulation de saisie ou modification
function annuler(frm){
document.forms[frm].elements["zOk"].value="nonOk";
document.forms[frm].submit();
}
// ========================= validation des données d'un usager (version 2)
function validerUsager(frm)
{ //var champ=frm.elements["ztNom"];
if(!verifTexte(frm, frm.elements["ztNom"], 40)) {return false;}
else {if(!verifTexte(frm, frm.elements["ztPrenom"], 24)) {return false;}
else {if(!verifMail(frm, frm.elements["ztEMail"])) {return false;}
else {return true;}
}
}
}
// =========================
function verifMail(frm, champ)
{
var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
if(regex.test(champ.value) || champ.value.length<1)
{surligne(champ, false); return true;}
else
{surligne(champ, true); return false;}
}
// ========================= fonctions de controle de validité d'un champ
function surligne(frm, champ, erreur)
{
if(erreur)
{champ.style.backgroundColor = "#f55"; alert("Champ '"+champ.id+"' incorrect ...\nMerci de corriger"); document.getElementById(champ.id).focus(); frm.elements["zOk"].value="nonOk";}
else
{champ.style.backgroundColor = "#fff"; frm.elements["zOk"].value="OK";}
}
// ========================= fonctions de controle de validité d'un champ texte (longueur)
function verifTexte(frm, champ,longueur)
{
if(champ.value.length < 2 || champ.value.length > longueur)
{surligne(frm, champ, true); return false;}
else
{surligne(frm, champ, false); return true;}
}
// ========================= fonctions de controle de validité du code postal
function verifCP(frm, champ)
{ var str = champ.value;
var insee = str.substring(0,5);
var dep = str.substring(0,2);
var cPostal = str.substring(6,11);
var secteur= str.substring(12,16);
var ville = str.substring(17,57);
var cp = parseInt(cPostal);
if(isNaN(cp) || cp < 1000 || cp > 99999) {surligne(frm, champ, true); alert(cp); return false;} //
else { surligne(frm, champ, false);
frm.elements["ztCP"].value =cPostal;
frm.elements["ztVille"].value =ville;
frm.elements["ztCommune"].value =insee;
frm.elements["departement"].value =dep;
if(frm.name="frmUsager")
{
for (var i=0;i<frm.elements["ldrSecteur"].length;i++)
{
if(frm.elements["ldrSecteur"].options[i].value==secteur) {frm.elements["ldrSecteur"].selectedIndex=i; i=9999;}
}
}
return true;}
}
// ========================= fonctions de controle de validité d'une date
function verifDate(laDate)
{
var ok=true;
var d=laDate.value;
laDate.style.backgroundColor="#fff";
if(d != null && d != "")
{
var amini=1900; // année mini
var amax=2030; // année maxi
var separateur="/"; // séparateur entre jour/mois/annee
var j=(d.substring(0,2));
var m=(d.substring(3,5));
var a=(d.substring(6));
if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {alert(j+" n'est pas un jour correct..."); laDate.style.backgroundColor="#f55"; ok=false;}
if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {alert(m+" n'est pas un mois correct ..."); laDate.style.backgroundColor="#f55"; ok=false;}
if ( ((isNaN(a))||(a<amini)||(a>amax)) && (ok==1) ) {alert(a+" n'est pas une année correcte: utiliser 4 chiffres, \n elle doit être comprise entre "+amini+" et "+amax); laDate.style.backgroundColor="#f55"; ok=false;}
if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) {alert("Les séparateurs doivent être des "+separateur); laDate.style.backgroundColor="#f55"; ok=false;}
if (ok==true) {
var d2=new Date(a,m-1,j);
j2=d2.getDate();
m2=d2.getMonth()+1;
a2=d2.getFullYear();
if (a2<=100) {a2=1900+a2}
if ( (j!=j2)||(m!=m2)||(a!=a2) ) {alert("La date "+d+" n'existe pas !"); laDate.style.backgroundColor="#f55"; ok=false;}
}
}
return ok;
}
// ========================= formate un nombre avec 2 chiffres après la virgule et un espace separateur de milliers
function format_euro(valeur) {
var ndecimal=2;
var separateur=' ';
var deci=Math.round( Math.pow(10,ndecimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ;
var val=Math.floor(Math.abs(valeur));
if ((ndecimal==0)||(deci==Math.pow(10,ndecimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
var val_format=val+"";
var nb=val_format.length;
for (var i=1;i<4;i++)
{
if (val>=Math.pow(10,(3*i)))
{
val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
}
}
if (ndecimal>0)
{
var decim="";
for (var j=0;j<(ndecimal-deci.toString().length);j++) {decim+="0";}
deci=decim+deci.toString();
val_format=val_format+","+deci;
}
if (parseFloat(valeur)<0) {val_format="-"+val_format;}
return val_format;
}
// ========================= affiche l'onglet choisi
function Affiche(ongletChoisi, nb)
{
for(i=1;i<nb+1;i++)
{
document.getElementById('onglet'+i).className = 'inactif onglet';
document.getElementById('contenuOnglet'+i).style.display = 'none';
}
document.getElementById('onglet'+ongletChoisi).className = 'actif onglet';
document.getElementById('contenuOnglet'+ongletChoisi).style.display = 'block';
document.getElementById('zOnglet').value=ongletChoisi;
document.getElementById('zNbOnglets').value=nb;
ongletActif=ongletChoisi;
}
// ========================= transfert des données d'une liste à une autre
function deplacer_elements(frm, origine, destination) {
if (origine.options.selectedIndex >= 0)
{
while (origine.options.selectedIndex >= 0) /* boucle tant qu'il reste des éléments sélectionnés */
{
valeur = origine.options[origine.options.selectedIndex].value; /* valeur de l'élément sélectionné */
texte = origine.options[origine.options.selectedIndex].text; /* texte de l'élément sélectionné */
origine.options[origine.options.selectedIndex] = null; /* suppression de l'element selectione dans la liste d'origine */
destination.options[destination.options.length] = new Option(texte, valeur);/* ajout dans la liste destination */
}
var nbElements=destination.length;
var tbl = new Array(nbElements, 2)
for(ligne=0;ligne<nbElements;ligne++){
tbl[ligne] = new Array(destination.options[ligne].text, destination.options[ligne].value);
}
tbl.sort(triAlpha);
destination.options.length=0; /* efface la liste */
for(ligne=0;ligne<nbElements;ligne++){
destination.options[destination.options.length]=new Option(tbl[ligne][0],tbl[ligne][1]); //rempli la liste avec les données triées
}
}
else
alert("choisissez au moins un participant !");
return(false);
}
// =========================
function triAlpha(a,b) {
a = a[0];
b = b[0];
return a == b ? 0 : (a < b ? -1 : 1)
}
// =========================
function tester(frm, liste) {
var nbElements=liste.length;
var tbl = new Array(nbElements, 2)
for(ligne=0;ligne<nbElements;ligne++){
tbl[ligne] = new Array(liste.options[ligne].text, liste.options[ligne].value);
//alert("Valeur : " + tbl[ligne][1] + " Texte :" + tbl[ligne][0]);
}
tbl.sort(triAlpha);
liste.options.length=0; //efface la liste
for(ligne=0;ligne<nbElements;ligne++){
liste.options[liste.options.length]=new Option(tbl[ligne][0],tbl[ligne][1]); //rempli la liste avec les données triees
// alert("Valeur : " + tbl[element,1] + " libellé : " + tbl[element,0]);
}
result = tbl.join('\n');
alert(result);
return (false);
}
// =========================trouver un code postal en france, ou une commune
// parametres d'entrée : (L'un des 2 champs ne doit pas être vide. Sinon, c'est Paris qui est pris par défaut.)
// - codePostal : l'ID du champs contenant le code postal
// - ville : l'ID du champs contenant le nom de la commune
function openCodesPostaux(codePostal, ville){
leCodePostal = document.getElementById(codePostal).value;
laVille = document.getElementById(ville).value;
if(laVille == ""){ laVille = leCodePostal;}
window.open( 'http://www.codes-postaux.org/outils/module.php?Choix=' + escape(laVille) ,'CodePostal','scrollbars=yes, width=300, height=550');
}
/**
* Gere l'ajout des dispo pour un pompier
*/
$(document).on('click', '.select-dispo', function () {
//console.log($(this).css('background-color'))
dateDispo = $(this).attr('id').split('/')[0]
tranche = $(this).attr('id').split('/')[1]
dispo = 1;
if ($(this).css('background-color') == "rgb(255, 0, 0)") { //rgb(255, 0, 0) = red
$(this).css('background-color', 'green');
dispo = 2;
} else if ($(this).css('background-color') == 'rgb(0, 128, 0)') { //rgb(0, 128, 0) = green
$(this).css('background-color', 'yellow');
dispo = 3;
} else {
$(this).css('background-color', 'red');
dispo = 1;
}
var tableauDeDonnees = {
"date" : dateDispo,
"tranche" : tranche,
"dispo" : dispo
}
$.ajax({
url: "/controleurs/c_disponibilitée.php", // URL de l'API ou de la ressource
method: "POST", // Méthode HTTP (GET, POST, etc.)
dataType: "json", // Type de données attendu
data : tableauDeDonnees,
error: function(xhr, status, error) {
// Gérer les erreurs de la requête AJAX
console.error("Erreur lors de la requête AJAX :", status, error);
}
});
})

36
index.php Normal file
View File

@ -0,0 +1,36 @@
<?php
session_start();
// ****************************************'
// Le CASTEL-BTS SIO/ PROJET SDIS29 '
// Programme: index.php '
// Objet : page principale '
// Client : Bts SIO2 '
// Version : 2023 '
// Date : 18 septembre 2023 à 12h00 '
// Auteur : pascal-blain@wanadoo.fr '
//*****************************************'
require_once("include/fct.inc.php");
require_once ("include/class.pdo.php");
$pdo = PdoBD::getPdoBD();
$estConnecte = estConnecte();
// on vérifie que le pompier est authentifié
if(!isset($_REQUEST['choixTraitement']) || !$estConnecte){$_REQUEST['choixTraitement'] = 'connexion';}
// on analyse le cas d'utilisation en cours ...
$choixTraitement= $_REQUEST['choixTraitement'];
switch($choixTraitement)
{
case 'connexion': {include("controleurs/c_connexion.php");break;} //Connecte le pompier {DONE}
case 'parametres': {include("controleurs/c_param.php");break;} //Page paramètre {TODO} 3
case 'gardes' : {include("controleurs/c_gardes.php");break;} //Page garde {TODO} 2
case 'interventions': {include("controleurs/c_interventions.php");break;} //Page intervention {NOT TODAY}
case 'pompiers' : {include("controleurs/c_pompiers.php");break;} //Page pompiers {TODO} 1
default :{echo 'erreur d\'aiguillage !'.$uc;break;}
}
include("vues/v_pied.php") ;
var_dump($_SESSION);
?>

638
styles/styles.css Normal file
View File

@ -0,0 +1,638 @@
/* Styles des divisions principales de la page */
#navigation {
position: relative;
float: right;
top : -2.75em;
right: 2em;
padding: 0em;
color: rgb(0,85,227);
}
#sommaire {
float: right;
margin-top : 20px;
margin-right: -20px;
padding: 0em;
color: rgb(0,85,227);
}
#sommaire ul {
padding:0;
margin:0;
list-style-type:none;
}
#sommaire li
{
vertical-align: middle;
margin-left:2px;
float:left; /*pour IE*/
}
#sommaire ul li a
{
vertical-align: middle;
display:block;
float:left;
width:80px;
text-decoration:none;
text-align:center;
/*background-color:#6495ED;
color:black;
//padding:5px;
border-width:2px;
border-style:solid;
border-color:#DCDCDC #696969 #696969 #DCDCDC; /*pour avoir un effet "outset" avec IE */
}
#sommaire ul li a:hover
{
color: purple; /*rgb(0,85,227);*/
font-size: 16px;
/*background-color:#D3D3D3;
border-color: #696969 #DCDCDC #DCDCDC #696969; */
}
#sommaire ul li ul {
display:none;
}
#sommaire ul li:hover ul {
display:block;
}
#sommaire li:hover ul li {
float:none;
}
#sommaire li ul {
position:absolute;
}
#stats {
position: absolute;
top: 1em;
left: 0.5em;
background-color: #ffff00;
font-size:0.75em;
}
body{
background-color: #77AADD;
/* //background-image: url(imgs/FONDGLOBAL.jpg); */
background-repeat: repeat-x;
margin:0% 0%;
padding : 0.6em;
font-family:"Trebuchet MS",Verdana,Geneva,Arial,Helvetica,sans-serif;
font-size:0.8em;
}
#page {
background-color:white;
width : 65%;
margin : auto ;
border : 0.2em solid black;
padding : 0.1em;
}
#entete{
background-color:rgb(72,198,236);
color : #980101;
border: solid 0.1em #980101;
height: 100px;
padding: 0em;
border-collapse: separate;
}
#pied{
clear : both;
border : solid 0.2em #980101;
margin-left : 18%;
margin-top : 1em;
padding:0.4em;
padding: 0.2em;
border-collapse: separate;
}
#menu{
position: relative;
float:right;
right: 0px;
margin-top : -240px;
margin-left: -10px;
padding: 0em;
background-color:transparent;
color: rgb(0,85,227);
width: 80px;
}
#contenu{
border: none;
padding: 1.1em;
background-color: white;
border-left : groove 0.8em #980101;
margin-top : 1.1em;
margin-left: 82px; /*162px; /*18%; */
/* permet de fixer une hauteur mini sur les navigateurs modernes */
min-height:27em;
/* pour obtenir le même effet sur IE, sachant que si le contenu dépasse, il "poussera" la hauteur en ne respectant pas la norme. On se joue de ses lacunes */
height:27em;
}
/* pour rétablir le mauvais effet sur les nav. modernes */
html>body #contenu{
height:auto;
}
/* style à appliquer à la balise ul d'identifiant menulist */
ul#menuList{
list-style:none;
margin:0px;
padding:0px;
width:98%;
font-size: 1em;
}
/* style à appliquer aux éléments de la balise ul d'identifiant menulist */
ul#menuList li {
position:relative;
margin:0px;
padding:0px;
}
/* apparences des liens dans listes et sous-listes non numérotées */
ul#menuList a {
color:rgb(0,85,227);
display:block;
text-decoration:none;
width:100%;
}
ul#menuList a:hover {
background: rgb(0,85,227);
color: white;
}
#entete #logo {
float : left;
width : 74px;
height : 100px;
}
#entete h1 {
margin-top : 50px;
margin-right: 20px;
font-size : x-large;
text-align: right;
}
#contenu pre {
width:95%;
overflow : scroll;
}
#contenu h2 {
font-size : large;
text-align:left;
margin:0;
margin-bottom:0.5em;
}
.logoValidW3c {
display: inline;
}
#libValidW3c{
display : inline;
vertical-align:middle;
}
/* Style des formulaires */
.corpsForm {
border : solid 0.1em #000;
border-bottom-width:1px;
margin-bottom : 0em;
width : 95%;
}
.piedForm {
border-bottom-width : 0.1em;
border-left-width : 0.1em;
border-right-width : 0.1em;
border-top-width : 0em;
border-style : solid;
border-color : #000;
text-align:right ;
width : 95%;
margin-top:0em;
}
form {
margin-bottom:1em;
}
.corpsForm legend {
font-weight:bold;
font-size:1.2em;
}
.corpsForm label{
float: left;
text-align:right;
width:33%;
margin: 0;
padding: 0 .5em 0 0;
line-height: 1.8;
}
input, button, textarea, select{
font-family:"Trebuchet MS", sans-serif;
font-size : 1em;
}
input:focus{
background-color: #ECB2E4;
}
button{
width : 60px;
height : 30px;
text-align:center;
vertical-align:middle;
}
input:hover, textarea:hover, select:hover{
background-color : #FAFAE6;
cursor : pointer;
}
.controle {
width:75px;
}
.controleLong {
width:195px;
}
.stNb {
width:40px;
text-align:center;
}
.stNb a:link {
color: red;
}
.stTitre {
width:40px;
text-align:center;
font-weight: bold;
}
.stTitre2 {
width:80px;
text-align:center;
font-weight: bold;
}
/* Le texte des messages d'erreur est de couleur rose sur fond ocre et de
taille de caractères légèrement supérieure à la normale */
.erreur{
background-color:rgb(237,210,229);
color:rgb(203,28,128);
font-size:1.1em;
margin-left:200px;
width:75%;
}
.centre {
text-align:center;
}
.info {
background-color:rgb(178,207,81);
color : white;
font-size:1.1em;
width : 95%
}
.encadre {
border : solid 0.1em #000;
width : 100%;
}
/* Style pour les liens de la page principale */
#contenu .corpsTexte {
width:80%;
font-size:1.2em;
}
/* Style pour les liens de la page principale */
#contenu a {
font-size : 1.1em;
color:gray;
text-decoration:none;
}
#contenu a:hover {
text-decoration:underline;
background-color : #D9BB7A;
font-size : 1em;
}
/* Style pour les parties importantes de la page principale */
#contenu strong {
font-weight:bold;
}
/* Styles pour les tableaux de la page principale */
#contenu table {
background-color:#FFF;
border : 0.1em solid #777777;
color:black;
margin-right : auto ;
margin-left:0.2em;
border-collapse : collapse;
}
/* Style pour les lignes d'en-tête des tableaux */
#contenu th {
background-color:#E9F1FE;
/* //bleu clair ou bleu plus soutenu : #77AADD; */
width: 130px;
height: 21px;
/* //text-align: left; */
vertical-align:top;
/*font-weight:bold;*/
border-bottom:0.1em solid #777777;
/* //font-size:1.1em; */
}
#contenu td {
border :1px solid #777777;
/* //font-size:1.1em; */
}
#contenu h3 {
font-size : 1.2em;
}
table{
width:100%;
border-collapse:collapse;
}
fieldset{
border-radius : 12px;
border:2px solid ;
border-color: purple;
}
legend{
font-size: 20px;
}
table.listeLegere {
margin-bottom : 0.3em;
}
table.stats {
width: 80px;
/* //150px; */
border-collapse:collapse;
}
table.stats th {
border : dotted rgb(178,207,81) 0.1em;
background-color:#E9F1FE;
/* //bleu clair */
padding: 0em;
text-align: center;
vertical-align : top;
witdh: 33%;
}
table.stats td {
border : dotted rgb(178,207,81) 0.1em;
padding: 0em;
text-align: center;
vertical-align : top;
witdh: 33%;
}
/* Tableaux quadrillés utilisés pour l'affichage de listes avec contenu léger*/
table.listeLegere th, table.listeLegere td {
border : dotted rgb(178,207,81) 0.1em;
padding:0.2em;
vertical-align : top;
}
table.listeLegere caption {
font-size : 1.1em;
text-align : left;
margin-bottom : 0.2em;
}
table.listeLegere td {
width: 100px;
vertical-align:top;
font-weight:normal;
}
#contenu h2 {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 14px;
font-weight: bold;
color: #1D2941;
text-decoration: none;
border : 1px solid #6988BE;
padding-left: 25px;
background-color: #E9F1FE;
height : 28px;
}
#contenu img {
height : 21px;
border-style: none;
float : left;
}
#contenu li img:hover {
height : 26px;
}
.lesOnglets
{
margin: 0;
padding:0 0 0 5px;
}
.unOnglet
{
background-color:white;
margin-top:-1px;
padding:5px;
display:none;
border:1px solid #AAA;
border-radius:4px;
-webkit-border-radius:4px;
-moz-border-radius:4px;
color:#555;
cursor: text;
}
.onglet
{
display:inline-block;
margin:5px 2px 0 2px;
padding:5px 10px ;
border:1px solid #AAA;
border-bottom:none;
border-radius:5px 5px 0 0;
-webkit-border-radius:4px 4px 0 0;
-moz-border-radius:4px 4px 0 0;
color:#555;
cursor: pointer;
font-weight:bold;
}
.inactif
{
background:#EEE;
}
.inactif:hover
{
background:#AAA;
}
.actif
{
background:white;
border-bottom:2px solid white;
padding-bottom:4px;
cursor:text;
}
.fdroite {
display: inline-block;
border-bottom: 7px solid #FFFFFF;
border-top: 7px solid #FFFFFF;
border-left: 10px solid #9743CC;
}
.fbas {
display: inline-block;
border-left: 7px solid #FFFFFF;
border-right: 7px solid #FFFFFF;
border-top: 10px solid #AABBCC;
}
.fgauche {
display: inline-block;
border-bottom: 7px solid #FFFFFF;
border-right: 10px solid #9743CC;
border-top: 7px solid #FFFFFF;
}
.fhaut {
display: inline-block;
border-bottom: 10px solid #AABBCC;
border-left: 7px solid #FFFFFF;
border-right: 7px solid #FFFFFF;
}
.boite {
border: 1px solid #ddd;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
background-color: #ffffff;
padding: 10px;
}
.boite input[type="text"] {
height: 16px;
line-height: 16px;
}
.boite form {
margin: 0px;
}
#tableau th.semaine {
color: #666666;
text-align : center;
vertical-align: middle;
background-color: #fafae0;
}
#tableau td.semaine {
background-color: #000080;
height: 30px;
text-align: center;
vertical-align: middle;
font-size: 12px;
}
#tableau td.weekend {
background-color: #e4e8eb;
height: 30px;
text-align: center;
vertical-align: middle;
font-size: 12px;
}
#tableau td.today {
background-color: #ffe9e5;
color: #000080;
}
.tableau {
background-color: #ebeff2;
border-color: #3DA9C9;
border-width: 1px;
border-style: solid;
border-collapse: separate;
border-spacing: 1px;
text-align: center;
vertical-align: middle;
}
.tableau th {
font-size: 10px;
background-color: #3DA9C9;
color: #000080;
font-weight: bold;
padding: 0px 0px 0px 0px;
text-align: center;
vertical-align: middle;
border-collapse: separate;
border-style: solid;
border-width: 1px;
border-color: gray;
}
.tableau th div {
width: 25px;
}
.tableau td {
text-align: center;
vertical-align: middle;
font-size: 12px;
padding: 1px;
margin: 1px;
border-spacing: 2px;
border-color: gray;
}
.tableau td.semaine {
background-color: #ffffff;
height: 30px;
text-align: center;
font-size: 10px;
width: 25px;
vertical-align: middle;
}
.tableau td.weekend {
background-color: #e4e8eb;
height: 30px;
text-align: center;
font-size: 10px;
width: 25px;
vertical-align: middle;
}
.tableau th.today {
background-color: #F98F7D;
color: #000080;
}
.tableau td.today {
background-color: #ffe9e5;
color: #000080;
}
#pompiers{
background-color: #ebeff2;
border-color: #3DA9C9;
border-width: 1px;
font-size: 12px;
border-style: solid;
width: 100%;
border-collapse: separate;
border-spacing: 1px;
}
#pompiers th {
background-color: #3DA9C9;
color: #000080;
font-size: 12px;
font-weight: bold;
padding: 0px 0px 0px 0px;
vertical-align: middle;
}
.select-dispo{
cursor: pointer;
}

41
vues/v_choixCaserne.php Normal file
View File

@ -0,0 +1,41 @@
<!-- choix d'une Caserne / Derniere modification le 23 mai 2019 par Pascal Blain -->
<?php
$nbA=count($lesCasernes);
echo '
<div id="contenu">
<form name="choixC" action="index.php" method="post">
<h2>'.$titre; ?>
<select name="lstCasernes" STYLE="width:350px;" onchange="submit();">
<?php
if (!isset($_REQUEST['lstCasernes'])) {$choix = 'premier';} else {$choix =$_REQUEST['lstCasernes'];}
$i=1;
foreach ($lesCasernes as $uneCaserne)
{
if($uneCaserne['cId'] == $choix or $choix == 'premier')
{echo "<option selected value=\"".$uneCaserne['cId']."\">".$uneCaserne['cNom']." ".$uneCaserne['cAdresse'].")</option>\n ";
$choix = $uneCaserne['cId'];
$noA=$i;}
else
{echo "<option value=\"".$uneCaserne['cId']."\">".$uneCaserne['cNom']." ".$uneCaserne['cAdresse'].")</option>\n ";
$i=$i+1;}
}
echo '
</select>
</h2>
<input type="hidden" name="choixTraitement" value="interventions">
<input type="hidden" name="action" value="'.$_REQUEST['action'].'">';
?>
<!-- ============================================================== navigation dans la liste -->
<div id='navigation'>
<input type="image" id="zNouveau" title="Ajouter une Intervention" src="images/ajout.gif" onclick="ajouter('choixC')">
<input type="image" id="zModif" title="Modifier une Intervention" src="images/modif.gif" onclick="modifier('choixC')">
<input type="image" id="zSupprime" title="Supprimer une Intervention" src="images/supprimer.gif" onclick="supprimer('choixC')">&nbsp;&nbsp;
<input type="image" id="zPremier" title="premier" src="images/goPremier.gif" onclick="premier('choixC','lstCasernes')">
<input type="image" id="zPrecedent" title="pr&eacute;c&eacute;dent" src="images/goPrecedent.gif" onclick="precedent('choixC','lstCasernes')">
<?php echo ' <input type="text" id="zNumero" value="'.$noA.'/'.$nbA.'" disabled="true" size="5" style="text-align:center;vertical-align:top;">'; ?>
<input type="image" id="zSuivant" title="suivant" src="images/goSuivant.gif" onclick="suivant('choixC','lstCasernes')">
<input type="image" id="zDernier" title="dernier" src="images/goDernier.gif" onclick="dernier('choixC','lstCasernes')">
</div>
</form>
<!-- fin liste de choix -->

44
vues/v_choixParam.php Normal file
View File

@ -0,0 +1,44 @@
<!-- choix d'un parametre / Derniere modification le 18 septembre 2023 par Pascal Blain -->
<?php
$nbP=count($lesParametres);
echo '
<div id="contenu">
<form name="choixP" action="index.php?choixTraitement=parametres&action=voir" method="post">
<h2>' ?>
<select name="lstParam" STYLE="width:350px;" onchange="submit();">
<?php
if (!isset($_REQUEST['lstParam'])) {$choix = 'premier';} else {$choix =$_REQUEST['lstParam'];}
$i=1;
foreach ($lesParametres as $unParametre)
{
if($unParametre['tpId'] == $choix or $choix == 'premier')
{echo "<option selected value=\"".$unParametre['tpId']."\">".$unParametre['tpLibelle']."</option>\n ";
$choix = $unParametre['tpId'];
$titre1= $unParametre['tpLibelle'];
$noP=$i;
}
else
{echo "<option value=\"".$unParametre['tpId']."\">".$unParametre['tpLibelle']."</option>\n ";
$i=$i+1;}
}
if ($_REQUEST['action']<>"liste") {$action = $_REQUEST['action'];} else {$action = "voir";}
echo '
</select></h2>
<input type="hidden" name="uc" value="param">
<input type="hidden" name="action" value="'.$action.'">
<input type="hidden" name="zType" value="*">
<input type="hidden" name="zIndice" value="0">
<input type="hidden" name="zColonne" value="0">';
?>
<!-- ============================================================== navigation dans la liste -->
<div id='navigation'>
<input type="image" id="zPremier" title="premier" src="images/goPremier.gif" onclick="premier('choixP','lstParam')">
<input type="image" id="zPrecedent" title="pr&eacute;c&eacute;dent" src="images/goPrecedent.gif" onclick="precedent('choixP','lstParam')">
<?php echo ' <input type="text" id="zNumero" value="'.$noP.'/'.$nbP.'" disabled="true" size="5" style="text-align:center;vertical-align:top;">'; ?>
<input type="image" id="zSuivant" title="suivant" src="images/goSuivant.gif" onclick="suivant('choixP','lstParam')">
<input type="image" id="zDernier" title="dernier" src="images/goDernier.gif" onclick="dernier('choixP','lstParam')">
</div>
</form>
<!-- fin liste de choix -->

69
vues/v_choixPompier.php Normal file
View File

@ -0,0 +1,69 @@
<!-- choix d'un pompier / Dernière modification le 18 septembre 2023 par Pascal Blain -->
<?php
$nbL = count($lesLignes); // Liste des pompiers
echo '<div id="contenu">
<form name="choixP" action="index.php?choixTraitement=pompiers&action=voir" method="post">
<h2>';
if ($_SESSION['statut'] == 1) {
echo '
<input type="text" value="' . $_SESSION['prenom'] . ' ' . $_SESSION['nom'] . '" disabled>
<input type="hidden" name="lstPompiers" value="' . $_SESSION['idUtilisateur'] . '">';
$choix = $_SESSION['idUtilisateur'];
} else {
echo '
<select name="lstPompiers" STYLE="width:350px;" onchange="submit();">';
if (!isset($_REQUEST['lstPompiers'])) {
$choix = $_SESSION['idUtilisateur'];
} else {
$choix = $_REQUEST['lstPompiers'];
}
$i = 1;
foreach ($lesLignes as $uneLigne) {
if ($uneLigne['pId'] == $choix) {
echo "<option selected value=\"" . $uneLigne['pId'] . "\">" . $uneLigne['pNom'] . " " . $uneLigne['pPrenom'] . "</option>\n ";
$choix = $uneLigne['pId'];
$noL = $i;
} else {
if ($_SESSION['statut'] == 2) {
echo "<option value=\"" . $uneLigne['pId'] . "\">" . $uneLigne['pNom'] . " " . $uneLigne['pPrenom'] . "</option>\n ";
}
$i = $i + 1;
}
}
echo '</select>';
}
echo ('
</h2>
<!-- ============================================================== navigation dans la liste -->
<div id="navigation">
');
if ($_SESSION['statut'] == 2) {?>
<input type="image" id="zNouveau" title="Ajouter" src="images/ajout.gif" onclick="faire('choixP', 'ajouter')">
<input type="image" id="zModif" title="Modifier" src="images/modif.gif" onclick="faire('choixP', 'modifier')">
<input type="image" id="zSupprime" title="Supprimer" src="images/supprimer.gif" onclick="faire('choixP', 'supprimer')">&nbsp;&nbsp;
<input type="image" id="zPremier" title="premier" src="images/goPremier.gif" onclick="premier('choixP','lstPompiers')">
<input type="image" id="zPrecedent" title="précédent" src="images/goPrecedent.gif" onclick="precedent('choixP','lstPompiers')">
<?php
echo '
<input type="text" id="zNumero" value="'.$noL.'/'.$nbL.'" disabled="true" size="5" style="text-align:center;vertical-align:top;">'; ?>
<input type="image" id="zSuivant" title="suivant" src="images/goSuivant.gif" onclick="suivant('choixP','lstPompiers')">
<input type="image" id="zDernier" title="dernier" src="images/goDernier.gif" onclick="dernier('choixP','lstPompiers')">
<?php
} else {
echo '
<input type="image" id="zModif" title="Modifier" src="images/modif.gif" onclick="faire(\'choixP\', \'modifier\')">';
}?>
</div>
<input type="hidden" name="action" value="<?php if($_REQUEST['action']=="liste") {echo "voir";} else {echo $_REQUEST['action'];}?>">
<input type="hidden" name="type" value="<?= isset($_REQUEST['type']) ? $_REQUEST['type'] : '';?>">
<input type="hidden" name="zType" value="*">
<input type="hidden" name="zIndice" value="*">
<input type="hidden" name="zColonne" value="*">
</form>
<!-- fin liste de choix -->

20
vues/v_connexion.php Normal file
View File

@ -0,0 +1,20 @@
<!-- vue v_connexion.php / Derniere modification le 18 septembre 2023 par Pascal Blain -->
<div id="contenu">
<h2>Merci de vous identifier pour acc&eacute;der aux dossiers</h2>
<form name="frmIdentification" method="POST" action="index.php?choixTraitement=connexion&action=valideConnexion">
<fieldset><legend>Identification utilisateur</legend>
<br /><br />
<label for="nom">Nom du compte*</label>
<input id="login" type="text" name="login" size="30" maxlength="45" placeholder="Entrez votre nom d'Utilisateur">
</p>
<p>
<label for="mdp">Mot de passe&nbsp;&nbsp;&nbsp;&nbsp;*</label>
<input id="mdp" type="password" name="mdp" size="30" maxlength="45" placeholder="Entrez votre Mot de Passe">
</p><br /><br />
<input type="submit" name="valider" value="Valider">
<input type="reset" name="annuler" value="Annuler">
</p>
</fieldset>
</form>
<br /><br />
</div>

61
vues/v_entete.php Normal file
View File

@ -0,0 +1,61 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>SDIS29</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="./styles/styles.css" rel="stylesheet" type="text/css" />
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<link rel="shortcut icon" type="image/x-icon" href="./images/favicon.ico" />
<script src="include/proceduresJava.js" type="text/javascript"></script>
</head>
<?php
//version du code : le 18 septembre 2023 -------------------------------------
if (isset($_REQUEST['zFormulaire'])) {
$formulaire=$_REQUEST['zFormulaire'];
}
if (isset($_REQUEST['zChamp'])) {
$champ = $_REQUEST['zChamp'];
}
?>
<body onload="donner_focus('<?= $formulaire."','".$champ;?>');">
<div id="page">
<div id="entete">
<img src="./images/logo.png" id="logo" alt="SDIS29" title="SDIS 29" />
<div id="sommaire">
<?php
if (isset($_SESSION['idUtilisateur'])) {
echo '<ul>';
if ($_SESSION['statut'] == 2) {
echo '
<li><a href="index.php?choixTraitement=parametres&action=voir" title="parametres">parametres</a>|</li>
<li><a href="index.php?choixTraitement=gardes&action=voir" title="gardes">gardes</a>|</li>';
}
if ($_SESSION['statut'] == 3) {
echo '<li><a href="index.php?choixTraitement=interventions&action=voir" title="interventions">interventions</a>|</li>';
}
echo '
<li><a href="index.php?choixTraitement=pompiers&action=voir&type=a">pompiers</a>|</li>
<li><b>Bienvenue ' . $_SESSION['prenom'] . ' ' . strtoupper($_SESSION['nom']) . ' </b></li>
<li style="text-align:left;"><a href="index.php?choixTraitement=connexion&action=demandeConnexion" title="Se d&eacute;connecter"><img alt="déconnexion" src="images/deconnexion.png" border="0" height="26px"></a></li>
</ul>';
}
?>
<h1>Gestion des gardes et des interventions</h1>
</div>
<?php
if (isset($_SESSION['adr1'])) {
echo ('
<div><small><p style="text-align:left;">'
. $_SESSION['adr1'] . '<br />'
. $_SESSION['adr2']
. '<br />' . $_SESSION['adr3']
. '<br />' . $_SESSION['adr4']
. '</p></small>
</div>
');
}
?>
</div>
<!-- fin affichage du menu -->

10
vues/v_erreurs.php Normal file
View File

@ -0,0 +1,10 @@
<div class ="erreur">
<ul>
<?php
foreach($_REQUEST['erreurs'] as $erreur)
{
echo "<li>$erreur</li>";
}
?>
</ul>
</div>

66
vues/v_ficheGardes.php Normal file
View File

@ -0,0 +1,66 @@
<!-- affichage de la feuille de gardes / Derniere modification le 18/09/2023 à 16h50 par Pascal Blain -->
<div style='display: block;' class='unOnglet' id='contenuOnglet1'>
<fieldset><legend>Feuille de gardes</legend>
<form name="frmDispos" action="index.php?choixTraitement=gardes&action=voir" method="post">
<input type="hidden" name="zSemaine" value='<?php echo $semaine;?>'>
<input type="hidden" name="zAnnee" value='<?php echo $annee;?>'>
<input type="hidden" name="ztLaDate" value="">
<input type="hidden" name="ztLaTranche" value="">
<input type="hidden" name="ztExGarde" value="">
<input type="hidden" name="ztPompier" value="">
</form>
<table id="tableau" class="tableau">
<tbody>
<tr>
<th><input id="sPrecedente" name="gauche" title="semaine précédente" src="images/gauche.gif" onclick="autreSemaine('<?php echo date('W',strtotime("-7 days",$premierJour))."', '".date('Y',strtotime("-7 days",$premierJour))?>')" onmouseover="document.gauche.src='images/gauche_.gif'" onmouseout="document.gauche.src='images/gauche.gif'"type="image"></th>
<th colspan="27"><b><big>Semaine <?php echo $semaine." : du lundi ".date('d/m/Y',$premierJour)." au dimanche ".date('d/m/Y',strtotime("6 days",$premierJour))."</big></b></th>";?>
<th><input id="sSuivante" name="droite" title="semaine suivante" src="images/droite.gif" onclick="autreSemaine('<?php echo date('W',strtotime("+7 day",$premierJour))."', '".date('Y',strtotime("+7 day",$premierJour));?>')" onmouseover="document.droite.src='images/droite_.gif'" onmouseout="document.droite.src='images/droite.gif'"type="image"></th>
</tr>
<tr><th>&nbsp;</th>
<?php
$nomJour = array('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche');
for($jour=0; $jour<= 6; $jour++)
{
echo ('<th colspan="4">'.$nomJour[$jour].' '.date('d/m',strtotime('+'.$jour.' day',$premierJour)).'</th>');
}
echo "</tr>".PHP_EOL." <tr><th width='100'>Volontaires</th>";
for($jour=0; $jour<= 6; $jour++)
{
foreach ($lesTranches as $uneTranche)
{echo '<th class="semaine" style="text-align : center;">'.$uneTranche["pIndice"].'</th>';}
}
echo PHP_EOL." </tr>";
foreach ($lesPompiers as $unPompier)
{
echo "<tr><td><small><small>".$unPompier['pNom']." ".$unPompier['pPrenom']."</small></small></td>";
echo "</tr>".PHP_EOL." ";
}
?>
</tr>
</tbody>
</table>
</fieldset>
</div>

101
vues/v_ficheParametre.php Normal file
View File

@ -0,0 +1,101 @@
<!-- affichage du detail d'un parametre / Derniere modification le 18 septembre 2023 par Pascal Blain -->
<?php
echo('
<div id="fiche">
');
/*================================================================================================== */
echo("
<div>
<fieldset><legend>Parametre</legend>
<table>
<tr><th style='width:25px;text-align:center;'><a href='index.php?choixTraitement=parametres&action=ajouter&type=".$enteteParametre['tpId']."&valeur=NULL'><img title='Ajouter une valeur' src='images/ajout.gif'></a></th><th style='width:30px;'>Code</th><th>Description</th></tr>
<tr><td>&nbsp;</td><td>".$enteteParametre['tpId']."</td><td>".$enteteParametre['tpLibelle']."</td></tr>
</table>
</fieldset><br />
<table style='border: 0px solid white;'>
<tr>
<td style='border :0px;'>
<fieldset><legend>Valeurs</legend>
<table>");
$numPa=1;
foreach ($lesInfosParametre as $uneLigne)
{
if ($numPa<9)
{$numPa=$numPa+1;
$type = $choix;
$indice = $uneLigne['pIndice'];
echo("<tr> <th style='width:25px;text-align:center;'>".$uneLigne['pIndice']."</th> <td>".$uneLigne['pLibelle']."</td>
<td style='width:25px;text-align:center;'>");
if ($uneLigne['nb']<>0)
{echo("<a onclick=\"javascript:voirListe('$type','$indice','voir'); return false;\" class='stNb'>".$uneLigne['nb']."</a>");}
else
{echo($uneLigne['nb']);}
echo("</td>
<td style='width:20px;text-align:center;'><a href='index.php?choixTraitement=parametres&action=modifier&type=".$enteteParametre['tpId']."&valeur=".$uneLigne['pIndice']."'><img src='images/modif.gif' title='modifier'></a></td>
<td style='width:20px;text-align:center;'>");
if ($uneLigne['nb']!=0) {echo "&nbsp;";}
else {echo ("
<a href='index.php?choixTraitement=parametres&action=supprimer&type=".$enteteParametre['tpId']."&valeur=".$uneLigne['pIndice']."'><img title='Supprimer' src='images/supprimer.gif'></a>");}
echo ("
</td></tr>");
}
}
while ($numPa<9)
{
echo("<tr> <th style='width:25px;'>...</th> <td>&nbsp;</td> </tr>");
$numPa=$numPa+1;
}
echo(" </table>
</fieldset></td>
<td style='border :0px;'>
<fieldset><legend>(suite)</legend>
<table>");
$numP=1;
foreach ($lesInfosParametre as $uneLigne)
{
if ($numP>=9)
{
$type = $choix;
$indice = $uneLigne['pIndice'];
echo("<tr> <th style='width:25px;text-align:center;'>".$uneLigne['pIndice']."</th> <td>".$uneLigne['pLibelle']."</td>
<td style='width:25px;text-align:center;'>");
if ($uneLigne['nb']<>0)
{echo("<a onclick=\"javascript:voirListe('$type','$indice','voir'); return false;\" class='stNb'>".$uneLigne['nb']."</a>");}
else
{echo($uneLigne['nb']);}
echo("</td>
<td style='width:20px;text-align:center;'><a href='index.php?choixTraitement=parametres&action=modifier&type=".$enteteParametre['tpId']."&valeur=".$uneLigne['pIndice']."'><img src='images/modif.gif' title='modifier'></a></td>
<td style='width:20px;text-align:center;'>");
if ($uneLigne['nb']!=0) {echo "&nbsp;";}
else {echo ("
<a href='index.php?choixTraitement=parametres&action=supprimer&type=".$enteteParametre['tpId']."&valeur=".$uneLigne['pIndice']."'><img title='Supprimer' src='images/supprimer.gif'></a>");}
echo ("
</td></tr>");
}
$numP=$numP+1;
}
if ($numP<9) {$numP=9;}
while ($numP<17)
{
echo("<tr> <th style='width:25px;text-align:center;'>...</th> <td>&nbsp;</td> </tr>");
$numP=$numP+1;
}
echo(" </table>
</fieldset>
</td>
</tr>
</table>
<fieldset><legend>Observations</legend>
<table style='border: 0px solid white;'>
<tr>
<td>...</td>
</tr>
</table>
</fieldset>
</div>
</div>");
?>

282
vues/v_fichePompier.php Normal file
View File

@ -0,0 +1,282 @@
<!-- affichage du detail de la fiche pompier / Derniere modification le 18 septembre 2023 par Pascal Blain -->
<!-- ------------------------------------------------ fenetre modale en CSS -->
<style>
.fModale {
position : fixed;
font-family : Arial, Helvetica, sans-serif;
top : 0;
right : 0;
bottom : 0;
left : 0;
background : rgba(0,0,0,0.8);
z-index : 99999;
//display : none;
opacity : 0;
-webkit-transition: opacity 400ms ease-in;
-moz-transition: opacity 400ms ease-in;
transition : opacity 400ms ease-in;
pointer-events: none;
}
.fModale:target {
//display : block;
opacity : 1;
pointer-events: auto;
}
.fModale > div {
width : 200px;
position : relative;
margin : 10% auto;
padding : 5px 20px 13px 20px;
border-radius: 10px;
background : #fff;
background : -moz-linear-gradient(#fff, #999);
background : -webkit-linear-gradient(#fff, #999);
background : -o-linear-gradient(#fff, #999);
}
.fermer {
background : #606061;
color : #FFFFFF;
line-height : 25px;
position : absolute;
right : -12px;
text-align : center;
top : -10px;
width : 24px;
text-decoration: none;
font-weight : bold;
-webkit-border-radius: 12px;
-moz-border-radius: 12px;
border-radius: 12px;
-moz-box-shadow: 1px 1px 3px #000;
-webkit-box-shadow: 1px 1px 3px #000;
box-shadow : 1px 1px 3px #000;
}
.fermer:hover { background: #00d9ff; }
</style>
<?php
/*-----------------------------------------------------------------
Il existe en PHP un opérateur conditionnel dit opérateur ternaire ("?:")
Exemple d'utilisation pour l'opérateur ternaire : Affectation d'une valeur par défaut
<?php
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// La ligne ci-dessus est identique à la condition suivante :
if (empty($_POST['action'])) {
$action = 'default';
} else {
$action = $_POST['action'];
}
-----------------------------------------------------------------------*/
$titre1 = ($_SESSION['statut'] == 1) ? "Mes disponibilit&eacute;s" : "Disponibilit&eacute;s";
$titre2 = ($_SESSION['statut'] == 1) ? "Mes gardes" : "Gardes";
$titre3 = ($_SESSION['statut'] == 1) ? "Mon profil" : "Profil";
echo ('
<div id="fiche">
<ul class="lesOnglets">
<li class="actif onglet" id="onglet1" onclick="javascript:Affiche(\'1\',3);">'.$titre1.'</li>
<li class="inactif onglet" id="onglet2" onclick="javascript:Affiche(\'2\',3);">'.$titre2.'</li>
<li class="inactif onglet" id="onglet3" onclick="javascript:Affiche(\'3\',3);">'.$titre3.'</li>
</ul>');
/*================================================================================================== DISPONIBILITEES (1) */
echo ("
<div style='display: block;' class='unOnglet' id='contenuOnglet1'>
<fieldset><legend>X indique une garde</legend>"); ?>
<!-- div class="boite" style="margin: 0px 10px;" -->
<form name="frmDispos" action="index.php?choixTraitement=pompiers&action=voir" method="post">
<input type="hidden" maxlength="2" name="zSemaine" value='<?php echo $semaine;?>'>
<input type="hidden" maxlength="2" name="zAnnee" value='<?php echo $annee;?>'>
</form>
<table id="tableau" class="tableau">
<tbody>
<!-- PARTIE SELCTION SEMAINE -->
<tr>
<th><input id="sPrecedente" name="gauche" title="semaine précédente" src="images/gauche.gif" onclick="autreSemaine('<?php echo date('W',strtotime("-7 days",$premierJour))."', '".date('Y',strtotime("-7 days",$premierJour))?>')" onmouseover="document.gauche.src='images/gauche_.gif'" onmouseout="document.gauche.src='images/gauche.gif'"type="image"></th>
<th colspan="26"><b><big>Semaine <?php echo $semaine." : du lundi ".date('d/m/Y',$premierJour)." au dimanche ".date('d/m/Y',strtotime("6 days",$premierJour))."</big></b></th>";?>
<th><input id="sSuivante" name="droite" title="semaine suivante" src="images/droite.gif" onclick="autreSemaine('<?php echo date('W',strtotime("+7 day",$premierJour))."', '".date('Y',strtotime("+7 day",$premierJour));?>')" onmouseover="document.droite.src='images/droite_.gif'" onmouseout="document.droite.src='images/droite.gif'"type="image"></th>
</tr>
<!-- PARTIE AFFICHAGE DES JOURS -->
<tr>
<?php
$nomJour = array('Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi', 'Dimanche');
for($jour = 0; $jour <= 6; $jour++) {
echo ('<th colspan="4">'
. $nomJour[$jour] . ' '
. date('d/m', strtotime('+' . $jour . ' day', $premierJour)) . '</th>'
);
}
?>
</tr>
<!-- PARTIE AFFICHAGE DES TRANCHES DANS CHAQUE JOURS -->
<tr>
<?php
for($jour = 0; $jour <= 6; $jour++) {
for($tranche = 1; $tranche <= 4; $tranche++) {
echo '<th class="semaine" style="text-align : center;">' . $tranche . '</th>';
}
}
?>
</tr>
<!-- PARTIE SELCTION DES DISPO -->
<tr>
<?php
foreach ($lesDispos as $uneLigne) { // $pdo->getDisposHebdo() return les dispo
for($jour = 0; $jour <= 6; $jour++) {
$leJour = date('Y-m-d', strtotime('+' . $jour . ' day', $premierJour));
$dateTab = date('d/m/Y', strtotime('+' . $jour . ' day', $premierJour));
for($tranche = 1; $tranche <= 4; $tranche++){
$couleur = 'c' . $tranche;
$garde = 'g' . $tranche;
$dispo = 'd' . $tranche;
echo('
<td style="height: 20px; background-color: ' . $uneLigne[$dateTab][$couleur] . ';" class="select-dispo" id="' . $leJour . '/' . $tranche . '">' . (($uneLigne[$dateTab][$garde] == 1) ? 'X' : '') . '</td>
');
}
}
}
?>
</tr>
</tbody>
</table>
<div id="fenetreDispo" class="fModale">
<div>
<a href="#" title="Fermer" class="fermer">X</a>
<h2>ma disponibilit&eacute;<br>pour le <label id="ztJour">&nbsp;</label></h2>
<form name="frmActivites" action="index.php?choixTraitement=pompiers&action=majActivite" method="post">
<input type="hidden" name="zSemaine" value='<?php echo $semaine;?>'>
<input type="hidden" name="zAnnee" value='<?php echo $annee;?>'>
<input type="hidden" name="ztLaDate" value=''>
<input type="hidden" name="ztLaTranche" value=''>
<input type="hidden" name="ztExDispo" value=''>
<br>
<?php
$i=0;
foreach ($lesTypesDispos as $uneLigne)
{
if ($uneLigne["pIndice"]<>3) {
echo '<input type="radio" name="brDispo" id="brDispo'.$i.'" value="'.$uneLigne["pIndice"].'"/><label for="brDispo'.$i.'">'.$uneLigne["pLibelle"].'</label><br>';}
$i++;
}
?>
<br>
<button onclick="document.forms['frmActivites'].submit()">Valider</button>
<button href="#contenuOnglet1">Annuler</button>
</form>
</div>
</div>
<!-- /div -->
<?php
echo ("
</fieldset>
</div>");
/*================================================================================================== GARDES (2)*/
echo ("
<div style='display: none;' class='unOnglet' id='contenuOnglet2'>
<fieldset><legend>Gardes r&eacute;alis&eacute;es ");
if (count($lesGardes)==0) {echo "<i>(aucune garde enregistrée)</i></legend>";} else
{
echo ("<i>(".count($lesGardes)." gardes)</i></legend>
<table style='border: 0px solid white;'>
<tr><th class='controleLong'>Date de la garde</th>");
foreach ($lesTranches as $uneLigne) { echo ("<th>".$uneLigne['pLibelle']."</th>");}
$dateGarde="premiere";
$colonne=1;
echo "</tr>";
foreach ($lesGardes as $uneLigne)
{
if ($dateGarde != $uneLigne['wDate'])
{
if ($dateGarde != "premiere")
{
while ($colonne<=count($lesTranches)) {echo "<td class='controle' style='text-align : center;'>&nbsp;</td>"; $colonne++;}
echo "</tr>
";
}
echo "<tr><td class='controle' style='text-align : center;'>".$uneLigne['wDate']."</td>";
$dateGarde = $uneLigne['wDate'];
$colonne=1;
}
while ($colonne<$uneLigne['aTranche']) {echo "<td class='controle' style='text-align : center;'>&nbsp;</td>"; $colonne++;}
echo ("<td class='controle' style='text-align : center;background-color : lime;'>&nbsp;</td>");
$colonne=$uneLigne['aTranche']+1;
}
while ($colonne<=count($lesTranches)) {echo "<td class='controle' style='text-align : center;'>&nbsp;</td>"; $colonne++;}
echo "</tr>";
echo ("</table>");
}
echo ("
</fieldset>
</div>");
/*================================================================================================== COORDONNEES (3) */
echo ("
<div style='display: none;' class='unOnglet' id='contenuOnglet3'>
<table style='border: 0px solid white;'>
<tr>
<td style='border :0px;'>
<fieldset><legend>Coordonn&eacute;es</legend>
<table>
<tr><th style='width:130px;'>Nom</th> <td style='width:130px;'>".$lesInfosPompier['nom']."</td> </tr>
<tr><th>Pr&eacute;nom</th> <td>".$lesInfosPompier['prenom']."</td> </tr>
<tr><th>Adresse</th> <td>".$lesInfosPompier['pAdresse']."</td> </tr>
<tr><th>Code postal</th> <td>".$lesInfosPompier['pCp']."</td> </tr>
<tr><th>Ville</th> <td>".$lesInfosPompier['pVille']."</td> </tr>
<tr><th>T&eacute;l&eacute;phone</th> <td>".$lesInfosPompier['pBip']."</td> </tr>
<tr><th>Adresse &eacute;lectronique</th> <td>".$lesInfosPompier['pMail']."</td> </tr>
<tr><th>Nom de compte</th> <td>".$lesInfosPompier['pLogin']."</td></tr>
<tr><th>&nbsp;</th> <td>&nbsp;</td> </tr>
<br />");
echo (" </table>
</fieldset>
</td>
<td style='border :0px;'>
<fieldset><legend>Centre d'Incendie et de Secours</legend>
<table>
<tr><th style='width:130px;'>Code</th> <td>".$lesInfosPompier['pCis']."</td> </tr>
<tr><th>Nom</th> <td>".$lesInfosPompier['cNom']."</td> </tr>
<tr><th>Adresse</th> <td>".$lesInfosPompier['cAdresse']."</td> </tr>
<tr><th>T&eacute;l&eacute;phone</th> <td>".$lesInfosPompier['cTel']."</td> </tr>
<tr><th>Groupement</th> <td>".$lesInfosPompier['cGroupement']."</td> </tr>
</table>
</fieldset>
<fieldset><legend>Fonction</legend>
<table>
<tr><th>Type</th> <td>".$lesInfosPompier['wType']."</td> </tr>
<tr><th>Grade</th> <td>".$lesInfosPompier['wGrade']."</td> </tr>
<tr><th>Statut</th> <td>".$lesInfosPompier['wStatut']."</td> </tr> </table>
</fieldset></td>
</tr>
</table>
<fieldset><legend>Observations</legend>
<table style='border: 0px solid white;'>
<tr>
<td>.".$lesInfosPompier['pCommentaire']."</td>
</tr>
</table>
</fieldset>
</div>");
/*================================================================================================== Onglet X */
echo ("
<div style='display: none;' class='unOnglet' id='contenuOngletX'>
<fieldset><legend>XXXX</legend>
<table>
<tr><th style='width:130px;'>.....</th></tr>
<tr><td>xxxx</td></tr>
</table>
</fieldset>
</div>
</div>
</div>");
?>

98
vues/v_intervention.php Normal file
View File

@ -0,0 +1,98 @@
<!-- affichage d'une intervention / Derniere modification le 23 mai 2019 par Pascal Blain -->
<?php
$nbi=count($lesInterventions);
$titre="Ajout";
echo ('
<div id="fiche">
<ul class="lesOnglets">
<li class="actif onglet" id="onglet1" onclick="javascript:Affiche(\'1\',3);">'.$titre.'</li>
<li class="inactif onglet" id="onglet2" onclick="javascript:Affiche(\'2\',3);">onglet 2</li>
<li class="inactif onglet" id="onglet3" onclick="javascript:Affiche(\'3\',3);">onglet 3</li>
</ul>');
/*================================================================================================== nouvelle intervention (1) */
echo("
<div style='display: block;' class='unOnglet' id='contenuOnglet1'>
<fieldset><legend>Nouvelle intervention</legend>
<table>
<tr><th style='width:180px;'>Description</th><th>Date</th><th>Lieu</th><th>Horaires</th></th></tr>
<tr><td>".$infosIntervention['iDescription']."</td><td>".$infosIntervention['iDdate']."</td><td>".$infosIntervention['iLieu']."</td><td>de ".$infosIntervention['iHeureDebut']." &agrave; ".$infosIntervention['iHeureFin']."</td></tr>
<tr><td colspan='4'>".$infosIntervention['programme1']."</td></tr>
</table>
</fieldset>
<table style='border: 0px solid white;'>
<tr>
<td style='border :0px;'>
<fieldset><legend><a href='index.php?uc=intervention&amp;action=ajouterIntervenants&amp;atelier=20132115&amp;reunion=1' title='ajouter les participants'><img alt='ajouter des intervenants' src='images/group.png'>Intervenants</a></legend>
<table>");
$numPa = 0;
foreach ($lesParticipants as $unParticipant) {
if ( $unParticipant['rOrdre'] == 1 AND $numPa < 7) {
$numPa = $numPa+1;
$participant=$unParticipant['uNom'] . " " . $unParticipant['uPrenom'];
echo("<tr> <th style='width:180px;'>" . $participant . "</th> <td>x</td> </tr>");
}
}
echo(" </table>
</fieldset></td>
<td style='border :0px;'>
<fieldset><legend>(suite)</legend>
<table>");
$numP = 0;
foreach ($lesParticipants as $unParticipant) {
if ($unParticipant['rOrdre'] == 1 ) {
$numP = $numP+1;
if ($numP > 7) {
$participant = $unParticipant['uNom'] . " " . $unParticipant['uPrenom'];
echo("<tr> <th style='width:180px;'>".$participant."</th> <td>x</td> </tr>");
}
}
}
while ($numP<14) {
echo("<tr> <th>...</th>
<td>&nbsp;</td> </tr>");
$numP = $numP+1;
}
echo(" </table>
</fieldset>
</td>
</tr>
</table>
<fieldset><legend>Observations</legend>
<table style='border: 0px solid white;'>
<tr>
<td>".$infosIntervention['commentaire1']."</td>
</tr>
</table>
</fieldset>
</div>");
/*================================================================================================== Onglet (2) */
echo ("
<div style='display: none;' class='unOnglet' id='contenuOnglet2'>
<fieldset><legend>XXXX</legend>
<table>
<tr><th style='width:130px;'>.....</th></tr>
<tr><td>xxxx</td></tr>
</table>
</fieldset>
</div>");
/*================================================================================================== Onglet 3 */
echo ("
<div style='display: none;' class='unOnglet' id='contenuOnglet3'>
<fieldset><legend>XXXX</legend>
<table>
<tr><th style='width:130px;'>.....</th></tr>
<tr><td>xxxx</td></tr>
</table>
</fieldset>
</div>
</div>
</div>");
?>

47
vues/v_listeStat.php Normal file
View File

@ -0,0 +1,47 @@
<!-- affichage du détail d'une statistique / Dernière modification le 20 novembre 2013 par Pascal BLAIN -->
<?php
echo('<div id="fiche">
<div>');
echo("<fieldset><legend>" . $titre1 . "</legend>
<h2> ".$titre2."</h2><p><i>(" . count($lesStatistiques) . " usagers ");
if ($colonne == 'B') {
echo ("déjà présents durant la période précédente");
}
if ($colonne == 'D') {
echo ("arrivés en cours de période");
}
if ($colonne == 'F') {
echo ("sortis en cours de période");
}
if ($colonne == 'S') {
echo ("en cours d'instruction ou suivis");
}
if ($colonne == 'C') {
echo ("sortis ou réorientés");
}
echo (")</i></p>
<table>
<tr><th class='controleLong'>Nom de l'usager</th><th>Genre</th><th class='controleLong'>Ville</th><th>(e) le</th><th>No CAF</th>
<th>Entrée le</th><th>Sortie le</th></tr>");
foreach ($lesStatistiques as $uneLigne) {
if ($uneLigne['uHomme'] == 1) {
$sexe = "M";
} else {
$sexe = "F";
}
echo("<tr><td class='controleLong'><a href='index.php?uc=usagers&action=voir&lstUsagers=" .$uneLigne['uId']."' style='text-decoration:none;'>".$uneLigne['uNom']." ".$uneLigne['uPrenom']."</a></td>
<td style='text-align : center;'>".$sexe."</td>
<td class='controleLong'>".$uneLigne['uCp']." ".$uneLigne['uVille']."</td>
<td class='controle' style='text-align : center;'>".$uneLigne['uDateNaissance']."</td>
<td class='controle' style='text-align : center;'>".$uneLigne['uNumCaf']."</td>
<td class='controle' style='text-align : center;'>".$uneLigne['wEntree']."</td>
<td class='controle' style='text-align : center;'>".$uneLigne['wSortie']."</td>
</tr>");
}
echo ("</table>
</fieldset>
</div>
</div>");
?>

9
vues/v_pied.php Normal file
View File

@ -0,0 +1,9 @@
<!-- Derniere modification le 18/09/2023 par Pascal Blain -->
<!-- Division pour le pied de page -->
<div>
<hr /><p style="text-align:center;">
<img src="images/castel.png" style="vertical-align: middle;">
<?php echo "Lyc&eacute;e Le Castel &agrave; Dijon - BTS SIO - <img src='images/copyleft.png' style='text-align: center; vertical-align: middle;'> 2023 Pierre Renaudot";?></p>
</div>
</body>
</html>

48
vues/v_unParam.php Normal file
View File

@ -0,0 +1,48 @@
<!-- v_unParam.php / Derniere modification le 18 septembre 2023 par Pascal Blain -->
<div id="contenu">
<?php
if ($action==="supprimer")
{echo '<h2>SUPPRESSION DE LA VALEUR D\'UN PARAMETRE</h2>';
echo "<form name='frmParam' action='index.php?choixTraitement=parametres&action=validerSupprimer&type=".$infosParam['pType']."&valeur=".$infosParam['pIndice']."' method='post'>";}
if ($action==="modifier")
{echo '<h2>MODIFICATION DE LA VALEUR D\'UN PARAMETRE</h2>';
echo "<form name='frmParam' action='index.php?choixTraitement=parametres&action=validerModifier&type=".$infosParam['pType']."&valeur=".$infosParam['pIndice']."' method='post'>";}
if ($action==="ajouter")
{echo '<h2>AJOUT DE LA VALEUR D\'UN PARAMETRE</h2>';
echo "<form name='frmParam' action='index.php?choixTraitement=parametres&action=validerAjouter&type=".$infosParam['pType']."' method='post'>";}
?>
<!-- Affichage des valeurs dans un tableau r&eacute;capitulatif. -->
<div>
<table style='border: 0px solid white;'>
<tr><td style='border :0px;'>
<fieldset><legend><?php echo $infosParam['tlLibelle'] ?></legend>
<?php
echo (" <table>
<tr> <th>Indice</th> <td>");
if ($action==="ajouter") {echo "<input class='controle' type='text' name='valeur' value='".$infosParam['pIndice']."'>";}
else {echo $infosParam['pIndice'];}
echo (" </td> </tr>
<tr> <th>Valeur</th> <td>");
if ($action==="ajouter") {echo "<input class='controle' type='text' name='zLibelle'>";$actif=null;}
if ($action==="modifier") {echo "<input class='controleLong' type='text' name='zLibelle' value='".$infosParam['pLibelle']."'>";$actif=null;}
if ($action==="supprimer") {echo $infosParam['pLibelle'];$actif="disabled='disabled'";}
echo (" </td> </tr>");
echo ("
<tr> <th>Plancher</th> <td><input class='controle' type='text' name='zPlancher' value='".$infosParam['pPlancher']."'></td> </tr>
<tr> <th>Plafond</th> <td><input class='controle' type='text' name='zPlafond' value='".$infosParam['pPlafond']."'></td> </tr>");
echo ("
</table>
<input type='hidden' name='zTerritoire' value='NULL'><input type='hidden' name='zDep' value='NULL'>"); ?>
</fieldset>
</td>
</tr>
</table>
</div>
<p align="right">
<input type="hidden" name="zOk" value="OK">
<input type="image" name="btValider" alt="Valider" src="images/valider.jpg" onclick="this.form.submit();">
<input type="image" name="btAnnuler" alt="Annuler" src="images/annuler.jpg" onclick="annuler('frmParam');">
</p>
</form>
</div>

67
vues/v_unPompier.php Normal file
View File

@ -0,0 +1,67 @@
<!-- v_unPompier.php / Derniere modification le 18 septembre 2023 par Pascal Blain -->
<div id="contenu">
<?php
if ($_REQUEST['action']=="supprimer") {
echo '<h2>SUPPRESSION DU POMPIER '.$lesInfosPompier['nom'].' '.$lesInfosPompier['prenom'].'</h2>';
echo '<form name="frmA" action="index.php?choixTraitement=pompiers&action=validerSupprimer&type='.$lesInfosPompier['pType'].'&agent='.$lesInfosPompier['id'].'&caserne='.$lesInfosPompier['pCis'].'" method="post">';
}
if ($_REQUEST['action']=="modifier") {
echo '<h2>MODIFICATION DU POMPIER '.$lesInfosPompier['nom'].' '.$lesInfosPompier['prenom'].'</h2>';
echo '<form name="frmA" action="index.php?choixTraitement=pompiers&action=validerModifier&type='.$lesInfosPompier['pType'].'&agent='.$lesInfosPompier['id'].'&caserne='.$lesInfosPompier['pCis'].'" method="post">';
}
if ($_REQUEST['action']=="ajouter") {
echo "<h2>AJOUT D'UN NOUVEAU POMPIER</h2>";
echo '
<form name="frmA" action="index.php?choixTraitement=pompiers&action=validerAjouter&type='.$lesInfosPompier['pType'].'" method="post" onsubmit="return valider(this)">';
}
echo ("
<table style='border: 0px solid white;'>
<tr>
<td style='border :0px;'>
<fieldset><legend>Coordonn&eacute;es</legend>
<table>
");
if ($_REQUEST['action']=="supprimer"){ //-------------------------------------------------------- cas suppression
echo ("
<div style='display: none;' class='unOnglet' id='contenuOnglet3'>
<table style='border: 0px solid white;'>
<tr>
</tr>
</table>
");
}
//------------------------------------------------------------------------------------ cas ajout ou modification
if ($_REQUEST['action'] == "modifier") {
echo (" <tr>
</tr>
</table>
");
}
if ($_REQUEST['action'] == "ajouter") {
echo (" <tr><th style='width:130px;'>Nom</th> <td style='width:130px;'><input id='ztNom' type='text' name='ztNom'></td> </tr>
<br />");
}
?>
<table style='border: 0px solid white; '>
<tr>
<td style='border: 0px solid white;'>
<fieldset><legend>Observations</legend>
<textarea name='ztObs' cols='70' rows='1'></textarea>
</fieldset>
</td>
<td>
<input type="image" name="btValider" alt="Valider" src="images/valider.jpg" value="OK" >
<input type="image" name="btAnnuler" alt="Annuler" src="images/annuler.jpg" value="nonOK" onclick="annuler('frmA');">
</td>
<td style='border: 0px solid white; witdh:130px; text-align:right;'>
<input type="hidden" name="zTypeAdm" value="<?php// if ($type=="adm") {echo ("true");} else {echo ("false");} ?>">
<input type="hidden" name="zOk" value="OK">
</td>
</tr>
</table>
</form>