Premier commit
This commit is contained in:
149
include/aide javascript.txt
Normal file
149
include/aide javascript.txt
Normal file
@@ -0,0 +1,149 @@
|
||||
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;
|
34
include/appelIni.php
Normal file
34
include/appelIni.php
Normal file
@@ -0,0 +1,34 @@
|
||||
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']);
|
||||
}
|
||||
}
|
||||
?>
|
632
include/class.pdogsb.php
Normal file
632
include/class.pdogsb.php
Normal file
@@ -0,0 +1,632 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
||||
?>
|
202
include/fct.inc.php
Normal file
202
include/fct.inc.php
Normal file
@@ -0,0 +1,202 @@
|
||||
<?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']);
|
||||
}
|
||||
}
|
||||
?>
|
7
include/gsb.ini
Normal file
7
include/gsb.ini
Normal file
@@ -0,0 +1,7 @@
|
||||
[database]
|
||||
driver = mysql
|
||||
host = localhost
|
||||
port = 3306
|
||||
schema = gsb2021
|
||||
username = root
|
||||
password = root
|
71
include/menu.php
Normal file
71
include/menu.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<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">
|
||||
<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>
|
||||
</a>
|
||||
<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">
|
||||
<a href="../index.php" class="nav-link align-middle px-0">
|
||||
<i class="fs-4 bi-house"></i> <span class="ms-1 d-none d-sm-inline">Home</span>
|
||||
</a>
|
||||
</li>
|
||||
<!--
|
||||
Partie visiteur
|
||||
-->
|
||||
<li>
|
||||
<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>
|
||||
</a>
|
||||
<ul class="collapse show nav flex-column ms-1" id="submenu1" data-bs-parent="#menu">
|
||||
<li class="w-100">
|
||||
<a href="vues/v_gestionFiches.php" class="nav-link px-0"> <span class="d-none d-sm-inline">Gérer ses fiches</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="nav-link px-0"> <span class="d-none d-sm-inline">Nouvelle Fiche</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<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>
|
||||
</li>
|
||||
|
||||
<!--
|
||||
Partie comptable
|
||||
-->
|
||||
<li>
|
||||
<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>
|
||||
</a>
|
||||
<ul class="collapse show nav flex-column ms-1" id="submenu2" data-bs-parent="#menu">
|
||||
<li class="w-100">
|
||||
<a href="#" class="nav-link px-0"> <span class="d-none d-sm-inline">A valider</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#" class="nav-link px-0"> <span class="d-none d-sm-inline">Historique</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<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="#">Sign out</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
100
include/proceduresJava.js
Normal file
100
include/proceduresJava.js
Normal file
@@ -0,0 +1,100 @@
|
||||
if(document.images) /* PRECHARGEMENT DE L IMAGE DANS LE CACHE DU NAVIGATEUR */
|
||||
{
|
||||
zTous = new Image;
|
||||
zTous = "images/cocheR.gif";
|
||||
}
|
||||
|
||||
function format_euro(valeur)
|
||||
{
|
||||
// formate un nombre avec 2 chiffres apr<70>s la virgule et un espace separateur de milliers
|
||||
var ndecimal=2;
|
||||
var separateur=' ';
|
||||
var deci=Math.round( Math.pow(10,ndecimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur)))) ;
|
||||
var val=Math.floor(Math.abs(valeur));
|
||||
if ((ndecimal==0)||(deci==Math.pow(10,ndecimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
|
||||
var val_format=val+"";
|
||||
var nb=val_format.length;
|
||||
for (var i=1;i<4;i++)
|
||||
{
|
||||
if (val>=Math.pow(10,(3*i)))
|
||||
{
|
||||
val_format=val_format.substring(0,nb-(3*i))+separateur+val_format.substring(nb-(3*i));
|
||||
}
|
||||
}
|
||||
if (ndecimal>0)
|
||||
{
|
||||
var decim="";
|
||||
for (var j=0;j<(ndecimal-deci.toString().length);j++) {decim+="0";}
|
||||
deci=decim+deci.toString();
|
||||
val_format=val_format+","+deci;
|
||||
}
|
||||
if (parseFloat(valeur)<0) {val_format="-"+val_format;}
|
||||
return val_format;
|
||||
}
|
||||
|
||||
// ========================= fonctions de navigation dans les listes (mois/visiteurs)
|
||||
function premier(statut)
|
||||
{
|
||||
if (statut=='V') {
|
||||
document.choixM.lstMois.value = document.choixM.lstMois.options[0].value;
|
||||
document.choixM.submit();}
|
||||
else {
|
||||
document.choixV.lstVisiteurs.value = document.choixV.lstVisiteurs.options[0].value;
|
||||
document.choixV.submit();}
|
||||
}
|
||||
|
||||
function precedent(statut)
|
||||
{
|
||||
if (statut=='V') {
|
||||
document.choixM.lstMois.value = document.choixM.lstMois.options[Math.max(0,document.choixM.lstMois.selectedIndex-1)].value;
|
||||
document.choixM.submit(statut);}
|
||||
else {
|
||||
document.choixV.lstVisiteurs.value = document.choixV.lstVisiteurs.options[Math.max(0,document.choixV.lstVisiteurs.selectedIndex-1)].value;
|
||||
document.choixV.submit();}
|
||||
}
|
||||
|
||||
function suivant(statut)
|
||||
{
|
||||
if (statut=='V') {
|
||||
document.choixM.lstMois.value = document.choixM.lstMois.options[(Math.min((document.choixM.lstMois.options.length-1),document.choixM.lstMois.selectedIndex+1))].value;
|
||||
document.choixM.submit();}
|
||||
else {
|
||||
document.choixV.lstVisiteurs.value = document.choixV.lstVisiteurs.options[(Math.min((document.choixV.lstVisiteurs.options.length-1),document.choixV.lstVisiteurs.selectedIndex+1))].value;
|
||||
document.choixV.submit();}
|
||||
}
|
||||
|
||||
function dernier(statut)
|
||||
{
|
||||
if (statut=='V') {
|
||||
document.choixM.lstMois.value = document.choixM.lstMois.options[(document.choixM.lstMois.options.length-1)].value;
|
||||
document.choixM.submit();}
|
||||
else {
|
||||
document.choixV.lstVisiteurs.value = document.choixV.lstVisiteurs.options[(document.choixV.lstVisiteurs.options.length-1)].value;
|
||||
document.choixV.submit();}
|
||||
}
|
||||
|
||||
// ========================= acivation/desactivation des cases a cocher "justificatifs" pour les frais hors forfaits
|
||||
function tousLesJustificatifs(frm)
|
||||
{
|
||||
inputs = frm.getElementsByTagName("input");
|
||||
var sens = frm.zSens.value;
|
||||
for(i=0 ; i<inputs.length ; i++)
|
||||
{
|
||||
if(inputs[i].type=="checkbox")
|
||||
{
|
||||
if (sens=="off") {inputs[i].checked = true;} else {inputs[i].checked = false;};
|
||||
}
|
||||
|
||||
}
|
||||
if (sens=="off") {frm.zSens.value="on";} else {frm.zSens.value="off";}
|
||||
}
|
||||
|
||||
function tousLesJustificatifs2(frm)
|
||||
{
|
||||
var sens = frm.zSens.value;
|
||||
for (i = 0; i < frm.justificatifs.length; i++)
|
||||
{
|
||||
if (sens=="off") {frm.justificatifs[i].checked = true;} else {frm.justificatifs[i].checked = false;};
|
||||
}
|
||||
if (sens=="off") {frm.zSens.value="on";} else {frm.zSens.value="off";}
|
||||
}
|
Reference in New Issue
Block a user