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

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);
}
});
})