reglages de bug
This commit is contained in:
		@@ -1,7 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * OBJECT QUI GERE LA PARTIE AFFICHAGE D'UNE FICHE 
 | 
					 * OBJECT QUI GERE LA PARTIE AFFICHAGE ET MODIFICATION D'UNE FICHE 
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class Class_newFiche
 | 
					class Class_newFiche
 | 
				
			||||||
@@ -215,4 +215,4 @@ class Class_newFiche
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return $result->execute();
 | 
					        return $result->execute();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Class PDO qui gère la base de donnée
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
class PdoGsb
 | 
					class PdoGsb
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	private static $serveur = 'pgsql:host=localhost';
 | 
						private static $serveur = 'pgsql:host=localhost';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,7 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * AJOUT COMPTABLE
 | 
					 *  Class qui gère les user 
 | 
				
			||||||
 *      INSERT INTO utilisateur 
 | 
					 **/
 | 
				
			||||||
 *      VALUES('cpt1', 'Renaudot', 'Pierre', 'pr07', 'pr', 'rue saint éloi', 21110, 'Marliens', NOW(), 3, 3, 4, 27, NOW(), NOW(), '120cv', 'essence')
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
class Class_user
 | 
					class Class_user
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    private $pdo = null;
 | 
					    private $pdo = null;
 | 
				
			||||||
