197 lines
7.4 KiB
PHP
197 lines
7.4 KiB
PHP
<?php
|
|
/**
|
|
* @author :Pascal BLAIN, lycee le castel à Dijon
|
|
* @version :2022-03-09
|
|
* Classe d'acces aux donnees. Utilise les services de la classe PDO pour l'application
|
|
* Les attributs sont tous statiques, les 4 premiers pour la connexion
|
|
* $monPdo est de type PDO - $monPdoBD contient l'unique instance de la classe
|
|
* @link http://www.php.net/manual/fr/book.pdo.php
|
|
*/
|
|
|
|
class PdoBD
|
|
{
|
|
private static $serveur='mysql:host=localhost';
|
|
private static $bdd='dbname=gsb2022';
|
|
private static $user='gsbadmn';
|
|
private static $mdp='gsbadmn';
|
|
private static $monPdo;
|
|
private static $monPdoBD=null;
|
|
|
|
private function __construct()
|
|
{
|
|
PdoBD::$monPdo = new PDO(PdoBD::$serveur.';'.PdoBD::$bdd, PdoBD::$user, PdoBD::$mdp);
|
|
PdoBD::$monPdo->query("SET CHARACTER SET utf8");
|
|
}
|
|
public function _destruct()
|
|
{
|
|
PdoBD::$monPdo = null;
|
|
}
|
|
/**
|
|
* Fonction statique qui cree l'unique instance de la classe PdoBD
|
|
*/
|
|
public static function getPdoBD()
|
|
{
|
|
if(PdoBD::$monPdoBD==null) {PdoBD::$monPdoBD= new PdoBD();}
|
|
return PdoBD::$monPdoBD;
|
|
}
|
|
|
|
/** ---------------------------------------------- module Connexion
|
|
*
|
|
* dernière modif le : 09/03/2022 par Pascal Blain
|
|
* Retourne les informations d'un utilisateur sous la forme d'un tableau associatif
|
|
*/
|
|
public function getInfosUtilisateur($login,$mdp)
|
|
{
|
|
$req = "SELECT uId,uNom,uPrenom,uLogin,uMdp,uAdresse,uCP,uVille,uDateEmbauche,uSecteur,uStatut,uRegion,
|
|
st.pLibelle as wStatut,s.pLibelle as wSecteur,r.pLibelle as wRegion,uLabo,lNom
|
|
FROM utilisateur
|
|
INNER JOIN parametre st ON (st.pType='statUti' AND st.pIndice=uStatut)
|
|
INNER JOIN parametre r ON (r.pType='region' AND r.pIndice=uRegion)
|
|
INNER JOIN parametre s ON (s.pType='secteur' AND s.pIndice=uSecteur)
|
|
INNER JOIN labo ON uLabo=lCode";
|
|
if ($login==="*")
|
|
{$req.=" WHERE uId='$mdp';";}
|
|
else
|
|
{$req.=" WHERE uLogin='$login'
|
|
AND uMdp='$mdp';";}
|
|
//echo $req;
|
|
$rs = PdoBD::$monPdo->query($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des informations d'un utilisateur...", $req, PdoBD::$monPdo->errorInfo());}
|
|
$ligne = $rs->fetch();
|
|
return $ligne;
|
|
}
|
|
/** ---------------------------------------------- Fin module Connexion
|
|
*/
|
|
|
|
/** ---------------------------------------------- gestion des PARAMETRES
|
|
/**
|
|
* Retourne les informations de la table TYPEPARAMETRE
|
|
*/
|
|
public function getLesParametres()
|
|
{
|
|
$req = "SELECT tlId, tlLibelle, tlBooleen, tlChoixMultiple, tlCumul
|
|
FROM typeParametre
|
|
ORDER BY tlLibelle;";
|
|
$rs = PdoBD::$monPdo->query($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoBD::$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, pCategorie
|
|
FROM parametre
|
|
WHERE pType='$type'
|
|
ORDER by pIndice;";
|
|
$rs = PdoBD::$monPdo->query($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la recherche des parametres dans la base de données.", $req, PdoBD::$monPdo->errorInfo());}
|
|
$lesLignes = $rs->fetchAll();
|
|
return $lesLignes;
|
|
}
|
|
/**
|
|
* Retourne dans un tableau associatifles informations de la table PARAMETRE (pour un type particulier)
|
|
*/
|
|
public function getInfosParam($type, $valeur)
|
|
{
|
|
if ($valeur=="NULL")
|
|
{$req = "SELECT pType, max(pIndice)+1 AS pIndice, ' ' AS pLibelle, 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';";
|
|
}
|
|
$rs = PdoBD::$monPdo->query($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoBD::$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;";
|
|
$rs = PdoBD::$monPdo->exec($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la mise a jour des parametres dans la base de données.", $req, PdoBD::$monPdo->errorInfo());}
|
|
}
|
|
/**
|
|
* supprime une ligne de la table PARAMETRE
|
|
*/
|
|
public function supprimeParametre($type, $valeur)
|
|
{
|
|
$req = "DELETE
|
|
FROM parametre
|
|
WHERE pType='$type'
|
|
AND pIndice=$valeur;";
|
|
$rs = PdoBD::$monPdo->exec($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la suppression d'un parametre dans la base de données.", $req, PdoBD::$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);";
|
|
$rs = PdoBD::$monPdo->exec($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de l'insertion d'un parametre dans la base de données.", $req, PdoBD::$monPdo->errorInfo());}
|
|
}
|
|
/** ---------------------------------------------- fin gestion des PARAMETRES
|
|
*/
|
|
//---------------------------------------------- Gestion des PROFILS
|
|
/**
|
|
* Retourne les informations de la table labo
|
|
*/
|
|
public function getInfoLabo()
|
|
{
|
|
$req = "SELECT lCode,lNom,lChefVentes
|
|
FROM labo
|
|
ORDER BY lCode;";
|
|
$rs = PdoBD::$monPdo->query($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoBD::$monPdo->errorInfo());}
|
|
$lesLignes = $rs->fetchAll();
|
|
return $lesLignes;
|
|
}
|
|
|
|
public function majProfil($ID, $nom, $prenom, $adresse, $codePostal, $ville, $login, $mdp, $rdbmdp)
|
|
{
|
|
$req = "UPDATE utilisateur SET uNom='$nom',uPrenom='$prenom',uAdresse='$adresse',uCP=$codePostal,uVille='$ville',uLogin='$login'";
|
|
if ($rdbmdp == "oui")
|
|
{$req.=",uMdp='$mdp' WHERE uId='$ID';";}
|
|
else
|
|
{$req.=" WHERE uId='$ID';";}
|
|
echo $req;
|
|
|
|
//$rs = PdoBD::$monPdo->exec($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la mise a jour du profil dans la base de données.", $req, PdoBD::$monPdo->errorInfo());}
|
|
|
|
}
|
|
/** ---------------------------------------------- fin gestion des PROFILS
|
|
*/
|
|
//---------------------------------------------- Gestion des COMPTES RENDUS
|
|
/**
|
|
* Retourne des informations de la table praticien et visite
|
|
*/
|
|
public function getLesVisites()
|
|
{
|
|
$req = "SELECT praticien.pNum, pNom, pPrenom, pRue, pCP, pVille, vDate, vRapport, vMotif
|
|
FROM praticien
|
|
INNER JOIN visite ON visite.pNum=praticien.pNum
|
|
ORDER BY praticien.pNum;";
|
|
$rs = PdoBD::$monPdo->query($req);
|
|
if ($rs === false) {afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoBD::$monPdo->errorInfo());}
|
|
$lesLignes = $rs->fetchAll();
|
|
return $lesLignes;
|
|
}
|
|
}
|
|
?>
|