reglages de bug

This commit is contained in:
pierre renaudot 2024-01-11 15:49:42 +01:00
parent af3771e786
commit c5796a4bf2
19 changed files with 108 additions and 1647 deletions

View File

@ -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

View File

@ -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';

View File

@ -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"

View File

@ -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;
}
}
?>
*/

View File

@ -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");

View File

@ -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');

View File

@ -1,149 +0,0 @@
http://www.toutjavascript.com/savoir/savoir06_2.php3
En javascript, la concaténation se fait avec le caractère plus (+) ou bien grace à la méthode concat().
Dans les deux exemples ci-dessous, la variable chaîne 3 contient la chaîne "Bonjour tout le monde" :
var chaine1 = "Bonjour ";
var chaine2 = "tout le monde";
var chaine3 = chaine1+chaine2;
L'exemple ci-dessus est équivalent à l'exemple suivant :
var chaine1 = "Bonjour ";
var chaine2 = "tout le monde";
var chaine3 = chaine1.concat(chaine2);
---------------------------------------------------------
indexOf: Retourne la position d'une sous-chaîne (lettre ou groupe de lettres) dans une chaîne de caractère, en effectuant la recherche de gauche à droite, à partir de la position spécifiée en paramètre. Retourne -1 si la sous-chaîne n'est pas trouvée dans la chaîne principale.
var Chaine = 'Comment ç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érer l'indice la ligne sélectionnée :
this.form.elements['liste'].selectedIndex
Pour récupérer le nombre de lignes :
this.form.elements['liste'].options.length
Pour récupérer la valeur de la ligne sélectionnée :
this.form.elements['liste'].options[this.form.elements['liste'].selectedIndex].value
En JavaScript, la structure d'un élément de type SELECT reprend ce schéma :
name Nom de la liste
selectedIndex Indice de la ligne sélectionnée (ligne 1 : indice=0)
options Tableau des lignes
length Nombre de lignes
value Valeur d'une ligne
text Libellé 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âce à this.form, on peut accéder au formulaire de l'élément en cours.
---------------------------------------------------------
Pour donner le focus au champ texte du haut de cette page, il faut appeler la méthode focus() sur cet élément.
document.forms["general"].elements["champ1"].focus()
Pour donner le focus à un champ de formulaire à 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érieur ou égal à y.
Attention ! Cette fonction n'arrondit pas le nombre.
Comme montré dans l'exemple, si y = 1.01, la valeur de x sera mise à 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érieur ou égal à y.
Attention ! Cette fonction n'arrondit pas le nombre.
Comme montré dans l'exemple, si y = 1.99, la valeur de x sera mise à 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 à 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écision. Pour avoir deux décimales aprè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;

View File

@ -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']);
}
}
?>

View File

@ -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&eacute;vrier",
'03' => "Mars",
'04' => "Avril",
'05' => "Mai",
'06' => "Juin",
'07' => "Juillet",
'08' => "Ao&ucirc;t",
'09' => "Septembre",
'10' => "Octobre",
'11' => "Novembre",
'12' => "D&eacute;cembre");
$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&eacute;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&eacute;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&eacute;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&eacute;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&eacute;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&eacute;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;
}
}
?>

View File

@ -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&eacute;pass&eacute;, 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&eacute;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']);
}
}
?>

View File

@ -1,7 +0,0 @@
[database]
driver = mysql
host = localhost
port = 3306
schema = gsb2021
username = root
password = root

View File

@ -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">
@ -17,24 +29,29 @@
?> ?>
<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
frais</span></strong>
</a> </a>
<ul class="collapse show nav flex-column ms-1" id="submenu1" data-bs-parent="#menu"> <ul class="collapse show nav flex-column ms-1" id="submenu1" 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">Gérer ses fiches</span> <a href="index.php?direction=gestionFiche" class="nav-link px-0"> <span
class="d-none d-sm-inline">Gérer ses fiches</span>
</a> </a>
</li> </li>
<li> <li>
<a href="index.php?direction=nouvelleFiche&currentList" class="nav-link px-0"> <span class="d-none d-sm-inline">Fiche du mois</span> <a href="index.php?direction=nouvelleFiche&currentList" class="nav-link px-0"> <span
class="d-none d-sm-inline">Fiche du mois</span>
</a> </a>
</li> </li>
</ul> </ul>
</li> </li>
<li> <li>
<a href="#" class="nav-link px-0 align-middle"> <a href="#" class="nav-link px-0 align-middle">
<i class="fs-4 bi-table"></i> <span class="ms-1 d-none d-sm-inline">Visites</span></a> <strong><i class="fs-4 bi-table"></i> <span
class="ms-1 d-none d-sm-inline">Visites</span></a></strong>
</li> </li>
<?php endif; if ($_SESSION['uType'] == 'comptable'): ?> <?php endif;
if ($_SESSION['uType'] == 'comptable'): ?>
<!-- <!--
Partie comptable Partie comptable
--> -->
@ -44,11 +61,13 @@
</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
class="d-none d-sm-inline">A valider</span>
</a> </a>
</li> </li>
<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> <a href="index.php?direction=ficheAvalider" class="nav-link px-0"> <span
class="d-none d-sm-inline">fiches a vérifier</span>
</a> </a>
</li> </li>
</ul> </ul>
@ -56,20 +75,5 @@
<?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>

View File

@ -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é

View File

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

View File

@ -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>

View File

@ -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>

View File

@ -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&eacute;e Le Castel &agrave; Dijon - BTS SIO - <img src='images/copyleft.png' style='text-align: center; vertical-align: middle;'> 03/05/2023 Blain Pascal";?></p>
</div>
</body>
</html>

View File

@ -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&eacute;</th>
<th class="eltForfait">Nature de la d&eacute;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>

View File

@ -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&eacute;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&eacute;pense invalid&eacute;e sera marqu&eacute;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 -->