@@ -13,6 +11,9 @@ class Class_user
 | 
				
			|||||||
        $this->pdo = $pDO->getPdoGsb();
 | 
					        $this->pdo = $pDO->getPdoGsb();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * FONCTION QUI CONNECTE UN UTILISATEUR
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public function connectUser(string $login, string $password): array|bool
 | 
					    public function connectUser(string $login, string $password): array|bool
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $req = 'SELECT "uId", "uNom", "uPrenom", "uAdresse", "uCp", "uVille", "uSecteur", "uLabo", "parametre"."pLibelle"
 | 
					        $req = 'SELECT "uId", "uNom", "uPrenom", "uAdresse", "uCp", "uVille", "uSecteur", "uLabo", "parametre"."pLibelle"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ if (isset($_POST['login']) && isset($_POST['password'])) {
 | 
				
			|||||||
	//Récupère les données de l'utilisateur
 | 
						//Récupère les données de l'utilisateur
 | 
				
			||||||
	$data = $userClass->connectUser($_POST['login'], $_POST['password']);
 | 
						$data = $userClass->connectUser($_POST['login'], $_POST['password']);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if($data == false) {
 | 
						if ($data == false) {
 | 
				
			||||||
		header('location: index.php');
 | 
							header('location: index.php');
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -30,64 +30,3 @@ if (isset($_POST['login']) && isset($_POST['password'])) {
 | 
				
			|||||||
} else {
 | 
					} else {
 | 
				
			||||||
	include('vues/v_connexion.php');
 | 
						include('vues/v_connexion.php');
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
die;
 | 
					 | 
				
			||||||
/*
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
header('location: index.php?direction=home');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if (!isset($_REQUEST['action'])) {
 | 
					 | 
				
			||||||
	$_REQUEST['action'] = 'demandeConnexion';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
$action = $_REQUEST['action'];
 | 
					 | 
				
			||||||
switch ($action) {
 | 
					 | 
				
			||||||
	case 'demandeConnexion': {
 | 
					 | 
				
			||||||
			session_unset();
 | 
					 | 
				
			||||||
			$param = $pdo->getParametre("adresse");
 | 
					 | 
				
			||||||
			$_SESSION['adr1'] = $param[1]['pLibelle']; //rue
 | 
					 | 
				
			||||||
			$_SESSION['adr2'] = $param[2]['pLibelle'] . ' ' . $param[3]['pLibelle']; //codePostal et ville
 | 
					 | 
				
			||||||
			include("vues/v_entete.php");
 | 
					 | 
				
			||||||
			include("vues/v_connexion.php");
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	case 'valideConnexion': {
 | 
					 | 
				
			||||||
			$login = $_REQUEST['login'];
 | 
					 | 
				
			||||||
			$mdp = $_REQUEST['mdp'];
 | 
					 | 
				
			||||||
			$utilisateur = $pdo->getInfosUtilisateur($login, $mdp);
 | 
					 | 
				
			||||||
			if (!is_array($utilisateur)) {
 | 
					 | 
				
			||||||
				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'];
 | 
					 | 
				
			||||||
				$statut = $utilisateur['statut'];
 | 
					 | 
				
			||||||
				connecter($id, $nom, $prenom, $statut);
 | 
					 | 
				
			||||||
				if (date('m') - 1 > 0) {
 | 
					 | 
				
			||||||
					$leMoisPrecedent = date('Y') * 100 + date('m') - 1;
 | 
					 | 
				
			||||||
				} else {
 | 
					 | 
				
			||||||
					$leMoisPrecedent = (date('Y') - 1) * 100 + 12;
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				//penser ici à faire la cloture du mois précédent !
 | 
					 | 
				
			||||||
				if ($statut == 'V')		// si le remboursement pour le mois courant n'existe pas (=0) il faut le créer{
 | 
					 | 
				
			||||||
					$leMois = date('Ym');
 | 
					 | 
				
			||||||
					$leRemboursement = $pdo->existeRemboursement($id, $leMois);
 | 
					 | 
				
			||||||
					if ($leRemboursement == 0) {
 | 
					 | 
				
			||||||
						$pdo->creeNouveauRemboursement($id, $leMois);
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
				header('location: index.php?uc=etatFrais&action=voir');
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	default: {
 | 
					 | 
				
			||||||
			include("vues/v_entete.php");
 | 
					 | 
				
			||||||
			include("vues/v_connexion.php");
 | 
					 | 
				
			||||||
			break;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
?>
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,4 @@ if ($_SESSION["typeU"] == "comptable") {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
$lesFiches = $gestionFiche->get_ficheAvalider();
 | 
					$lesFiches = $gestionFiche->get_ficheAvalider();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					include("vues/v_fichesAvalider.php");
 | 
				
			||||||
 | 
					 | 
				
			||||||
include("vues/v_fichesAvalider.php");
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,6 @@
 | 
				
			|||||||
require_once(__DIR__ . '/../Class/class.newFiche.php');
 | 
					require_once(__DIR__ . '/../Class/class.newFiche.php');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$typeUser = $_SESSION['uType']; //visiteur ou comptable
 | 
					$typeUser = $_SESSION['uType']; //visiteur ou comptable
 | 
				
			||||||
 $typeUser = 'visiteur';//$_SESSION['uType']; //visiteur ou comptable
 | 
					 | 
				
			||||||
$userId = $_SESSION['uId']; //exemple: 'b34'
 | 
					$userId = $_SESSION['uId']; //exemple: 'b34'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -40,6 +39,8 @@ if (isset($_GET['currentList'])) {
 | 
				
			|||||||
//Date du header en français
 | 
					//Date du header en français
 | 
				
			||||||
try {
 | 
					try {
 | 
				
			||||||
    //sudo timedatectl set-local-rtc 1
 | 
					    //sudo timedatectl set-local-rtc 1
 | 
				
			||||||
 | 
					    //sudo apt install php8.2-intl
 | 
				
			||||||
 | 
					    //sudo service apache2 restart
 | 
				
			||||||
    $format = new IntlDateFormatter(
 | 
					    $format = new IntlDateFormatter(
 | 
				
			||||||
        'fr_FR',
 | 
					        'fr_FR',
 | 
				
			||||||
        IntlDateFormatter::FULL,
 | 
					        IntlDateFormatter::FULL,
 | 
				
			||||||
@@ -48,14 +49,12 @@ try {
 | 
				
			|||||||
        IntlDateFormatter::GREGORIAN,
 | 
					        IntlDateFormatter::GREGORIAN,
 | 
				
			||||||
        'MMMM Y'
 | 
					        'MMMM Y'
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
    $dateHeader = $format->format($dateFormat);
 | 
					    $dateHeader = $format->format($dateTimeStamp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} catch (\Throwable $th) {
 | 
					} catch (\Throwable $th) {
 | 
				
			||||||
    $dateHeader = date('F Y', $dateTimeStamp);
 | 
					    $dateHeader = date('F Y', $dateTimeStamp);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//$date = '202312'; //TESTVAR
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//Instance de l'objet newFiche qui gère toute la partie bdd
 | 
					//Instance de l'objet newFiche qui gère toute la partie bdd
 | 
				
			||||||
$newFiche = new Class_newFiche($pdo, $userId, $date);
 | 
					$newFiche = new Class_newFiche($pdo, $userId, $date);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -81,7 +80,6 @@ $totalFraisFiche = $newFiche->getMontantValide();
 | 
				
			|||||||
 * ETAT DE LA FICHE
 | 
					 * ETAT DE LA FICHE
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
$status = $newFiche->getStatus();
 | 
					$status = $newFiche->getStatus();
 | 
				
			||||||
$status = 'CR'; //créé
 | 
					 | 
				
			||||||
$disabled = ($status !== 'CR') ? 'disabled' : '';
 | 
					$disabled = ($status !== 'CR') ? 'disabled' : '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include(__DIR__ . '/../vues/v_newFiche.php');
 | 
					include(__DIR__ . '/../vues/v_newFiche.php');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,149 +0,0 @@
 | 
				
			|||||||
http://www.toutjavascript.com/savoir/savoir06_2.php3
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
En javascript, la concat<61>nation se fait avec le caract<63>re plus (+) ou bien grace <20> la m<>thode concat().
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Dans les deux exemples ci-dessous, la variable cha<68>ne 3 contient la cha<68>ne "Bonjour tout le monde" :
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var chaine1 = "Bonjour ";
 | 
					 | 
				
			||||||
var chaine2 = "tout le monde";
 | 
					 | 
				
			||||||
var chaine3 = chaine1+chaine2;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
L'exemple ci-dessus est <20>quivalent <20> l'exemple suivant :
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var chaine1 = "Bonjour ";
 | 
					 | 
				
			||||||
var chaine2 = "tout le monde";
 | 
					 | 
				
			||||||
var chaine3 = chaine1.concat(chaine2);
 | 
					 | 
				
			||||||
---------------------------------------------------------
 | 
					 | 
				
			||||||
indexOf: Retourne la position d'une sous-cha<68>ne (lettre ou groupe de lettres) dans une cha<68>ne de caract<63>re, en effectuant la recherche de gauche <20> droite, <20> partir de la position sp<73>cifi<66>e en param<61>tre. Retourne -1 si la sous-cha<68>ne n'est pas trouv<75>e dans la cha<68>ne principale.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var Chaine = 'Comment <20>a marche?';
 | 
					 | 
				
			||||||
var Sous_Chaine = 'mar';
 | 
					 | 
				
			||||||
var Sous_Chaine_2 = 'zzz';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
var Resultat = Chaine.indexOf(Sous_Chaine); //Retourne 11
 | 
					 | 
				
			||||||
var Resultat = Chaine.indexOf(Sous_Chaine_2); //Retourne -1
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Pour r<>cup<75>rer l'indice la ligne s<>lectionn<6E>e :
 | 
					 | 
				
			||||||
 this.form.elements['liste'].selectedIndex
 | 
					 | 
				
			||||||
Pour r<>cup<75>rer le nombre de lignes :
 | 
					 | 
				
			||||||
 this.form.elements['liste'].options.length
 | 
					 | 
				
			||||||
Pour r<>cup<75>rer la valeur de la ligne s<>lectionn<6E>e :
 | 
					 | 
				
			||||||
 this.form.elements['liste'].options[this.form.elements['liste'].selectedIndex].value 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
En JavaScript, la structure d'un <20>l<EFBFBD>ment de type SELECT reprend ce sch<63>ma :
 | 
					 | 
				
			||||||
name 		Nom de la liste 	 
 | 
					 | 
				
			||||||
selectedIndex 	Indice de la ligne s<>lectionn<6E>e (ligne 1 : indice=0) 	
 | 
					 | 
				
			||||||
options 	Tableau des lignes 	 
 | 
					 | 
				
			||||||
length 		Nombre de lignes 	
 | 
					 | 
				
			||||||
   value 	Valeur d'une ligne 	
 | 
					 | 
				
			||||||
   text 	Libell<6C> d'une ligne
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<FORM>
 | 
					 | 
				
			||||||
    <INPUT type="text" name="zonedetexte" value="Valeur initiale">
 | 
					 | 
				
			||||||
    <INPUT type="button" value="Changer le contenu"
 | 
					 | 
				
			||||||
    onClick=' this.form.zonedetexte.value="NOUVEAU" '>
 | 
					 | 
				
			||||||
</FORM>
 | 
					 | 
				
			||||||
Gr<EFBFBD>ce <20> this.form, on peut acc<63>der au formulaire de l'<27>l<EFBFBD>ment en cours. 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
---------------------------------------------------------
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Pour donner le focus au champ texte du haut de cette page, il faut appeler la m<>thode focus() sur cet <20>l<EFBFBD>ment.
 | 
					 | 
				
			||||||
document.forms["general"].elements["champ1"].focus() 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Pour donner le focus <20> un champ de formulaire <20> l'ouverture de la page, il faut ajouter cette ligne dans la balise BODY :
 | 
					 | 
				
			||||||
onLoad="document.forms['nomduform'].elements['nomchamp'].focus()"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
--------------------------------------------------------
 | 
					 | 
				
			||||||
Pour manipuler les nombres en javascript, il faut utiliser l'objet Math.
 | 
					 | 
				
			||||||
abs()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
x=Math.abs(y);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
La m<>thode abs() renvoie la valeur absolue (valeur positive) de y. Il supprime en quelque sorte le signe n<>gatif d'un nombre.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
y = 4;
 | 
					 | 
				
			||||||
x = math.abs(y);
 | 
					 | 
				
			||||||
x = Math.abs(4);
 | 
					 | 
				
			||||||
x = math.abs(-4);
 | 
					 | 
				
			||||||
ont comme r<>sultat
 | 
					 | 
				
			||||||
x = 4
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
ceil()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
x=Math.ceil(y);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
La m<>thode ceil() renvoie l'entier sup<75>rieur ou <20>gal <20> y.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Attention ! Cette fonction n'arrondit pas le nombre.
 | 
					 | 
				
			||||||
Comme montr<74> dans l'exemple, si y = 1.01, la valeur de x sera mise <20> 2.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
y=1.01;
 | 
					 | 
				
			||||||
x=Math.ceil(y);
 | 
					 | 
				
			||||||
a comme r<>sultat 2.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
floor()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
x=Math.floor(y);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
La m<>thode floor() renvoie l'entier inf<6E>rieur ou <20>gal <20> y.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Attention ! Cette fonction n'arrondit pas le nombre.
 | 
					 | 
				
			||||||
Comme montr<74> dans l'exemple, si y = 1.99, la valeur de x sera mise <20> 1.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
y=1.999;
 | 
					 | 
				
			||||||
x=Math.floor(y);
 | 
					 | 
				
			||||||
a comme r<>sultat 1.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
round()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
x=Math.round(y);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
La m<>thode round() arrondit le nombre <20> l'entier le plus proche.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
y=20.355;
 | 
					 | 
				
			||||||
x=Math.round(y);
 | 
					 | 
				
			||||||
a comme r<>sultat
 | 
					 | 
				
			||||||
x=20;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Attention ! Certains calculs r<>clament une plus grande pr<70>cision. Pour avoir deux d<>cimales apr<70>s la virgule, on utilisera la formule :
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
x=(Math.round(y*100))/100;
 | 
					 | 
				
			||||||
et dans ce cas
 | 
					 | 
				
			||||||
x=20.36;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
max()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
x=Math.max(y,z);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
La m<>thode max(y,z) renvoie le plus grand des 2 nombres y et z.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
y=20; z=10;
 | 
					 | 
				
			||||||
x=Math.max(y,z);
 | 
					 | 
				
			||||||
a comme r<>sultat
 | 
					 | 
				
			||||||
x=20;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
min()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
x=Math.min(y,z);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
La m<>thode min(y,z) renvoie le plus petit des 2 nombres y et z.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
y=20; z=10;
 | 
					 | 
				
			||||||
x=Math.min(y,z);
 | 
					 | 
				
			||||||
a comme r<>sultat
 | 
					 | 
				
			||||||
x=10; 
 | 
					 | 
				
			||||||
@@ -1,37 +0,0 @@
 | 
				
			|||||||
stocker le nom d'utilisateur et le mot de passe dans la classe n'est pas une très bonne idée pour le code mis en
 | 
					 | 
				
			||||||
production ... Une bonne solution consiste a stocker les paramètres de connexion à la base de données dans un fichier
 | 
					 | 
				
			||||||
.ini et à en restreindre l'accès. Par exemple de cette façon:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
private static $serveur='mysql:host=localhost';
 | 
					 | 
				
			||||||
private static $bdd='dbname=gsb2021';
 | 
					 | 
				
			||||||
private static $user='root' ;
 | 
					 | 
				
			||||||
private static $mdp='root' ;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
gsb.ini:
 | 
					 | 
				
			||||||
[database]
 | 
					 | 
				
			||||||
driver = mysql
 | 
					 | 
				
			||||||
host = localhost
 | 
					 | 
				
			||||||
port = 3306
 | 
					 | 
				
			||||||
schema = gsb2021
 | 
					 | 
				
			||||||
username = root
 | 
					 | 
				
			||||||
password = root
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Database connection:
 | 
					 | 
				
			||||||
<?php
 | 
					 | 
				
			||||||
class MyPDO extends PDO
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    public function __construct($file = 'gsb.ini')
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        if (!$settings = parse_ini_file($file, TRUE))
 | 
					 | 
				
			||||||
            throw new exception('acces impossible ' . $file . '.');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        $dns = $settings['database']['driver'] .
 | 
					 | 
				
			||||||
            ':host=' . $settings['database']['host'] .
 | 
					 | 
				
			||||||
            ((!empty($settings['database']['port'])) ? (';port=' . $settings['database']['port']) : '') .
 | 
					 | 
				
			||||||
            ';dbname=' . $settings['database']['schema'];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        parent::__construct($dns, $settings['database']['username'], $settings['database']['password']);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
?>
 | 
					 | 
				
			||||||
@@ -1,632 +0,0 @@
 | 
				
			|||||||
<?php
 | 
					 | 
				
			||||||
/** derniere modification le 124/12/2023 à 09h40 par Pascal BLAIN (attention a la casse !)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 * Classe d'acces aux donnees. 
 | 
					 | 
				
			||||||
 * Utilise les services de la classe PDO pour l'application GSB
 | 
					 | 
				
			||||||
 * Les attributs sont tous statiques, les 4 premiers pour la connexion
 | 
					 | 
				
			||||||
 * $monPdo de type PDO 
 | 
					 | 
				
			||||||
 * $monPdoGsb qui contiendra l'unique instance de la classe
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 * @link       http://www.php.net/manual/fr/book.pdo.php
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class PdoGsb
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	private static $serveur = 'pgsql:host=localhost';
 | 
					 | 
				
			||||||
	private static $bdd = 'dbname=gsb2024';
 | 
					 | 
				
			||||||
	private static $user = 'postgres';
 | 
					 | 
				
			||||||
	private static $mdp = 'postgres';
 | 
					 | 
				
			||||||
	private static $monPdo;
 | 
					 | 
				
			||||||
	private static $monPdoGsb = null;
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Constructeur prive, cree l'instance de PDO qui sera sollicitee
 | 
					 | 
				
			||||||
	 * pour toutes les methodes de la classe
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	private function __construct()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo = new PDO(PdoGsb::$serveur . ';' . PdoGsb::$bdd, PdoGsb::$user, PdoGsb::$mdp);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		//PdoGsb::$monPdo->query("SET CHARACTER SET utf8");SET client_encoding = 'UTF8'; 
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	public function _destruct()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo = null;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Fonction statique qui cree l'unique instance de la classe
 | 
					 | 
				
			||||||
	 * Appel : $instancePdoGsb = PdoGsb::getPdoGsb();
 | 
					 | 
				
			||||||
	 * @return l'unique objet de la classe PdoGsb
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public static function getPdoGsb()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		if (PdoGsb::$monPdoGsb == null) {
 | 
					 | 
				
			||||||
			PdoGsb::$monPdoGsb = new PdoGsb();
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return PdoGsb::$monPdoGsb;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne les informations d'un utilisateur
 | 
					 | 
				
			||||||
	 * @param $login 
 | 
					 | 
				
			||||||
	 * @param $mdp
 | 
					 | 
				
			||||||
	 * @return l'id, le nom et le prenom sous la forme d'un tableau associatif 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getInfosUtilisateur($login, $mdp)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "select \"uId\" as id, \"uNom\" as nom, \"uPrenom\" as prenom, \"uStatut\" as statut
 | 
					 | 
				
			||||||
				from utilisateur
 | 
					 | 
				
			||||||
				where \"uLogin\"='$login' 
 | 
					 | 
				
			||||||
				and \"uMdp\"='$mdp'";
 | 
					 | 
				
			||||||
		$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		//echo $req;
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$ligne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $ligne;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne les informations de la table Visiteur
 | 
					 | 
				
			||||||
	 * @return un tableau associatif 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getLesVisiteurs()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne deux valeurs indiquant si un ajout de frais est possible
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @paral etatRemboursement
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getAjoutFraisPossible($idVisiteur, $leMois, $etatRemboursement)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$possible = array('forfait' => "non", 'horsForfait' => "non", 'modifComptable' => 'non');
 | 
					 | 
				
			||||||
		if ($_SESSION['statut'] == '1' && $etatRemboursement == 'CR') {
 | 
					 | 
				
			||||||
			$req = "select	count(*) as nbForfaits
 | 
					 | 
				
			||||||
				from	forfait 
 | 
					 | 
				
			||||||
				where	fId not in (select lfForfait
 | 
					 | 
				
			||||||
									from ligneForfait
 | 
					 | 
				
			||||||
									where lfVisiteur='$idVisiteur' 
 | 
					 | 
				
			||||||
									and lfMois = '$leMois')";
 | 
					 | 
				
			||||||
			//$req = $this->entourerNoms($req);									
 | 
					 | 
				
			||||||
			$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
			if ($rs === false) {
 | 
					 | 
				
			||||||
				afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
			if ($laLigne['nbForfaits'] == 0 ? $possible = array('forfait' => "non", 'horsForfait' => "oui", 'modifComptable' => 'non') : $possible = array('forfait' => "oui", 'horsForfait' => "oui", 'modifComptable' => 'non'))
 | 
					 | 
				
			||||||
				;
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			if ($_SESSION['statut'] != '1' && $etatRemboursement == 'CL') {
 | 
					 | 
				
			||||||
				$possible = array('forfait' => "non", 'horsForfait' => "non", 'modifComptable' => "oui");
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return $possible;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne les informations pour ajout d'un nouveau frais forfaitaire
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @return l'id, le libell, le montant sous la forme d'un tableau associatif 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getLesForfaitsPossibles()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "select	\"fId\", \"fLibelle\", \"fMontant\"
 | 
					 | 
				
			||||||
				from	forfait";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req); 
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$lesLignes = $rs->fetchAll();
 | 
					 | 
				
			||||||
		return $lesLignes;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne le tarif KM pour un motorisation et une puissance donnee a une date 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getPrixKm($idVisiteur, $leMois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$laDate = substr($leMois, 0, 4) . '-' . substr($leMois, 4, 2) . '-01';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $laLigne;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/** 
 | 
					 | 
				
			||||||
	 * Retourne sous forme d'un tableau associatif toutes les lignes de frais hors forfait concernees par les deux arguments
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @return tous les champs des lignes de frais hors forfait sous la forme d'un tableau associatif 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getLesFraisHorsForfait($idVisiteur, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$lesLignes = $rs->fetchAll();
 | 
					 | 
				
			||||||
		return $lesLignes;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getLesFraisReportes($idVisiteur, $mois, $justifies)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$lesLignes = $rs->fetchAll();
 | 
					 | 
				
			||||||
		return $lesLignes;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne le nombre de justificatif d'un Visiteurpour un mois donnee
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @return le nombre entier de justificatifs 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getNbjustificatifs($idVisiteur, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $laLigne['nb'];
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne le montant valide pour un remboursement (cumul des frais forfaitaires et des autres depenses (hors forfaits)
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @return le montant 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getMontantValide($idVisiteur, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		$montantValide = $laLigne['montant'];
 | 
					 | 
				
			||||||
		return $montantValide;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne sous forme d'un tableau associatif toutes les lignes de frais au forfait concernees par les deux arguments
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @return l'id, le libelle et la quantite sous la forme d'un tableau associatif 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getLesFraisForfait($idVisiteur, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$lesLignes = $rs->fetchAll();
 | 
					 | 
				
			||||||
		return $lesLignes;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Met a jour la table ligneForfait pour un Visiteur et un mois donne en enregistrant le nouveau montant
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @param $qte
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getUnFraisForfait($idVisiteur, $mois, $forfait)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "select lfVisiteur, lfMois, lfForfait, lfQuantite, lfMontant, fLibelle
 | 
					 | 
				
			||||||
				from ligneForfait inner join forfait on ligneForfait.lfForfait=forfait.fId
 | 
					 | 
				
			||||||
				where lfVisiteur= '$idVisiteur' 
 | 
					 | 
				
			||||||
				and lfMois = '$mois'
 | 
					 | 
				
			||||||
				and lfForfait = '$forfait'";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $laLigne;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Met a jour la table ligneForfait pour un Visiteur et un mois donne en enregistrant le nouveau montant
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @param $qte
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function majFraisForfait($idVisiteur, $mois, $forfait, $qte)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * supprime une ligneForfait pour un Visiteur et un mois donne 
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @param $forfait
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function supprimerFraisForfait($idVisiteur, $mois, $forfait)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = $req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * ajoute une ligne dans la table ligneForfait pour un Visiteur et un mois donne
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @param $forfait
 | 
					 | 
				
			||||||
	 * @param $qte
 | 
					 | 
				
			||||||
	 * @param $montant
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function ajoutFraisForfait($idVisiteur, $mois, $forfait, $qte, $montant)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Met a jour la table ligneForfait pour un Visiteur et un mois donne en enregistrant le nouveau montant
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @param $qte
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getUnFraisHorsForfait($idFrais)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = $req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $laLigne;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Met ajour la table ligneHorsForfait (nouvelles valeurs)
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function majFraisHorsForfait($idFrais, $date, $libelle, $montant)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$dateFr = dateFrancaisVersAnglais($date);
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Met a jour la table ligneHorsForfait pour report au mois suivant
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function transfertFraisHorsForfait($idFrais, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Cree un nouveau frais hors forfait pour un Visiteurun mois donne a partir des parametres
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @param $libelle : le libelle du frais
 | 
					 | 
				
			||||||
	 * @param $date : la date du frais au format français jj//mm/aaaa
 | 
					 | 
				
			||||||
	 * @param $montant : le montant
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function ajoutFraisHorsForfait($idVisiteur, $mois, $date, $libelle, $montant)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$dateFr = dateFrancaisVersAnglais($date);
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Supprime le frais hors forfait dont l'id est passe en argument 
 | 
					 | 
				
			||||||
	 * @param $idFrais 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function supprimerFraisHorsForfait($idFrais, $libelle)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne les mois pour lesquel un Visiteura une fiche de frais 
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @return un tableau associatif de clefs un mois -aaaamm- et de valeurs l'anne et le mois correspondant 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getLesMoisDisponibles($idVisiteur)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$tabMois = array('01' => "Janvier",
 | 
					 | 
				
			||||||
			'02' => "Février",
 | 
					 | 
				
			||||||
			'03' => "Mars",
 | 
					 | 
				
			||||||
			'04' => "Avril",
 | 
					 | 
				
			||||||
			'05' => "Mai",
 | 
					 | 
				
			||||||
			'06' => "Juin",
 | 
					 | 
				
			||||||
			'07' => "Juillet",
 | 
					 | 
				
			||||||
			'08' => "Août",
 | 
					 | 
				
			||||||
			'09' => "Septembre",
 | 
					 | 
				
			||||||
			'10' => "Octobre",
 | 
					 | 
				
			||||||
			'11' => "Novembre",
 | 
					 | 
				
			||||||
			'12' => "Décembre");
 | 
					 | 
				
			||||||
		$req = "select	\"rMois\" as mois 
 | 
					 | 
				
			||||||
				from 	remboursement 
 | 
					 | 
				
			||||||
				where	\"rVisiteur\"='$idVisiteur' ";
 | 
					 | 
				
			||||||
		if ($_SESSION['statut'] <> '1') {
 | 
					 | 
				
			||||||
			$req = $req . "and	\"rEtat\"<>'CR'";
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$req = $req . " order by \"rMois\" desc limit 12";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		$lesMois = array();
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		while ($laLigne != null) {
 | 
					 | 
				
			||||||
			$mois = $laLigne['mois'];
 | 
					 | 
				
			||||||
			$numAnnee = substr($mois, 0, 4);
 | 
					 | 
				
			||||||
			$numMois = $tabMois[substr($mois, 4, 2)];
 | 
					 | 
				
			||||||
			$lesMois["$mois"] = array("mois" => "$mois", "numAnnee" => "$numAnnee", "numMois" => "$numMois");
 | 
					 | 
				
			||||||
			$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return $lesMois;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function existeRemboursement($idVisiteur, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "select	count(*) as nb
 | 
					 | 
				
			||||||
				from	remboursement
 | 
					 | 
				
			||||||
				where	\"rVisiteur\"='$idVisiteur'
 | 
					 | 
				
			||||||
				and		\"rMois\"='$mois'";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $laLigne['nb'];
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getNbRemboursementsAValider()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1 as nb;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $laLigne['nb'];
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function creeNouveauRemboursement($idVisiteur, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne les informations d'une fiche de frais d'un Visiteur pour un mois donne
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 * @return un tableau avec des champs de jointure entre une fiche de frais et la ligne d'etat 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getInfosRemboursement($idVisiteur, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la lecture ..", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$laLigne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $laLigne;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Actualise le montant valide et le nb de justificatifs recus 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function valideRemboursement($idVisiteur, $mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$NbJustificatifs = $this->getNbjustificatifs($idVisiteur, $mois);
 | 
					 | 
				
			||||||
		$montantValide = $this->getMontantValide($idVisiteur, $mois);
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Modifie l'etat et la date de modification d'une fiche de frais
 | 
					 | 
				
			||||||
	 * Modifie le champ idEtat et met la date de modif a aujourd'hui
 | 
					 | 
				
			||||||
	 * @param $idVisiteur 
 | 
					 | 
				
			||||||
	 * @param $mois sous la forme aaaamm
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function majRemboursement($idVisiteur, $mois, $etat)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "update	remboursement set \"rEtat\" = '$etat', \"rDateModif\" = now() 
 | 
					 | 
				
			||||||
				where	\"rVisiteur\"='$idVisiteur' 
 | 
					 | 
				
			||||||
				and 	\"rMois\"='$mois'";
 | 
					 | 
				
			||||||
		PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Clos les fiches de frais
 | 
					 | 
				
			||||||
	 * Modifie le champ idEtat et met la date de modif a aujourd'hui
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function clotureMois($mois)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT 1;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		//PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Retourne les informations de la table TYPEPARAMETRE
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function getLesParametres()
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "SELECT \"tlId\", \"tlLibelle\", \"tlBooleen\", \"tlChoixMultiple\", \"tlCumul\"
 | 
					 | 
				
			||||||
					FROM \"typeParametre\"
 | 
					 | 
				
			||||||
					ORDER BY \"tlLibelle\";";
 | 
					 | 
				
			||||||
		$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$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\"
 | 
					 | 
				
			||||||
				FROM parametre
 | 
					 | 
				
			||||||
				WHERE \"pType\"='$type'
 | 
					 | 
				
			||||||
				ORDER by \"pIndice\";";
 | 
					 | 
				
			||||||
		//echo $req;
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la recherche des parametres dans la base de données.", $req, PdoGsb::$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, \"tlLibelle\", \"pPlancher\", \"pPlafond\"
 | 
					 | 
				
			||||||
						 FROM parametre INNER JOIN \"typeParametre\" ON \"typeParametre\".\"tlId\"=parametre.\"pType\"
 | 
					 | 
				
			||||||
						 WHERE pType='$type';";
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			$req = "SELECT \"pType\", \"pIndice\", \"pLibelle\", \"tlLibelle\", \"pPlancher\", \"pPlafond\"
 | 
					 | 
				
			||||||
						 FROM parametre INNER JOIN \"typeParametre\" ON \"typeParametre\".\"tlId\"=parametre.\"pType\"
 | 
					 | 
				
			||||||
						 WHERE \"pType\"='$type'
 | 
					 | 
				
			||||||
						 AND \"pIndice\" like '$valeur';";
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->query($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		$ligne = $rs->fetch();
 | 
					 | 
				
			||||||
		return $ligne;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Met a jour une ligne de la table PARAMETRE
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function majParametre($type, $valeur, $libelle, $territoire, $dep, $plancher, $plafond)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "UPDATE parametre SET \"pLibelle\"='$libelle', \"pPlancher\"=$plancher, \"pPlafond\"=$plafond
 | 
					 | 
				
			||||||
					WHERE \"pType\"='$type'
 | 
					 | 
				
			||||||
					AND \"pIndice\"=$valeur;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la mise a jour des parametres dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * supprime une ligne de la table PARAMETRE 
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function supprimeParametre($type, $valeur)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "DELETE 
 | 
					 | 
				
			||||||
				FROM parametre
 | 
					 | 
				
			||||||
				WHERE \"pType\"='$type'
 | 
					 | 
				
			||||||
				AND \"pIndice\"=$valeur;";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de la suppression d'un parametre dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * ajoute une ligne dans la table PARAMETRE
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public function ajoutParametre($type, $valeur, $libelle, $territoire, $dep, $plancher, $plafond)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$req = "INSERT INTO parametre 
 | 
					 | 
				
			||||||
					(\"pType\", \"pIndice\", \"pLibelle\", \"pPlancher\", \"pPlafond\") 
 | 
					 | 
				
			||||||
					VALUES ('$type', $valeur, '$libelle', $plancher, $plafond);";
 | 
					 | 
				
			||||||
		//$req = $this->entourerNoms($req);
 | 
					 | 
				
			||||||
		$rs = PdoGsb::$monPdo->exec($req);
 | 
					 | 
				
			||||||
		if ($rs === false) {
 | 
					 | 
				
			||||||
			afficherErreurSQL("Probleme lors de l'insertion d'un parametre dans la base de données.", $req, PdoGsb::$monPdo->errorInfo());
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Fonction pour entourer les noms de tables et de champs par des guillemets doubles
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	private function entourerNoms($requete)
 | 
					 | 
				
			||||||
	{
 | 
					 | 
				
			||||||
		$pattern = '/SELECT(.*?)[\n\r\s]FROM/i';
 | 
					 | 
				
			||||||
		echo 'le patron : ' . $pattern . ' la requete : ' . $requete;
 | 
					 | 
				
			||||||
		preg_match_all($pattern, $requete, $matches);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		if (isset($matches[1])) {
 | 
					 | 
				
			||||||
			var_dump($matches);
 | 
					 | 
				
			||||||
			foreach ($matches[1] as $match) {
 | 
					 | 
				
			||||||
				// Ajouter des guillemets doubles autour des noms de tables et de champs
 | 
					 | 
				
			||||||
				$noms_entoures = preg_replace_callback('/\b([A-Za-z_][A-Za-z0-9_]*)\b/', function ($match) {
 | 
					 | 
				
			||||||
					return '\"' . $match[0] . '\"';
 | 
					 | 
				
			||||||
				}, $match);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				$requete = str_replace($match, $noms_entoures, $requete);
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		//echo $requete;
 | 
					 | 
				
			||||||
		return $requete;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
?>
 | 
					 | 
				
			||||||
@@ -1,202 +0,0 @@
 | 
				
			|||||||
<?php
 | 
					 | 
				
			||||||
/** 
 | 
					 | 
				
			||||||
 * Fonctions pour l'application GSB
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 * @package default
 | 
					 | 
				
			||||||
 * @author PB et GM
 | 
					 | 
				
			||||||
 * @version    3.0 version MVC modifiee le 03/05/2023 à 11H01 par Blain Pascal
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 /**
 | 
					 | 
				
			||||||
 * Teste si un quelconque visiteur est connecté
 | 
					 | 
				
			||||||
 * @return vrai ou faux 
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
function estConnecte(){
 | 
					 | 
				
			||||||
  return isset($_SESSION['idUtilisateur']);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Enregistre dans une variable session les infos d'un visiteur
 | 
					 | 
				
			||||||
 * @param $idUtilisateur 
 | 
					 | 
				
			||||||
 * @param $idVisiteur  
 | 
					 | 
				
			||||||
 * @param $nom
 | 
					 | 
				
			||||||
 * @param $prenom
 | 
					 | 
				
			||||||
 * @param $typeUtilisateur
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
function connecter($id,$nom,$prenom,$statut){
 | 
					 | 
				
			||||||
	$_SESSION['idUtilisateur']= $id;
 | 
					 | 
				
			||||||
	$_SESSION['idVisiteur']= $id; 
 | 
					 | 
				
			||||||
	$_SESSION['nom']= $nom;
 | 
					 | 
				
			||||||
	$_SESSION['prenom']= $prenom;
 | 
					 | 
				
			||||||
	$_SESSION['statut']= $statut;
 | 
					 | 
				
			||||||
	if ($statut=='1') $_SESSION['typeUtilisateur'] = 'Visiteur';
 | 
					 | 
				
			||||||
	if ($statut=='2') $_SESSION['typeUtilisateur'] = 'Administrateur';
 | 
					 | 
				
			||||||
	if ($statut=='0') $_SESSION['typeUtilisateur'] = 'Comptable';
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 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){
 | 
					 | 
				
			||||||
	@list($jour,$mois,$annee) = explode('/',$maDate);
 | 
					 | 
				
			||||||
	return date('Y-m-d',mktime(0,0,0,$mois,$jour,$annee));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* 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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Verifie que le tableau de frais ne contient que des valeurs numeriques 
 | 
					 | 
				
			||||||
 * @param $lesFrais 
 | 
					 | 
				
			||||||
 * @return vrai ou faux
 | 
					 | 
				
			||||||
*/
 | 
					 | 
				
			||||||
function lesQteFraisValides($lesFrais){
 | 
					 | 
				
			||||||
	return estTableauEntiers($lesFrais);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Vérifie la validité des trois arguments : la date, le libellé du frais et le montant 
 | 
					 | 
				
			||||||
 * des message d'erreurs sont ajoutés au tableau des erreurs
 | 
					 | 
				
			||||||
 * @param $dateFrais 
 | 
					 | 
				
			||||||
 * @param $libelle 
 | 
					 | 
				
			||||||
 * @param $montant
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
function valideInfosFrais($dateFrais,$libelle,$montant){
 | 
					 | 
				
			||||||
	if($dateFrais==""){
 | 
					 | 
				
			||||||
		ajouterErreur("Le champ date ne doit pas etre vide");
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	else{
 | 
					 | 
				
			||||||
		if(!estDatevalide($dateFrais)){
 | 
					 | 
				
			||||||
			ajouterErreur("Date invalide");
 | 
					 | 
				
			||||||
		}	
 | 
					 | 
				
			||||||
		else{
 | 
					 | 
				
			||||||
			if(estDateDepassee($dateFrais)){
 | 
					 | 
				
			||||||
				ajouterErreur("date d'enregistrement du frais dépassé, plus de 1 an");
 | 
					 | 
				
			||||||
			}			
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if($libelle == ""){
 | 
					 | 
				
			||||||
		ajouterErreur("Le champ description ne peut pas etre vide");
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	if($montant == ""){
 | 
					 | 
				
			||||||
		ajouterErreur("Le champ montant ne peut pas etre vide");
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	else
 | 
					 | 
				
			||||||
		if( !is_numeric($montant) ){
 | 
					 | 
				
			||||||
			ajouterErreur("Le champ montant doit être numérique");
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * 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']);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
?>
 | 
					 | 
				
			||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
[database]
 | 
					 | 
				
			||||||
driver = mysql
 | 
					 | 
				
			||||||
host = localhost
 | 
					 | 
				
			||||||
port = 3306
 | 
					 | 
				
			||||||
schema = gsb2021
 | 
					 | 
				
			||||||
username = root
 | 
					 | 
				
			||||||
password = root	
 | 
					 | 
				
			||||||
							
								
								
									
										114
									
								
								include/menu.php
									
									
									
									
									
								
							
							
						
						
									
										114
									
								
								include/menu.php
									
									
									
									
									
								
							@@ -1,8 +1,20 @@
 | 
				
			|||||||
<div class="col-auto col-md-3 col-xl-2 px-sm-2 px-0 bg-dark">
 | 
					<div class="col-auto col-md-3 col-xl-2 px-sm-2 px-0 bg-dark">
 | 
				
			||||||
    <div class="d-flex flex-column align-items-center align-items-sm-start px-3 pt-2 text-white min-vh-100">
 | 
					    <div class="d-flex flex-column align-items-center align-items-sm-start px-3 pt-2 text-white ">
 | 
				
			||||||
        <a href="/" class="d-flex align-items-center pb-3 mb-md-0 me-md-auto text-white text-decoration-none">
 | 
					        <a href="/" class="d-flex align-items-center pb-3 mb-md-0 me-md-auto text-white text-decoration-none">
 | 
				
			||||||
            <span class="fs-5 d-none d-sm-inline">GSB LABORATOIRE</span>
 | 
					            <strong><span class="fs-5 d-none d-sm-inline">GSB LABORATOIRE</span></strong>
 | 
				
			||||||
        </a>
 | 
					        </a>
 | 
				
			||||||
 | 
					        <div class="dropdown pb-4">
 | 
				
			||||||
 | 
					            <a href="#" class="d-flex align-items-center text-white text-decoration-none dropdown-toggle"
 | 
				
			||||||
 | 
					                id="dropdownUser1" data-bs-toggle="dropdown" aria-expanded="false">
 | 
				
			||||||
 | 
					                <span class="d-none d-sm-inline mx-1">
 | 
				
			||||||
 | 
					                    <?= $_SESSION['uNom'] . ' (' . $_SESSION['uType'] . ')' ?>
 | 
				
			||||||
 | 
					                </span>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            </a>
 | 
				
			||||||
 | 
					            <ul class="dropdown-menu dropdown-menu-dark text-small shadow" aria-labelledby="dropdownUser1">
 | 
				
			||||||
 | 
					                <li><a class="dropdown-item" href="controleurs/c_deconnexion.php">Sign out</a></li>
 | 
				
			||||||
 | 
					            </ul>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
        <ul class="nav nav-pills flex-column mb-sm-auto mb-0 align-items-center align-items-sm-start" id="menu">
 | 
					        <ul class="nav nav-pills flex-column mb-sm-auto mb-0 align-items-center align-items-sm-start" id="menu">
 | 
				
			||||||
            <li class="nav-item">
 | 
					            <li class="nav-item">
 | 
				
			||||||
                <a href="index.php" class="nav-link align-middle px-0">
 | 
					                <a href="index.php" class="nav-link align-middle px-0">
 | 
				
			||||||
@@ -13,63 +25,55 @@
 | 
				
			|||||||
                Partie visiteur
 | 
					                Partie visiteur
 | 
				
			||||||
             -->
 | 
					             -->
 | 
				
			||||||
            <?php
 | 
					            <?php
 | 
				
			||||||
                if($_SESSION['uType'] == 'visiteur'):
 | 
					            if ($_SESSION['uType'] == 'visiteur'):
 | 
				
			||||||
            ?>
 | 
					                ?>
 | 
				
			||||||
            <li>
 | 
					                <li>
 | 
				
			||||||
                <a href="#submenu1" data-bs-toggle="collapse" class="nav-link px-0 align-middle">
 | 
					                    <a href="#submenu1" data-bs-toggle="collapse" class="nav-link px-0 align-middle">
 | 
				
			||||||
                    <i class="fs-4 bi-speedometer2"></i> <span class="ms-1 d-none d-sm-inline">Fiche de frais</span>
 | 
					                        <strong><i class="fs-4 bi-speedometer2"></i> <span class="ms-1 d-none d-sm-inline">Fiche de
 | 
				
			||||||
                </a>
 | 
					                                frais</span></strong>
 | 
				
			||||||
                <ul class="collapse show nav flex-column ms-1" id="submenu1" data-bs-parent="#menu">
 | 
					                    </a>
 | 
				
			||||||
                    <li class="w-100">
 | 
					                    <ul class="collapse show nav flex-column ms-1" id="submenu1" data-bs-parent="#menu">
 | 
				
			||||||
                        <a href="index.php?direction=gestionFiche" class="nav-link px-0"> <span class="d-none d-sm-inline">Gérer ses fiches</span>
 | 
					                        <li class="w-100">
 | 
				
			||||||
                        </a>
 | 
					                            <a href="index.php?direction=gestionFiche" class="nav-link px-0"> <span
 | 
				
			||||||
                    </li>
 | 
					                                    class="d-none d-sm-inline">Gérer ses fiches</span>
 | 
				
			||||||
                    <li>
 | 
					                            </a>
 | 
				
			||||||
                        <a href="index.php?direction=nouvelleFiche¤tList" class="nav-link px-0"> <span class="d-none d-sm-inline">Fiche du mois</span>
 | 
					                        </li>
 | 
				
			||||||
                        </a>
 | 
					                        <li>
 | 
				
			||||||
                    </li>
 | 
					                            <a href="index.php?direction=nouvelleFiche¤tList" class="nav-link px-0"> <span
 | 
				
			||||||
                </ul>
 | 
					                                    class="d-none d-sm-inline">Fiche du mois</span>
 | 
				
			||||||
            </li>
 | 
					                            </a>
 | 
				
			||||||
            <li>
 | 
					                        </li>
 | 
				
			||||||
                <a href="#" class="nav-link px-0 align-middle">
 | 
					                    </ul>
 | 
				
			||||||
                    <i class="fs-4 bi-table"></i> <span class="ms-1 d-none d-sm-inline">Visites</span></a>
 | 
					                </li>
 | 
				
			||||||
            </li>
 | 
					                <li>
 | 
				
			||||||
            <?php endif; if ($_SESSION['uType'] == 'comptable'): ?>
 | 
					                    <a href="#" class="nav-link px-0 align-middle">
 | 
				
			||||||
            <!-- 
 | 
					                        <strong><i class="fs-4 bi-table"></i> <span
 | 
				
			||||||
 | 
					                                class="ms-1 d-none d-sm-inline">Visites</span></a></strong>
 | 
				
			||||||
 | 
					                </li>
 | 
				
			||||||
 | 
					            <?php endif;
 | 
				
			||||||
 | 
					            if ($_SESSION['uType'] == 'comptable'): ?>
 | 
				
			||||||
 | 
					                <!-- 
 | 
				
			||||||
                Partie comptable
 | 
					                Partie comptable
 | 
				
			||||||
             -->
 | 
					             -->
 | 
				
			||||||
            <li>
 | 
					                <li>
 | 
				
			||||||
                <a href="#submenu2" data-bs-toggle="collapse" class="nav-link px-0 align-middle">
 | 
					                    <a href="#submenu2" data-bs-toggle="collapse" class="nav-link px-0 align-middle">
 | 
				
			||||||
                    <i class="fs-4 bi-speedometer2"></i> <span class="ms-1 d-none d-sm-inline">Fiche de frais</span>
 | 
					                        <i class="fs-4 bi-speedometer2"></i> <span class="ms-1 d-none d-sm-inline">Fiche de frais</span>
 | 
				
			||||||
                </a>
 | 
					                    </a>
 | 
				
			||||||
                <ul class="collapse show nav flex-column ms-1" id="submenu2" data-bs-parent="#menu">
 | 
					                    <ul class="collapse show nav flex-column ms-1" id="submenu2" data-bs-parent="#menu">
 | 
				
			||||||
                    <li class="w-100">
 | 
					                        <li class="w-100">
 | 
				
			||||||
                        <a href="index.php?direction=gestionFiche" class="nav-link px-0"> <span class="d-none d-sm-inline">A valider</span>
 | 
					                            <a href="index.php?direction=gestionFiche" class="nav-link px-0"> <span
 | 
				
			||||||
                        </a>
 | 
					                                    class="d-none d-sm-inline">A valider</span>
 | 
				
			||||||
                    </li>
 | 
					                            </a>
 | 
				
			||||||
                    <li>
 | 
					                        </li>
 | 
				
			||||||
                        <a href="index.php?direction=ficheAvalider" class="nav-link px-0"> <span class="d-none d-sm-inline">fiches a vérifier</span>
 | 
					                        <li>
 | 
				
			||||||
                        </a>
 | 
					                            <a href="index.php?direction=ficheAvalider" class="nav-link px-0"> <span
 | 
				
			||||||
                    </li>
 | 
					                                    class="d-none d-sm-inline">fiches a vérifier</span>
 | 
				
			||||||
                </ul>
 | 
					                            </a>
 | 
				
			||||||
            </li>
 | 
					                        </li>
 | 
				
			||||||
 | 
					                    </ul>
 | 
				
			||||||
 | 
					                </li>
 | 
				
			||||||
            <?php endif; ?>
 | 
					            <?php endif; ?>
 | 
				
			||||||
        </ul>
 | 
					        </ul>
 | 
				
			||||||
        <hr>
 | 
					        <hr>
 | 
				
			||||||
        <div class="dropdown pb-4">
 | 
					 | 
				
			||||||
            <a href="#" class="d-flex align-items-center text-white text-decoration-none dropdown-toggle"
 | 
					 | 
				
			||||||
                id="dropdownUser1" data-bs-toggle="dropdown" aria-expanded="false">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                <span class="d-none d-sm-inline mx-1">Nom</span>
 | 
					 | 
				
			||||||
            </a>
 | 
					 | 
				
			||||||
            <ul class="dropdown-menu dropdown-menu-dark text-small shadow" aria-labelledby="dropdownUser1">
 | 
					 | 
				
			||||||
                <li><a class="dropdown-item" href="#">Settings</a></li>
 | 
					 | 
				
			||||||
                <li><a class="dropdown-item" href="#">Profile</a></li>
 | 
					 | 
				
			||||||
                <li>
 | 
					 | 
				
			||||||
                    <hr class="dropdown-divider">
 | 
					 | 
				
			||||||
                </li>
 | 
					 | 
				
			||||||
                <li><a class="dropdown-item" href="controleurs/c_deconnexion.php">Sign out</a></li>
 | 
					 | 
				
			||||||
            </ul>
 | 
					 | 
				
			||||||
        </div>
 | 
					 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
							
								
								
									
										11
									
								
								index.php
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								index.php
									
									
									
									
									
								
							@@ -1,20 +1,9 @@
 | 
				
			|||||||
<?php
 | 
					<?php
 | 
				
			||||||
session_start();
 | 
					session_start();
 | 
				
			||||||
// ***************************************'
 | 
					 | 
				
			||||||
//  Le CASTEL-BTS SIO/ PROJET PPE4 GSB    '
 | 
					 | 
				
			||||||
//  Programme: index.php                  '
 | 
					 | 
				
			||||||
//  Objet    : Gestion des frais          '
 | 
					 | 
				
			||||||
//  Client   : laboratoires GSB           '
 | 
					 | 
				
			||||||
//  Version  : 3.0                        '
 | 
					 | 
				
			||||||
//  Date     : 03/05/2023 à 11H01         '
 | 
					 | 
				
			||||||
//  Auteur v1: pascal-blain@wanadoo.fr    '
 | 
					 | 
				
			||||||
//****************************************'
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
//require_once("include/fct.inc.php");
 | 
					 | 
				
			||||||
require_once("Class/class.pdo.php");
 | 
					require_once("Class/class.pdo.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$pdo = new PdoGsb();
 | 
					$pdo = new PdoGsb();
 | 
				
			||||||
$_SESSION['typeU'] = 'visiteur';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Direction si non renseigné et non connecté
 | 
					 * Direction si non renseigné et non connecté
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,352 +0,0 @@
 | 
				
			|||||||
/* Styles des divisions principales de la page : modifié le 4 janvier  par Pascal Blain*/
 | 
					 | 
				
			||||||
#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: -30px;
 | 
					 | 
				
			||||||
	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:150px;
 | 
					 | 
				
			||||||
	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: rgb(0,85,227);
 | 
					 | 
				
			||||||
	font-size: 16px; /*
 | 
					 | 
				
			||||||
	background-color:#D3D3D3;
 | 
					 | 
				
			||||||
	border-color: #696969 #DCDCDC #DCDCDC #696969; */
 | 
					 | 
				
			||||||
} 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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: 122px;
 | 
					 | 
				
			||||||
	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 : -100px;
 | 
					 | 
				
			||||||
	margin-left: -10px;
 | 
					 | 
				
			||||||
	padding: 0em;
 | 
					 | 
				
			||||||
	background-color:transparent;
 | 
					 | 
				
			||||||
	color: rgb(0,85,227);
 | 
					 | 
				
			||||||
	width: 160px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#contenu{
 | 
					 | 
				
			||||||
	border: none;
 | 
					 | 
				
			||||||
	padding: 1.3em;
 | 
					 | 
				
			||||||
	background-color: white;
 | 
					 | 
				
			||||||
	border-left :  groove 0.8em #980101;
 | 
					 | 
				
			||||||
  	margin-top : 1.2em;
 | 
					 | 
				
			||||||
	margin-left: 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 #logoGSB {
 | 
					 | 
				
			||||||
  float : left;
 | 
					 | 
				
			||||||
  width : 191px;
 | 
					 | 
				
			||||||
  height : 122px;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
button{
 | 
					 | 
				
			||||||
  width : 60px;
 | 
					 | 
				
			||||||
  height : 30px;
 | 
					 | 
				
			||||||
  text-align:center;
 | 
					 | 
				
			||||||
  vertical-align:middle;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
input:hover, textarea:hover, select:hover{
 | 
					 | 
				
			||||||
  background-color : #FAFAE6;
 | 
					 | 
				
			||||||
  cursor : pointer;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/*  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.3em;
 | 
					 | 
				
			||||||
   border-collapse : collapse;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Style pour les lignes d'en-tête des tableaux */
 | 
					 | 
				
			||||||
#contenu th {  
 | 
					 | 
				
			||||||
   background-color:#77AADD;
 | 
					 | 
				
			||||||
   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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#contenu h3 {
 | 
					 | 
				
			||||||
    font-size : 1.2em;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
table.listeLegere {
 | 
					 | 
				
			||||||
    margin-bottom : 0.5em;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* 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.5em;
 | 
					 | 
				
			||||||
  vertical-align : top;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
table.listeLegere caption {
 | 
					 | 
				
			||||||
  font-size : 1.1em;
 | 
					 | 
				
			||||||
  text-align : left;
 | 
					 | 
				
			||||||
  margin-bottom : 0.3em;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
table.listeLegere td {
 | 
					 | 
				
			||||||
  vertical-align:top;
 | 
					 | 
				
			||||||
  font-weight:normal;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
table.listeLegere th.eltForfait{
 | 
					 | 
				
			||||||
  width:320px;
 | 
					 | 
				
			||||||
  color:black;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
table.listeLegere th.date, table.listeLegere th.montant{
 | 
					 | 
				
			||||||
  width:70px;
 | 
					 | 
				
			||||||
  color:black;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
table.listeLegere th.libelle{
 | 
					 | 
				
			||||||
  width:405px;
 | 
					 | 
				
			||||||
  color:black;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#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;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -1,4 +1,32 @@
 | 
				
			|||||||
<h4>BONJOUR VOUS ETES <?= strtoupper($_SESSION['uType']) ?></h4>
 | 
					<h4>BONJOUR VOUS ETES
 | 
				
			||||||
<?php
 | 
					    <?= strtoupper($_SESSION['uType']) ?>
 | 
				
			||||||
 | 
					</h4>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var_dump($_SESSION);
 | 
					<div class="card">
 | 
				
			||||||
 | 
					    <div class="card-header">
 | 
				
			||||||
 | 
					        Profil de l'utilisateur
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div class="card-body">
 | 
				
			||||||
 | 
					        <div class="form-group">
 | 
				
			||||||
 | 
					            <label for="type">Type:</label>
 | 
				
			||||||
 | 
					            <input type="text" class="form-control" id="type" value="<?= $_SESSION['uType'] ?>" readonly>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="form-group">
 | 
				
			||||||
 | 
					            <label for="nom">Nom:</label>
 | 
				
			||||||
 | 
					            <input type="text" class="form-control" id="nom" value="<?= $_SESSION['uPrenom'] ?>" readonly>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="form-group">
 | 
				
			||||||
 | 
					            <label for="prenom">Prénom:</label>
 | 
				
			||||||
 | 
					            <input type="text" class="form-control" id="prenom" value="<?= $_SESSION['uNom'] ?>" readonly>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="form-group">
 | 
				
			||||||
 | 
					            <label for="secteur">Secteur:</label>
 | 
				
			||||||
 | 
					            <input type="text" class="form-control" id="secteur" value="<?= $_SESSION['uLabo'] ?>" readonly>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <div class="form-group">
 | 
				
			||||||
 | 
					            <label for="secteur">Adresse:</label>
 | 
				
			||||||
 | 
					            <input type="text" class="form-control" id="secteur"
 | 
				
			||||||
 | 
					                value="<?= $_SESSION['uAdresse'] . ' ' . $_SESSION['uCp'] . ' ' . $_SESSION['uVille'] ?>" readonly>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,6 +86,9 @@
 | 
				
			|||||||
                        <?= $value['lhMontant'] ?> €
 | 
					                        <?= $value['lhMontant'] ?> €
 | 
				
			||||||
                    </td>
 | 
					                    </td>
 | 
				
			||||||
                    <td>
 | 
					                    <td>
 | 
				
			||||||
 | 
					                        <?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        ?>
 | 
				
			||||||
                        <?= $value['lhJustificatif'] == 1 ? 'ok' : 'non fournis' ?>
 | 
					                        <?= $value['lhJustificatif'] == 1 ? 'ok' : 'non fournis' ?>
 | 
				
			||||||
                    </td>
 | 
					                    </td>
 | 
				
			||||||
                    <td>
 | 
					                    <td>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +0,0 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
<!-- 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ée Le Castel à Dijon - BTS SIO - <img src='images/copyleft.png' style='text-align: center; vertical-align: middle;'> 03/05/2023 Blain Pascal";?></p> 
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
  </body>
 | 
					 | 
				
			||||||
</html>
 | 
					 | 
				
			||||||
@@ -1,60 +0,0 @@
 | 
				
			|||||||
<!-- Derniere modification le 03/05/2023 à 11H01 à 15H11 -->
 | 
					 | 
				
			||||||
<div id="contenu">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<?php
 | 
					 | 
				
			||||||
 	if ($_REQUEST['action']=="supprimer") 
 | 
					 | 
				
			||||||
		{echo '<h2>SUPPRESSION D\'UN FRAIS FORFAITAIRE</h2>';
 | 
					 | 
				
			||||||
		echo '<form name="unFraisForfaitaire" action="index.php?uc=gererFraisForfaitaire&action=validerSupprimer&forfait='.$unForfait['lfForfait'].'" method="POST">';} 
 | 
					 | 
				
			||||||
	else 
 | 
					 | 
				
			||||||
		{echo '<h2>EDITION D\'UN FRAIS FORFAITAIRE</h2>';
 | 
					 | 
				
			||||||
		echo '<form name="unFraisForfaitaire" action="index.php?uc=gererFraisForfaitaire&action=validerModifier&forfait='.$unForfait['lfForfait'].'" method="POST">';}
 | 
					 | 
				
			||||||
?>	
 | 
					 | 
				
			||||||
		<table class="listeLegere">
 | 
					 | 
				
			||||||
			<thead>
 | 
					 | 
				
			||||||
				<tr>
 | 
					 | 
				
			||||||
					<th class="date">Quantité</th>
 | 
					 | 
				
			||||||
					<th class="eltForfait">Nature de la dépense</th>
 | 
					 | 
				
			||||||
					<th class="montant">Prix</th>
 | 
					 | 
				
			||||||
					<th class="montant">Montant</th>
 | 
					 | 
				
			||||||
				</tr>
 | 
					 | 
				
			||||||
			</thead>
 | 
					 | 
				
			||||||
			<tbody>
 | 
					 | 
				
			||||||
				<tr>
 | 
					 | 
				
			||||||
					<td><input type="text" name="zQte" onkeyup="calculer()" style="text-align:right;border: 0;" value="<?php echo $unForfait['lfQuantite'].'"';if ($_REQUEST['action']=="supprimer") {echo ' disabled';}?>>
 | 
					 | 
				
			||||||
					<input type="hidden" name="zMois" value="<?php echo $leMois; ?>"></td>
 | 
					 | 
				
			||||||
					<td><input type="text" name="zForfait" value="<?php echo $unForfait['fLibelle']; ?>" style="text-align:left;border: 0;" disabled></td>
 | 
					 | 
				
			||||||
					<td><input type="text" name="zPrix" value="<?php echo number_format($unForfait['lfMontant'],2,',','.'); ?>" style="text-align:right;border: 0;" disabled></td>
 | 
					 | 
				
			||||||
					<td><input type="text" name="zMontant"  value="<?php echo number_format($unForfait['lfQuantite']*$unForfait['lfMontant'],2,',','.'); ?>" style="text-align:right;border: 0;" disabled></td>
 | 
					 | 
				
			||||||
				</tr>
 | 
					 | 
				
			||||||
			</tbody>
 | 
					 | 
				
			||||||
		</table>
 | 
					 | 
				
			||||||
		<p align="right"><input type="image" id="zValider" alt="Oui" src="images/valider.jpg" onclick="valider()"><input type="image" name="zAnnuler" alt="Non" src="images/annuler.jpg" onclick="annuler()"></p>
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
	</form>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	<script src="include/proceduresJava.js" type="text/javascript"></script>
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
	<script type="text/javascript">
 | 
					 | 
				
			||||||
		function calculer()
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			if (!isNaN(document.unFraisForfaitaire.zQte.value)) {document.unFraisForfaitaire.zMontant.value=(parseFloat(document.unFraisForfaitaire.zPrix.value)*parseInt(document.unFraisForfaitaire.zQte.value))};
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		function valider()
 | 
					 | 
				
			||||||
		{	
 | 
					 | 
				
			||||||
			document.unFraisForfaitaire.zQte.disabled=false;
 | 
					 | 
				
			||||||
			document.unFraisForfaitaire.submit();
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		function annuler()
 | 
					 | 
				
			||||||
		{
 | 
					 | 
				
			||||||
			document.unFraisForfaitaire.zQte.disabled=false;
 | 
					 | 
				
			||||||
			document.unFraisForfaitaire.zQte.value=0;
 | 
					 | 
				
			||||||
			document.unFraisForfaitaire.submit();
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		window.onload = function() { calculer(); };		
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
	</script>
 | 
					 | 
				
			||||||
@@ -1,55 +0,0 @@
 | 
				
			|||||||
<!-- Derniere modification le 03/05/2023 à 11H01 -->
 | 
					 | 
				
			||||||
<div id="contenu">
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
<?php
 | 
					 | 
				
			||||||
 	if ($_REQUEST['action']=="supprimer") 
 | 
					 | 
				
			||||||
		{echo '<h2>SUPPRESSION D\'UN FRAIS HORS FORFAIT</h2>';
 | 
					 | 
				
			||||||
		echo '
 | 
					 | 
				
			||||||
	<form name="unFraisHorsForfait" action="index.php?uc=gererFraisHorsForfait&action=validerSupprimer&idFrais='.$unFrais['lhId'].'" method="POST">';} 
 | 
					 | 
				
			||||||
	else 
 | 
					 | 
				
			||||||
		{echo '<h2>EDITION D\'UN FRAIS HORS FORFAIT</h2>';
 | 
					 | 
				
			||||||
		echo '
 | 
					 | 
				
			||||||
	<form name="unFraisHorsForfait" action="index.php?uc=gererFraisHorsForfait&action=validerModifier&idFrais='.$unFrais['lhId'].'" method="POST">';}
 | 
					 | 
				
			||||||
?>	
 | 
					 | 
				
			||||||
		<table class="listeLegere">
 | 
					 | 
				
			||||||
			<thead>
 | 
					 | 
				
			||||||
				<tr>
 | 
					 | 
				
			||||||
					<th class="date">Date</th>
 | 
					 | 
				
			||||||
					<th class="eltForfait">Nature de la dépense</th>
 | 
					 | 
				
			||||||
					<th class="montant">Montant</th>
 | 
					 | 
				
			||||||
				</tr>
 | 
					 | 
				
			||||||
			</thead>
 | 
					 | 
				
			||||||
			<tbody>
 | 
					 | 
				
			||||||
				<tr>
 | 
					 | 
				
			||||||
					<!-- insérer ici votre code -->
 | 
					 | 
				
			||||||
				</tr>
 | 
					 | 
				
			||||||
			</tbody>
 | 
					 | 
				
			||||||
		</table>
 | 
					 | 
				
			||||||
		<p align="right">
 | 
					 | 
				
			||||||
<?php  	if ($_REQUEST['action']=="supprimer" and $_SESSION['statut']!="1")  {echo '
 | 
					 | 
				
			||||||
 			Si vous confirmez votre choix, la dépense invalidée sera marquée "REFUSEE")';} ?>
 | 
					 | 
				
			||||||
			<input type="image" id="zValider" alt="Oui" src="images/valider.jpg" onclick="valider()">
 | 
					 | 
				
			||||||
			<input type="image" name="zAnnuler" alt="Non" src="images/annuler.jpg" onclick="annuler()">
 | 
					 | 
				
			||||||
		</p>
 | 
					 | 
				
			||||||
				
 | 
					 | 
				
			||||||
	</form>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
</div>
 | 
					 | 
				
			||||||
	
 | 
					 | 
				
			||||||
<script type="text/javascript">
 | 
					 | 
				
			||||||
		function valider()
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			document.unFraisHorsForfait.zMontant.disabled=false;
 | 
					 | 
				
			||||||
			document.unFraisHorsForfait.zLibelle.disabled=false;
 | 
					 | 
				
			||||||
			document.unFraisHorsForfait.submit();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
		function annuler()
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
			document.unFraisHorsForfait.zMontant.disabled=false;
 | 
					 | 
				
			||||||
			document.unFraisHorsForfait.zMontant.value=0;
 | 
					 | 
				
			||||||
			document.unFraisHorsForfait.submit();
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
		
 | 
					 | 
				
			||||||
</script>
 | 
					 | 
				
			||||||
<!-- fin -->
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user