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*/ /** ---------------------------------------------- module gestion des UTILISATEURS * Retourne les informations des UTILISATEURS */ public function getLesUtilisateurs() { $req = "SELECT uId,uNom,uPrenom,uLogin,uMdp,uStatut FROM utilisateur ORDER BY uNom,uPrenom;"; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des él`ves ..", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * Retourne les informations des praticiens visités par un visiteur médical */ public function getLesVisités($choix) { $req = "SELECT p.pNum,pNom,pPrenom,pVille,count(*) as nbVisites FROM praticien p INNER JOIN visite v ON p.pNum=v.pNum WHERE uId='$choix' GROUP BY p.pNum,pNom,pPrenom,pVille ORDER BY pNom,pPrenom;"; //echo $req; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des informations des praticiens visités...", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * Retourne les informations des labos */ public function getLesLabos() { $req = "SELECT lCode, lNom FROM labo ORDER BY lNom;"; //echo $req; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des informations des labos...", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * Met à jour une ligne de la table utilisateur */ public function majUtilisateur($valeur,$nom,$prenom,$statut,$login,$mdp,$adresse,$cp,$ville,$region,$secteur,$labo) { $req = "UPDATE utilisateur SET uNom='$nom', uPrenom='$prenom', uStatut=$statut, uLogin='$login', uAdresse='$adresse', uCP=$cp, uVille='$ville', uRegion=$region, uSecteur=$secteur, ulabo='$labo', uDateModif=NOW()"; if ($mdp<>"*") {$req.= ",uMdp='$mdp' ";} $req.=" WHERE uId='$valeur';"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la mise à jour de l'utilisateur dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** * supprime une ligne de la table utilisateur */ public function supprimeUtilisateur($valeur) { $req = "DELETE FROM utilisateur WHERE uId='$valeur';"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la suppression de l'utilisateur dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** * ajoute une ligne dans la table utilisateur */ public function nouveauCodeUtilisateur($nom) { $req = "SELECT if( isnull( max(cast(SUBSTRING(uid, 2, length(uid)-1) as unsigned integer)) ) , 1, max(cast(SUBSTRING(uid, 2, length(uid)-1) as unsigned integer))+1) as num FROM utilisateur WHERE LEFT(uId, 1) ='$nom[0]';"; $rs = PdoBD::$monPdo->query($req); if($rs === false){afficherErreurSQL("Acces impossible a la table utilisateur. ", $req, PdoBD::$monPdo->errorInfo());} $ligne=$rs->fetch(); return $nom[0].strval($ligne['num']); } public function ajoutUtilisateur($valeur,$nom,$prenom,$statut,$login,$mdp,$adresse,$cp,$ville,$region,$secteur,$labo) { $req = "INSERT INTO utilisateur (uId,uNom,uPrenom,uStatut,uLogin,uMdp,uAdresse,uCP,uVille,uRegion,uSecteur,uLabo,uDateEnreg,uDateModif) VALUES ('$valeur','$nom','$prenom',$statut,'$login','$mdp','$adresse',$cp,'$ville',$region,$secteur,'$labo', NOW(),NOW());"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de l'insertion de l'utilisateur dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** ---------------------------------------------- fin module gestion des UTILISATEURS */ /* ---------------------------------------------- module gestion des praticiens */ /* Retourne les informations des praticiens */ public function getLesPraticiens($region) { $req = "SELECT distinct p.pNum,pNom,pPrenom,region,count(vNum) as nbVisites FROM praticien p LEFT JOIN visite v ON (p.pNum=v.pNum"; ($_SESSION['region']==0)?$req.=") group by pNom,pPrenom,p.pNum,region;":$req.=" and uId='".$_SESSION['idUtilisateur']."') WHERE region = $region group by pNom,pPrenom,p.pNum,region;"; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des praticiens ..", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * Retourne les informations d'un praticien sous la forme d'un tableau associatif */ public function getInfosPraticien($idfP) { $req = "SELECT pNum,pNom,pPrenom,pRue,pCP,pVille,pCoefNotoriete,p.tCode,tp.tLibelle as wTypeLibelle,p.region,r.plibelle as wRegion FROM praticien p INNER JOIN type_praticien tp ON tp.tCode = p.tCode INNER JOIN parametre r ON (r.pType='region' AND r.pIndice=p.region) WHERE pNum='$idfP' "; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des informations d'un praticien...", $req, PdoBD::$monPdo->errorInfo());} $ligne = $rs->fetch(); return $ligne; } /** * Retourne les informations des visites chez un praticien sous la forme d'un tableau associatif */ public function getLesVisitesPraticien($idP) { $req = "SELECT v.uId,vNum,DATE_FORMAT(vDate,'%d/%m/%Y') as wDateVisite,uNom as wNomVisiteur, vRapport, vMotif FROM visite v INNER JOIN utilisateur u ON u.uId = v.uId WHERE pNum='$idP' ORDER BY vDate desc;"; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des praticiens ..", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * Retourne les informations des types praticien */ public function getLesTypesPraticien() { $req = "SELECT tCode, tLibelle FROM type_praticien ORDER BY tLibelle;"; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des informations des types de praticien...", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * Met à jour une ligne de la table praticien */ public function majPraticien($valeur,$nom,$prenom,$adresse,$cp,$ville,$coefNotoriete,$type,$region) { $req = "UPDATE praticien SET pNom='$nom', pPrenom='$prenom', pRue='$adresse', pCP=$cp, pVille='$ville', region='$region', tCode='$type', pCoefNotoriete='$coefNotoriete'"; $req.=" WHERE pNum='$valeur';"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la mise à jour de l'utilisateur dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** * Supprime une ligne de la table praticien */ public function supprimePraticien($valeur) { $req = "DELETE FROM praticien WHERE pNum='$valeur';"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la suppression du praticien dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** * Ajoute une ligne dans la table praticien */ public function nouveauCodePraticien() { $req="SELECT if( isnull( max(pNum) ) , 1, max(pNum)+1 ) AS numNouveau from praticien;"; $rs = PdoBD::$monPdo->query($req); if($rs === false){afficherErreurSQL("Acces impossible a la table praticien. ", $req, PdoBD::$monPdo->errorInfo());} $ligne=$rs->fetch(); return $ligne['numNouveau']; } public function ajoutPraticien($valeur,$nom,$prenom,$adresse,$cp,$ville,$coefNotoriete,$typePraticien,$region) { $req = "INSERT INTO praticien (pNum,pNom,pPrenom,pRue,pCP,pVille,pCoefNotoriete,tCode,region) VALUES ('$valeur','$nom','$prenom','$adresse','$cp','$ville','$coefNotoriete','$typePraticien','$region');"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de l'insertion du praticien dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** ---------------------------------------------- fin module gestion des praticiens*/ /* ---------------------------------------------- module gestion des visites */ /* Retourne les informations des visites d'un utilisateur */ //dans la requette enleve le info inutil public function getLesVisites($id) { $req = "SELECT visite.uId ,vNum,visite.pNum,SUBSTR(vDate,1,10) AS vDate,vMotif, pNom,pPrenom,uAdresse,uCP,uVille FROM visite INNER JOIN utilisateur ON visite.uId = utilisateur.uId INNER JOIN praticien ON visite.pNum = praticien.pNum WHERE visite.uId = '".$_SESSION['idUtilisateur']."';"; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des praticiens ..", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * Retourne les informations de la table TYPEPARAMETRE */ public function getEchantillons($id,$idV) { $req = "SELECT offrir.uId, offrir.vNum,fLibelle,mNomCommercial ,mComposition, offrir.mDepotLegal AS DepotLegal,OFF_QTE FROM offrir INNER JOIN medicament ON offrir.mDepotLegal = medicament.mDepotLegal INNER JOIN famille ON medicament.fCode = famille.fCode WHERE offrir.uId= '$id' AND offrir.vNum =$idV ORDER by fLibelle;"; $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 les informations dun echantillon */ public function getUnEchantillon($id,$idV,$depotlegal) { $req = "SELECT offrir.uId, offrir.vNum,fLibelle,mNomCommercial ,mComposition, offrir.mDepotLegal AS DepotLegal,OFF_QTE FROM offrir INNER JOIN medicament ON offrir.mDepotLegal = medicament.mDepotLegal INNER JOIN famille ON medicament.fCode = famille.fCode WHERE offrir.uId= '$id' AND offrir.vNum =$idV AND offrir.mDepotLegal = '$depotlegal';"; $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; } /* Retourne les informations d'une visites d'un praticien */ public function getUneVisitePraticien($id,$idV) { $req = "SELECT visite.uId AS uId,vNum,DATE_FORMAT(vDate,'%Y/%m/%d') as wDateVisite, vRapport, vMotif AS pIndice , mt.pLibelle AS vMotif,praticien.pNum AS pNum,pNom,pPrenom,pRue,pCP,pVille FROM visite INNER JOIN praticien ON visite.pNum = praticien.pNum INNER JOIN parametre mt ON (mt.pType='MotifVi' AND mt.pIndice=vMotif) WHERE visite.uId='$id' AND vNum=$idV;"; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des visite ..", $req, PdoBD::$monPdo->errorInfo());} $uneLignes = $rs->fetch(); return $uneLignes; } /* Retourne les medicaments */ public function getLesMedicaments() { $req = "SELECT mDepotLegal,mNomCommercial FROM medicament;"; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des praticiens ..", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * REtourne les medicament d'une visite */ public function getNomMedUneVisite($id,$idV) { $req = "SELECT visite.Medicament1 AS Medicament ,mNomCommercial FROM visite INNER JOIN medicament ON visite.Medicament1 = medicament.mDepotLegal WHERE visite.uId='$id' AND vNum=$idV UNION SELECT visite.Medicament2,mNomCommercial FROM visite INNER JOIN medicament ON visite.Medicament2 = medicament.mDepotLegal WHERE visite.uId='$id' AND vNum=$idV;"; $rs = PdoBD::$monPdo->query($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des visite ..", $req, PdoBD::$monPdo->errorInfo());} $lesLignes = $rs->fetchAll(); return $lesLignes; } /** * Supprime une ligne de la table visite*/ public function supprimeVisite($id ,$idV) { $req = "DELETE FROM visite WHERE uId='$id' AND vNum='$idV';"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la suppression du praticien dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** * Met à jour une ligne de la table visite */ public function majVisite($id ,$idV,$Date,$Rapport,$Motif,$Med,$Med2) {//fairez modif avec les medicamment $req = "UPDATE visite SET vDate='$Date', vRapport='$Rapport', vMotif='$Motif', Medicament1='$Med' , Medicament2='$Med2' WHERE uId='$id' AND vNum='$idV' ;"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la mise à jour de l'utilisateur dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } ///Ajoute une ligne dans la table visite public function nouveauCodeVisite($id) { $req="SELECT if( isnull( max(vNum) ) , 1, max(vNum)+1 ) AS numNouveau from visite WHERE uId='$id';"; $rs = PdoBD::$monPdo->query($req); if($rs === false){afficherErreurSQL("Acces impossible a la table praticien. ", $req, PdoBD::$monPdo->errorInfo());} $ligne=$rs->fetch(); return $ligne['numNouveau']; } public function ajoutVisite($id,$NewIdV,$idP,$date,$rapport,$motif,$med,$med2) { $req = "INSERT INTO visite (uId,vNum,pNum,vDate,vRapport,vMotif,Medicament1,Medicament2) VALUES ('$id',$NewIdV,$idP,'$date','$rapport',$motif,'$med','$med2');"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de l'insertion du praticien dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** * Met à jour une ligne de la table offrir */ public function majEchantillon($id ,$idV,$depotlegal,$qte) {//fairez modif avec les medicamment $req = "UPDATE offrir SET OFF_QTE='$qte' WHERE uId='$id' AND vNum=$idV AND mDepotLegal='$depotlegal';"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la mise à jour de l'utilisateur dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } public function ajoutEchantillon($id,$idV,$depotlegal,$qte) { $req = "INSERT INTO offrir (uId,vNum,mDepotLegal,OFF_QTE) VALUES ('$id',$idV,'$depotlegal',$qte);"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de l'insertion du praticien dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /* Supprime une ligne de la table offrir*/ public function supprimeEchantillon($id ,$idV,$depotlegal) { $req = "DELETE FROM offrir WHERE uId='$id' AND vNum='$idV' AND mDepotLegal='$depotlegal';"; $rs = PdoBD::$monPdo->exec($req); if ($rs === false) {afficherErreurSQL("Probleme lors de la suppression du praticien dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} } /** ---------------------------------------------- fin module gestion des visites*/ /** ---------------------------------------------- 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*/ } ?>