commit 53eabca315735c2d744725c22ea65bfb7ea1a572
Author: “Louis <“louis.dprs@gmail.com”>
Date: Thu Apr 7 10:06:09 2022 +0200
Premiere Partie
diff --git a/controleurs/c_connexion.php b/controleurs/c_connexion.php
new file mode 100644
index 0000000..ab08226
--- /dev/null
+++ b/controleurs/c_connexion.php
@@ -0,0 +1,57 @@
+getInfosUtilisateur($login,$mdp);
+
+ if(!is_array( $utilisateur)){
+ $formulaire ="frmIdentification";
+ $champ ="login";
+ 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['uId'];
+ $nom = $utilisateur['uNom'];
+ $prenom = $utilisateur['uPrenom'];
+ $statut = $utilisateur['uStatut'];
+ ($statut==0)?$region=0:$region=$utilisateur['uRegion'];
+ connecter($id,$nom,$prenom,$statut,$region);
+ header ('location: index.php?choixTraitement=utilisateur&action=voir');
+ }
+ break;
+ }
+ default :{
+ $formulaire ="frmIdentification";
+ $champ ="login";
+ include("vues/v_entete.php");
+ include("vues/v_connexion.php");
+ break;
+ }
+}
+?>
\ No newline at end of file
diff --git a/controleurs/c_param.php b/controleurs/c_param.php
new file mode 100644
index 0000000..7f641aa
--- /dev/null
+++ b/controleurs/c_param.php
@@ -0,0 +1,79 @@
+getLesParametres();
+ include("vues/v_choixParam.php");
+ $enteteParametre=$lesParametres[$noP-1];
+ $lesInfosParametre = $pdo->getParametre($choix);
+ include("vues/v_ficheParametre.php");
+ $stat="2";
+ break;
+ }
+//-----------------------------------------liste détaillée pour un parametre
+case 'liste':
+ {
+ include("vues/v_entete.php");
+ $lesParametres=$pdo->getLesParametres();
+ include("vues/v_choixParam.php");
+ $titre2=$lesStatistiques[0]['libelle'];
+ include("vues/v_listeStat.php");
+ break;
+ }
+//----------------------------------------- AJOUT/MODIFICATION/SUPPRESSION
+case 'ajouter':
+case 'modifier':
+case 'supprimer':
+ {
+ include("vues/v_entete.php");
+ $infosParam = $pdo->getInfosParam($type, $valeur);
+ include("vues/v_unParam.php");
+ break;
+ }
+//----------------------------------------- VALIDATION AJOUT
+case 'validerAjouter':
+ {// enregistrement de la ligne et retour
+ if ($_REQUEST['zOk']=="OK") {$pdo->ajoutParametre($type, $valeur, addslashes ($_REQUEST['zLibelle']), $_REQUEST['zTerritoire'], $_REQUEST['zDep'] , $plancher, $plafond);}
+ header ('location: index.php?choixTraitement=param&action=voir&lstParam='.$type);
+ }
+//----------------------------------------- VALIDATION MODIFICATION
+case 'validerModifier':
+ {
+ if ($_REQUEST['zOk']=="OK") {$pdo->majParametre($type, $valeur, addslashes ($_REQUEST['zLibelle']), $_REQUEST['zTerritoire'], $_REQUEST['zDep'], $plancher, $plafond);}
+ header ('location: index.php?choixTraitement=param&action=voir&lstParam='.$type);
+ break;
+ }
+//----------------------------------------- VALIDATION SUPPRESSION
+case 'validerSupprimer':
+ {
+ if ($_REQUEST['zOk']=="OK") {$pdo->supprimeParametre($type, $valeur);}
+ header ('location: index.php?choixTraitement=param&action=voir&lstParam='.$type);
+ break;
+ }
+
+default :
+ {
+ echo 'erreur d\'aiguillage !'.$action;
+ break;
+ }
+}
+?>
\ No newline at end of file
diff --git a/controleurs/c_praticien.php b/controleurs/c_praticien.php
new file mode 100644
index 0000000..6f10043
--- /dev/null
+++ b/controleurs/c_praticien.php
@@ -0,0 +1,83 @@
+getLesPraticiens($region);
+ include("vues/v_choixPraticien.php");
+ $lesInfosPraticien = $pdo->getInfosPraticien($choix);
+ $lesVisitesPraticien = $pdo->getLesVisitesPraticien($choix);
+ include("vues/v_fichePraticien.php");
+ break;
+ }
+//----------------------------------------- FORMULAIRE DE SAISIE
+case 'ajouter':
+case 'modifier':
+case 'supprimer':
+ {
+ $formulaire ="frmA";
+ $champ ="ztNom";
+ include("vues/v_entete.php");
+
+ $choix= $_REQUEST['lstPraticiens'];
+ $lesInfosPraticien = $pdo->getInfosPraticien($choix);
+ $lesRegions = $pdo->getParametre("region");
+ $lesTypesPraticien = $pdo->getLesTypesPraticien();
+ include("vues/v_unPraticien.php");
+ break;
+ }
+//----------------------------------------- VALIDATION
+case 'validerAjouter':
+case 'validerModifier':
+case 'validerSupprimer':
+ {
+ (isset($_REQUEST['praticien']))?$valeur=$_REQUEST['praticien']:$valeur='erreur';
+ if ($_REQUEST['zOk']=="OK")
+ {
+ if ($action==="validerSupprimer")
+ {
+ $pdo->supprimePraticien($valeur);
+ header ('location: index.php?choixTraitement=praticien&action=voir');
+ break;
+ }
+ else
+ {
+ $nom = addslashes ($_REQUEST['ztNom']);
+ $prenom = addslashes ($_REQUEST['ztPrenom']);
+ $adresse = addslashes ($_REQUEST['ztAdresse']);
+ if (strlen($_REQUEST['ztCP'])>1) {$cp = $_REQUEST['ztCP'];} else {$cp = "Null";}
+ $ville = addslashes ($_REQUEST['ztVille']);
+ $coefNotoriete = addslashes ($_REQUEST['ztCoefNotoriete']);
+ $typePraticien = addslashes($_REQUEST['ldrTypePraticien']);
+ $region = addslashes($_REQUEST['ldrRegion']);
+ if ($action==="validerAjouter")
+ { $valeur=$pdo->nouveauCodePraticien();
+ $pdo->ajoutPraticien($valeur,$nom,$prenom,$adresse,$cp,$ville,$coefNotoriete,$typePraticien,$region);}
+ else
+ {$pdo->majPraticien($valeur,$nom,$prenom,$adresse,$cp,$ville,$coefNotoriete,$typePraticien,$region);}
+ }
+ }
+ header ('location: index.php?choixTraitement=praticien&action=voir&lstPraticiens='.$valeur);
+ break;
+ }
+ //-----------------------------------------
+default :
+ {
+ echo 'erreur d\'aiguillage !'.$action;
+ break;
+ }
+}
+?>
diff --git a/controleurs/c_utilisateur.php b/controleurs/c_utilisateur.php
new file mode 100644
index 0000000..56745e8
--- /dev/null
+++ b/controleurs/c_utilisateur.php
@@ -0,0 +1,107 @@
+getLesUtilisateurs();
+ include("vues/v_choixUtilisateur.php");
+ }
+ else
+ {
+ $choix=$_SESSION['idUtilisateur'];
+ }
+ $lesInfosUtilisateur= $pdo->getInfosUtilisateur("*",$choix);
+ $lesVisités = $pdo->getLesVisités($choix);
+ include("vues/v_ficheUtilisateur.php");
+ break;
+ }
+//----------------------------------------- FORMULAIRE DE SAISIE
+case 'ajouter':
+case 'modifier':
+case 'supprimer':
+ {
+ $formulaire ="frmA";
+ $champ ="ztNom";
+ include("vues/v_entete.php");
+
+ $choix= $_REQUEST['lstUtilisateurs'];
+ $lesInfosUtilisateur= $pdo->getInfosUtilisateur("*",$choix);
+ $lesStatuts = $pdo->getParametre("statUti");
+ $lesRegions = $pdo->getParametre("region");
+ $lesLabos = $pdo->getLesLabos();
+ include("vues/v_unUtilisateur.php");
+ break;
+ }
+//----------------------------------------- VALIDATION
+
+case 'validerAjouter':
+case 'validerModifier':
+case 'validerSupprimer':
+ {
+ (isset($_REQUEST['utilisateur']))?$valeur=$_REQUEST['utilisateur']:$valeur=$_SESSION['idUtilisateur'];
+ if (!strlen($valeur)==3){$valeur=$_SESSION['idUtilisateur'];}
+ if ($_REQUEST['zOk']=="OK")
+ {
+ if ($action==="validerSupprimer")
+ {$pdo->supprimeUtilisateur($valeur);$valeur=$_SESSION['idUtilisateur'];}
+ else
+ {
+ $nom = addslashes ($_REQUEST['ztNom']);
+ $prenom = addslashes ($_REQUEST['ztPrenom']);
+ $statut = $_REQUEST['ldrStatut'];
+ $login = $_REQUEST['ztLogin'];
+ $region = substr($_REQUEST['ldrRegion'],0, strpos($_REQUEST['ldrRegion'],"*"));
+ $secteur = substr($_REQUEST['ldrRegion'],strpos($_REQUEST['ldrRegion'],"*")+1,strlen($_REQUEST['ldrRegion'])-1);
+ //$mdp = md5($_REQUEST['ztMdp']);
+ $mdp = $_REQUEST['ztMdp'];
+ if($_REQUEST['brMdp']==0 AND $action==="validerModifier") {$mdp="*";}
+ $adresse = addslashes ($_REQUEST['ztAdresse']);
+ if (strlen($_REQUEST['ztCP'])>1) {$cp = $_REQUEST['ztCP'];} else {$cp = "Null";}
+ $ville = addslashes ($_REQUEST['ztVille']);
+ $labo = $_REQUEST['ldrLabo'];
+ if ($action==="validerAjouter")
+ {$valeur=$pdo->nouveauCodeUtilisateur($nom);
+ $pdo->ajoutUtilisateur($valeur,$nom,$prenom,$statut,$login,$mdp,$adresse,$cp,$ville,$region,$secteur,$labo);
+ $sujet = "nouveau compte";
+ $msg = "Bonjour ".$prenom." ".$nom.", \r\nLe Castel vient de créer un compte pour vous ...\r\n";
+ }
+ else
+ {$pdo->majUtilisateur($valeur,$nom,$prenom,$statut,$login,$mdp,$adresse,$cp,$ville,$region,$secteur,$labo);
+ $sujet = "nouveau mot de passe";
+ $msg = "Bonjour ".$prenom." ".$nom.", \r\nLe Castel vient de modifier votre mot de passe ...\r\n";
+ }
+ $entete = "From: Pascal Blain \r\n";
+ $entete .= "Mime-Version: 1.0\r\n";
+ $entete .= "Content-type: text/html; charset=utf-8\r\n";
+ $entete .= "\r\n";
+ $msg .= "Statut : ".$statut."\r\n";
+ $msg .= "Identifiant : ".$login."\r\n";
+ $msg .= "Mot de passe : ".$_REQUEST['ztMdp']."\r\n";
+ //$pdo->envoyerMail($mail, $sujet, $msg, $entete);
+ }
+ }
+ header ('location: index.php?choixTraitement=utilisateur&action=voir&lstUtilisateurs='.$valeur);
+ break;
+ }
+ //-----------------------------------------
+default :
+ {
+ echo 'erreur d\'aiguillage !'.$action;
+ break;
+ }
+}
+?>
diff --git a/controleurs/c_visite.php b/controleurs/c_visite.php
new file mode 100644
index 0000000..3847b06
--- /dev/null
+++ b/controleurs/c_visite.php
@@ -0,0 +1,13 @@
+
diff --git a/controleurs/fonctionsProjet.inc b/controleurs/fonctionsProjet.inc
new file mode 100644
index 0000000..17165d0
--- /dev/null
+++ b/controleurs/fonctionsProjet.inc
@@ -0,0 +1,210 @@
+ "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");
+ return $tabMois[$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;
+}
+
+/**
+ * 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']);
+ }
+}
+
+/** afficherErreurSQL :
+ Affichage de messages lors l'accès à la bdd avec une requete SQL
+ @param $message : message a afficher
+ @param $req : requete executee
+ @param $info : erreur constatee
+*/
+function afficherErreurSQL($message, $req, $info) {
+ echo $message . " ";
+ echo "Requete : " . $req . " ";
+ echo "Code erreur : " . $info[0] . ", Message : " . $info[2];
+ die();
+}
+?>
\ No newline at end of file
diff --git a/images/Thumbs.db b/images/Thumbs.db
new file mode 100644
index 0000000..a540c29
Binary files /dev/null and b/images/Thumbs.db differ
diff --git a/images/add.png b/images/add.png
new file mode 100644
index 0000000..7d89701
Binary files /dev/null and b/images/add.png differ
diff --git a/images/ajout.gif b/images/ajout.gif
new file mode 100644
index 0000000..59d14ed
Binary files /dev/null and b/images/ajout.gif differ
diff --git a/images/ajouter.jpg b/images/ajouter.jpg
new file mode 100644
index 0000000..63f0db6
Binary files /dev/null and b/images/ajouter.jpg differ
diff --git a/images/ajoutmembre.png b/images/ajoutmembre.png
new file mode 100644
index 0000000..73218e3
Binary files /dev/null and b/images/ajoutmembre.png differ
diff --git a/images/alerte moyen.jpg b/images/alerte moyen.jpg
new file mode 100644
index 0000000..4b52ec0
Binary files /dev/null and b/images/alerte moyen.jpg differ
diff --git a/images/alerte.jpg b/images/alerte.jpg
new file mode 100644
index 0000000..bb3d87a
Binary files /dev/null and b/images/alerte.jpg differ
diff --git a/images/alerte.png b/images/alerte.png
new file mode 100644
index 0000000..62ea777
Binary files /dev/null and b/images/alerte.png differ
diff --git a/images/alerte_petit.jpg b/images/alerte_petit.jpg
new file mode 100644
index 0000000..2d88751
Binary files /dev/null and b/images/alerte_petit.jpg differ
diff --git a/images/annuler.jpg b/images/annuler.jpg
new file mode 100644
index 0000000..48d6578
Binary files /dev/null and b/images/annuler.jpg differ
diff --git a/images/bt-print.gif b/images/bt-print.gif
new file mode 100644
index 0000000..3868905
Binary files /dev/null and b/images/bt-print.gif differ
diff --git a/images/bt-send.gif b/images/bt-send.gif
new file mode 100644
index 0000000..9e4d674
Binary files /dev/null and b/images/bt-send.gif differ
diff --git a/images/cocheB.gif b/images/cocheB.gif
new file mode 100644
index 0000000..80fde56
Binary files /dev/null and b/images/cocheB.gif differ
diff --git a/images/cocheR.gif b/images/cocheR.gif
new file mode 100644
index 0000000..573a6d4
Binary files /dev/null and b/images/cocheR.gif differ
diff --git a/images/cocheV.gif b/images/cocheV.gif
new file mode 100644
index 0000000..03764a8
Binary files /dev/null and b/images/cocheV.gif differ
diff --git a/images/cp.gif b/images/cp.gif
new file mode 100644
index 0000000..1ea5ba3
Binary files /dev/null and b/images/cp.gif differ
diff --git a/images/danger.jpg b/images/danger.jpg
new file mode 100644
index 0000000..4808925
Binary files /dev/null and b/images/danger.jpg differ
diff --git a/images/deconnexion.png b/images/deconnexion.png
new file mode 100644
index 0000000..f303727
Binary files /dev/null and b/images/deconnexion.png differ
diff --git a/images/editer.jpg b/images/editer.jpg
new file mode 100644
index 0000000..c23b2e1
Binary files /dev/null and b/images/editer.jpg differ
diff --git a/images/favicon.ico b/images/favicon.ico
new file mode 100644
index 0000000..78bf6f0
Binary files /dev/null and b/images/favicon.ico differ
diff --git a/images/favicon.jpg b/images/favicon.jpg
new file mode 100644
index 0000000..06195d1
Binary files /dev/null and b/images/favicon.jpg differ
diff --git a/images/favicon.png b/images/favicon.png
new file mode 100644
index 0000000..1cddff4
Binary files /dev/null and b/images/favicon.png differ
diff --git a/images/fermer.png b/images/fermer.png
new file mode 100644
index 0000000..8528699
Binary files /dev/null and b/images/fermer.png differ
diff --git a/images/fleche_oblique.png b/images/fleche_oblique.png
new file mode 100644
index 0000000..241f6a5
Binary files /dev/null and b/images/fleche_oblique.png differ
diff --git a/images/goDernier.gif b/images/goDernier.gif
new file mode 100644
index 0000000..aa558af
Binary files /dev/null and b/images/goDernier.gif differ
diff --git a/images/goPrecedent.gif b/images/goPrecedent.gif
new file mode 100644
index 0000000..8100aab
Binary files /dev/null and b/images/goPrecedent.gif differ
diff --git a/images/goPremier.gif b/images/goPremier.gif
new file mode 100644
index 0000000..06f8646
Binary files /dev/null and b/images/goPremier.gif differ
diff --git a/images/goSuivant.gif b/images/goSuivant.gif
new file mode 100644
index 0000000..78eee73
Binary files /dev/null and b/images/goSuivant.gif differ
diff --git a/images/group.png b/images/group.png
new file mode 100644
index 0000000..40b2044
Binary files /dev/null and b/images/group.png differ
diff --git a/images/imprimer.gif b/images/imprimer.gif
new file mode 100644
index 0000000..92a363b
Binary files /dev/null and b/images/imprimer.gif differ
diff --git a/images/infobulle.png b/images/infobulle.png
new file mode 100644
index 0000000..1d28652
Binary files /dev/null and b/images/infobulle.png differ
diff --git a/images/logo.png b/images/logo.png
new file mode 100644
index 0000000..d729353
Binary files /dev/null and b/images/logo.png differ
diff --git a/images/logoGSB.jpg b/images/logoGSB.jpg
new file mode 100644
index 0000000..389b465
Binary files /dev/null and b/images/logoGSB.jpg differ
diff --git a/images/modif.gif b/images/modif.gif
new file mode 100644
index 0000000..21d0c91
Binary files /dev/null and b/images/modif.gif differ
diff --git a/images/picto_disconnect.png b/images/picto_disconnect.png
new file mode 100644
index 0000000..bd7bc4f
Binary files /dev/null and b/images/picto_disconnect.png differ
diff --git a/images/plus.png b/images/plus.png
new file mode 100644
index 0000000..e22c9d5
Binary files /dev/null and b/images/plus.png differ
diff --git a/images/plusB.png b/images/plusB.png
new file mode 100644
index 0000000..4a7ab89
Binary files /dev/null and b/images/plusB.png differ
diff --git a/images/plusBleu.png b/images/plusBleu.png
new file mode 100644
index 0000000..2409704
Binary files /dev/null and b/images/plusBleu.png differ
diff --git a/images/plusGrand.png b/images/plusGrand.png
new file mode 100644
index 0000000..32d66be
Binary files /dev/null and b/images/plusGrand.png differ
diff --git a/images/recherche.jpg b/images/recherche.jpg
new file mode 100644
index 0000000..a7da02b
Binary files /dev/null and b/images/recherche.jpg differ
diff --git a/images/recherche2.jpg b/images/recherche2.jpg
new file mode 100644
index 0000000..ea0ab63
Binary files /dev/null and b/images/recherche2.jpg differ
diff --git a/images/recherche3.jpg b/images/recherche3.jpg
new file mode 100644
index 0000000..ecbf685
Binary files /dev/null and b/images/recherche3.jpg differ
diff --git a/images/rechercher.jpg b/images/rechercher.jpg
new file mode 100644
index 0000000..044d66e
Binary files /dev/null and b/images/rechercher.jpg differ
diff --git a/images/supprimer.gif b/images/supprimer.gif
new file mode 100644
index 0000000..ede2830
Binary files /dev/null and b/images/supprimer.gif differ
diff --git a/images/supprimer.jpg b/images/supprimer.jpg
new file mode 100644
index 0000000..3b14da8
Binary files /dev/null and b/images/supprimer.jpg differ
diff --git a/images/users.png b/images/users.png
new file mode 100644
index 0000000..2e06d79
Binary files /dev/null and b/images/users.png differ
diff --git a/images/validation.jpg b/images/validation.jpg
new file mode 100644
index 0000000..dbf0f9d
Binary files /dev/null and b/images/validation.jpg differ
diff --git a/images/valider.jpg b/images/valider.jpg
new file mode 100644
index 0000000..1dc5a9b
Binary files /dev/null and b/images/valider.jpg differ
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..e663b71
--- /dev/null
+++ b/index.php
@@ -0,0 +1,35 @@
+
diff --git a/modele/classPDO.php b/modele/classPDO.php
new file mode 100644
index 0000000..c2f7ea5
--- /dev/null
+++ b/modele/classPDO.php
@@ -0,0 +1,353 @@
+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
+/**
+ *
+*/
+
+
+/** ---------------------------------------------- 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
+}
+?>
\ No newline at end of file
diff --git a/styles/styles.css b/styles/styles.css
new file mode 100644
index 0000000..f8beb7a
--- /dev/null
+++ b/styles/styles.css
@@ -0,0 +1,501 @@
+/* Styles des divisions principales de la page */
+#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: -20px;
+ 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:80px;
+ 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: purple; /*rgb(0,85,227);*/
+ font-size: 16px;
+ /*background-color:#D3D3D3;
+ border-color: #696969 #DCDCDC #DCDCDC #696969; */
+}
+#sommaire ul li ul {
+ display:none;
+}
+#sommaire ul li:hover ul {
+ display:block;
+}
+#sommaire li:hover ul li {
+ float:none;
+}
+#sommaire li ul {
+ position:absolute;
+ }
+
+#stats {
+ position: absolute;
+ top: 1em;
+ left: 0.5em;
+ background-color: #ffff00;
+ font-size:0.75em;
+}
+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 : -240px;
+ margin-left: -10px;
+ padding: 0em;
+ background-color:transparent;
+ color: rgb(0,85,227);
+ width: 160px;
+}
+
+#contenu{
+ border: none;
+ padding: 1.1em;
+ background-color: white;
+ border-left : groove 0.8em #980101;
+ margin-top : 1.1em;
+ margin-left: 162px; /*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 #logo {
+ float : left;
+ width : 160px;
+ 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;
+}
+
+input:focus{
+ background-color: #ECB2E4;
+}
+button{
+ width : 60px;
+ height : 30px;
+ text-align:center;
+ vertical-align:middle;
+}
+input:hover, textarea:hover, select:hover{
+ background-color : #FAFAE6;
+ cursor : pointer;
+}
+.controle {
+ width:75px;
+}
+.controleLong {
+ width:195px;
+}
+.stNb {
+ width:40px;
+ text-align:center;
+}
+
+.stNb a:link {
+ color: red;
+
+}
+
+.stTitre {
+ width:40px;
+ text-align:center;
+ font-weight: bold;
+}
+
+.stTitre2 {
+ width:80px;
+ text-align:center;
+ font-weight: bold;
+}
+
+/* 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.2em;
+ border-collapse : collapse;
+}
+
+/* Style pour les lignes d'en-tête des tableaux */
+#contenu th {
+ background-color:#E9F1FE; //bleu clair ou bleu plus soutenu : #77AADD;
+ width: 130px;
+ 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;
+ //font-size:1.1em;
+ }
+
+#contenu h3 {
+ font-size : 1.2em;
+}
+
+table{
+ width:100%;
+ border-collapse:collapse;
+}
+fieldset{
+ border-radius : 12px;
+ border:2px solid ;
+ border-color: purple;
+}
+legend{
+ font-size: 20px;
+}
+
+table.listeLegere {
+ margin-bottom : 0.3em;
+}
+
+table.stats {
+ width: 150px;
+ border-collapse:collapse;
+}
+
+table.stats th {
+ border : dotted rgb(178,207,81) 0.1em;
+ background-color:#E9F1FE; //bleu clair
+ padding: 0em;
+ text-align: center;
+ vertical-align : top;
+ witdh: 33%;
+}
+
+table.stats td {
+ border : dotted rgb(178,207,81) 0.1em;
+ padding: 0em;
+ text-align: center;
+ vertical-align : top;
+ witdh: 33%;
+}
+
+/* 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.2em;
+ vertical-align : top;
+}
+
+table.listeLegere caption {
+ font-size : 1.1em;
+ text-align : left;
+ margin-bottom : 0.2em;
+}
+table.listeLegere td {
+ width: 100px;
+ vertical-align:top;
+ font-weight:normal;
+}
+
+#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;
+}
+
+.lesOnglets
+{
+ margin: 0;
+ padding:0 0 0 5px;
+}
+
+.unOnglet
+{
+ background-color:white;
+ margin-top:-1px;
+ padding:5px;
+ display:none;
+ border:1px solid #AAA;
+ border-radius:4px;
+ -webkit-border-radius:4px;
+ -moz-border-radius:4px;
+ color:#555;
+ cursor: text;
+}
+.onglet
+{
+ display:inline-block;
+ margin:5px 2px 0 2px;
+ padding:5px 10px ;
+ border:1px solid #AAA;
+ border-bottom:none;
+ border-radius:5px 5px 0 0;
+ -webkit-border-radius:4px 4px 0 0;
+ -moz-border-radius:4px 4px 0 0;
+ color:#555;
+ cursor: pointer;
+ font-weight:bold;
+}
+.inactif
+{
+ background:#EEE;
+}
+.inactif:hover
+{
+ background:#AAA;
+}
+.actif
+{
+ background:white;
+ border-bottom:2px solid white;
+ padding-bottom:4px;
+ cursor:text;
+}
+.fdroite {
+ display: inline-block;
+ border-bottom: 7px solid #FFFFFF;
+ border-top: 7px solid #FFFFFF;
+ border-left: 10px solid #9743CC;
+}
+.fbas {
+ display: inline-block;
+ border-left: 7px solid #FFFFFF;
+ border-right: 7px solid #FFFFFF;
+ border-top: 10px solid #AABBCC;
+}
+.fgauche {
+ display: inline-block;
+ border-bottom: 7px solid #FFFFFF;
+ border-right: 10px solid #9743CC;
+ border-top: 7px solid #FFFFFF;
+}
+.fhaut {
+ display: inline-block;
+ border-bottom: 10px solid #AABBCC;
+ border-left: 7px solid #FFFFFF;
+ border-right: 7px solid #FFFFFF;
+}
\ No newline at end of file
diff --git a/vues/proceduresJava.js b/vues/proceduresJava.js
new file mode 100644
index 0000000..985ec6f
--- /dev/null
+++ b/vues/proceduresJava.js
@@ -0,0 +1,248 @@
+// version modifie le 17 decembre 2013 par Pascal Blain
+var ongletActif=1;
+// ========================= passer le focus un champ
+function donner_focus(frm,champ) {
+ document.forms[frm].elements[champ].focus();
+ }
+// ========================= fonctions de navigation dans la liste de choix
+function premier(frm, liste) {
+ document.forms[frm].elements[liste].value = document.forms[frm].elements[liste].options[0].value;
+ document.forms[frm].submit();
+ }
+function precedent(frm, liste) {
+ document.forms[frm].elements[liste].value = document.forms[frm].elements[liste].options[Math.max(0,document.forms[frm].elements[liste].selectedIndex-1)].value;
+ document.forms[frm].submit();
+ }
+function suivant(frm, liste) {
+ document.forms[frm].elements[liste].value = document.forms[frm].elements[liste].options[(Math.min((document.forms[frm].elements[liste].options.length-1),document.forms[frm].elements[liste].selectedIndex+1))].value;
+ document.forms[frm].submit();
+ }
+function dernier(frm, liste) {
+ document.forms[frm].elements[liste].value = document.forms[frm].elements[liste].options[(document.forms[frm].elements[liste].options.length-1)].value;
+ document.forms[frm].submit();
+ }
+// =========================
+function faire(frm, action) {
+ document.forms[frm].action.value = action;
+ if(action=="supprimer") {alert("ATTENTION : \n demande de suppression \n cette action est irreversible !");}
+ document.forms[frm].submit();
+ }
+// =========================
+function validerAutre(frm, ordreAc, ordreCe, onglet)
+{
+ document.getElementById("zOrdreAc").value=ordreAc;
+ document.getElementById("zOrdreCe").value=ordreCe;
+ document.getElementById("zOnglet").value=onglet;
+ document.forms[frm].submit();
+}
+// =========================
+function voirListe(type, indice, colonne)
+{
+ document.forms["choixP"].zType.value=type;
+ document.forms["choixP"].zIndice.value=indice;
+ document.forms["choixP"].zColonne.value=colonne;
+ document.forms["choixP"].action.value = "liste";
+ document.forms["choixP"].submit();
+}
+
+// ========================= fonction annulation de saisie ou modification
+function annuler(frm){
+ document.forms[frm].elements["zOk"].value="nonOk";
+ document.forms[frm].submit();
+ }
+
+// ========================= validation des donnes d'un usager (version 2)
+function validerUsager(frm)
+{ //var champ=frm.elements["ztNom"];
+ if(!verifTexte(frm, frm.elements["ztNom"], 40)) {return false;}
+ else {if(!verifTexte(frm, frm.elements["ztPrenom"], 24)) {return false;}
+ else {if(!verifMail(frm, frm.elements["ztEMail"])) {return false;}
+ else {return true;}
+ }
+ }
+}
+// =========================
+function verifMail(frm, champ)
+{
+ var regex = /^[a-zA-Z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$/;
+ if(regex.test(champ.value) || champ.value.length<1)
+ {surligne(champ, false); return true;}
+ else
+ {surligne(champ, true); return false;}
+}
+// ========================= fonctions de controle de validit d'un champ
+function surligne(frm, champ, erreur)
+{
+ if(erreur)
+ {champ.style.backgroundColor = "#f55"; alert("Champ '"+champ.id+"' incorrect ...\nMerci de corriger"); document.getElementById(champ.id).focus(); frm.elements["zOk"].value="nonOk";}
+ else
+ {champ.style.backgroundColor = "#fff"; frm.elements["zOk"].value="OK";}
+}
+
+// ========================= fonctions de controle de validit d'un champ texte (longueur)
+function verifTexte(frm, champ,longueur)
+{
+ if(champ.value.length < 2 || champ.value.length > longueur)
+ {surligne(frm, champ, true); return false;}
+ else
+ {surligne(frm, champ, false); return true;}
+}
+// ========================= fonctions de controle de validit du code postal
+function verifCP(frm, champ)
+{ var str = champ.value;
+ var insee = str.substring(0,5);
+ var dep = str.substring(0,2);
+ var cPostal = str.substring(6,11);
+ var secteur= str.substring(12,16);
+ var ville = str.substring(17,57);
+ var cp = parseInt(cPostal);
+ if(isNaN(cp) || cp < 1000 || cp > 99999) {surligne(frm, champ, true); alert(cp); return false;} //
+ else { surligne(frm, champ, false);
+ frm.elements["ztCP"].value =cPostal;
+ frm.elements["ztVille"].value =ville;
+ frm.elements["ztCommune"].value =insee;
+ frm.elements["departement"].value =dep;
+ if(frm.name="frmUsager")
+ {
+ for (var i=0;i31)) && (ok==1) ) {alert(j+" n'est pas un jour correct..."); laDate.style.backgroundColor="#f55"; ok=false;}
+ if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {alert(m+" n'est pas un mois correct ..."); laDate.style.backgroundColor="#f55"; ok=false;}
+ if ( ((isNaN(a))||(aamax)) && (ok==1) ) {alert(a+" n'est pas une anne correcte: utiliser 4 chiffres, \n elle doit tre comprise entre "+amini+" et "+amax); laDate.style.backgroundColor="#f55"; ok=false;}
+ if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) {alert("Les sparateurs doivent tre des "+separateur); laDate.style.backgroundColor="#f55"; ok=false;}
+ if (ok==true) {
+ var d2=new Date(a,m-1,j);
+ j2=d2.getDate();
+ m2=d2.getMonth()+1;
+ a2=d2.getFullYear();
+ if (a2<=100) {a2=1900+a2}
+ if ( (j!=j2)||(m!=m2)||(a!=a2) ) {alert("La date "+d+" n'existe pas !"); laDate.style.backgroundColor="#f55"; ok=false;}
+ }
+ }
+ return ok;
+}
+// ========================= formate un nombre avec 2 chiffres aprs la virgule et un espace separateur de milliers
+function format_euro(valeur) {
+ 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;
+}
+
+// ========================= affiche l'onglet choisi
+ function Affiche(ongletChoisi, nb)
+{
+ for(i=1;i= 0)
+ {
+ while (origine.options.selectedIndex >= 0) /* boucle tant qu'il reste des lments slectionns */
+ {
+ valeur = origine.options[origine.options.selectedIndex].value; /* valeur de l'lment slectionn */
+ texte = origine.options[origine.options.selectedIndex].text; /* texte de l'lment slectionn */
+ origine.options[origine.options.selectedIndex] = null; /* suppression de l'element selectione dans la liste d'origine */
+ destination.options[destination.options.length] = new Option(texte, valeur);/* ajout dans la liste destination */
+ }
+ var nbElements=destination.length;
+ var tbl = new Array(nbElements, 2)
+
+ for(ligne=0;ligne
+
+ '.$titre; ?>
+
+ ".$unParametre['tlLibelle']."\n ";
+ $choix = $unParametre['tlId'];
+ $titre1= $unParametre['tlLibelle'];
+ $noP=$i;
+ }
+ else
+ {echo "".$unParametre['tlLibelle']." \n ";
+ $i=$i+1;}
+ }
+ if ($_REQUEST['action']<>"liste") {$action = $_REQUEST['action'];} else {$action = "voir";}
+ echo '
+
+
+
+
+
+ ';
+ ?>
+
+
+
+
+'; ?>
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vues/v_choixPraticien.php b/vues/v_choixPraticien.php
new file mode 100644
index 0000000..fbf2e51
--- /dev/null
+++ b/vues/v_choixPraticien.php
@@ -0,0 +1,45 @@
+
+
+ '.$titre; ?>
+
+ ".$uneLigne['pNom']." ".$uneLigne['pPrenom']." (".$uneLigne['nbVisites']." visites)\n ";
+ $choix = $uneLigne['pNum'];
+ $noL=$i;
+ }
+ else
+ {echo "".$uneLigne['pNom']." ".$uneLigne['pPrenom']." (".$uneLigne['nbVisites']." visites) \n ";
+ $i=$i+1;}
+ }
+ echo '
+
+ '
+?>
+
+
+
+
+
+
+
+'; ?>
+
+
+
+ ">
+
+
+
+
+
+
diff --git a/vues/v_choixUtilisateur.php b/vues/v_choixUtilisateur.php
new file mode 100644
index 0000000..1199004
--- /dev/null
+++ b/vues/v_choixUtilisateur.php
@@ -0,0 +1,44 @@
+
+
+ '.$titre; ?>
+
+ ".$uneLigne['uNom']." ".$uneLigne['uPrenom']."\n ";
+ $choix = $uneLigne['uId'];
+ $noL=$i;
+ }
+ else
+ {echo "".$uneLigne['uNom']." ".$uneLigne['uPrenom']." \n ";
+ $i=$i+1;}
+ }
+ echo '
+
+ '
+?>
+
+
+
+
+
+
+
+'; ?>
+
+
+
+ ">
+
+
+
+
+
+
diff --git a/vues/v_connexion.php b/vues/v_connexion.php
new file mode 100644
index 0000000..0a8f27e
--- /dev/null
+++ b/vues/v_connexion.php
@@ -0,0 +1,19 @@
+
+ Merci de vous identifier pour accéder aux dossiers
+
+
+ Mot de passe *
+
+
+
+
+
+
+
+
+
diff --git a/vues/v_entete.php b/vues/v_entete.php
new file mode 100644
index 0000000..bc90cce
--- /dev/null
+++ b/vues/v_entete.php
@@ -0,0 +1,47 @@
+
+
+
+ Galaxy Swiss Bourdin
+
+
+
+
+
+
+ ');">
+
+
+
+
+
+
Visites |
+
Praticiens |
+
Statistiques |';
+ if ($_SESSION['statut']==0)
+ {echo '
+
Visiteurs |
+
Parametres |';
+ }
+ else
+ {echo '
+
Mon profil |';
+ }
+ echo '
+
Bienvenue '.$_SESSION['prenom'].' '.strtoupper($_SESSION['nom']).'
+
+ ';
+ }
+?>
+
Gestion des Comptes-Rendus de visites
+
+
+
+
+
\ No newline at end of file
diff --git a/vues/v_erreurs.php b/vues/v_erreurs.php
new file mode 100644
index 0000000..0ab732f
--- /dev/null
+++ b/vues/v_erreurs.php
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/vues/v_ficheParametre.php b/vues/v_ficheParametre.php
new file mode 100644
index 0000000..5688984
--- /dev/null
+++ b/vues/v_ficheParametre.php
@@ -0,0 +1,100 @@
+
+
+ ');
+/*================================================================================================== */
+$nbP=count($lesInfosParametre);
+echo("
+
+
Parametre
+
+ Code Description Booléen Choix multiples
+ ".$enteteParametre['tlId']." ".$enteteParametre['tlLibelle']." ".$enteteParametre['tlBooleen']." ".$enteteParametre['tlChoixMultiple']."
+
+
+
+
+
+
+ Valeurs
+ ");
+ $numPa=1;
+ foreach ($lesInfosParametre as $uneLigne)
+ {
+ if ($numPa<10)
+ {$numPa=$numPa+1;
+ $type = $choix;
+ $indice = $uneLigne['pIndice'];
+
+ echo(" ".$uneLigne['pIndice']." ".$uneLigne['pLibelle']."
+ ");
+
+ echo("
+
+ ");
+ echo ("
+ ");
+ echo ("
+ ");
+ }
+ }
+ while ($numPa<10)
+ {
+ echo(" ");
+ $numPa=$numPa+1;
+ }
+ echo("
+
+ ");
+ if ($nbP>=10)
+ {
+ echo("
+
+ (suite)
+ ");
+ $numP=1;
+ foreach ($lesInfosParametre as $uneLigne)
+ {
+ if ($numP>=10)
+ {
+ $type = $choix;
+ $indice = $uneLigne['pIndice'];
+
+ echo(" ".$uneLigne['pIndice']." ".$uneLigne['pLibelle']."
+ ");
+
+ echo("
+
+ ");
+ echo ("
+ ");
+ echo ("
+ ");
+ }
+ $numP=$numP+1;
+ }
+ if ($numP<10) {$numP=10;}
+ while ($numP<19)
+ {
+ echo(" ");
+ $numP=$numP+1;
+ }
+ echo("
+
+
+ ");
+ }
+ echo("
+
+
+
Observations
+
+
+
+
");
+?>
\ No newline at end of file
diff --git a/vues/v_fichePraticien.php b/vues/v_fichePraticien.php
new file mode 100644
index 0000000..fbe26f6
--- /dev/null
+++ b/vues/v_fichePraticien.php
@@ -0,0 +1,82 @@
+
+
+
+
');
+/* */
+/*================================================================================================== COORDONNEES (1) */
+
+ echo ("
+
+
+
+
+ Coordonnées du praticien ");
+echo ("
+
+ Nom ".$lesInfosPraticien['pNom']."
+ Prénom ".$lesInfosPraticien['pPrenom']."
+ Rue ".$lesInfosPraticien['pRue']."
+ Code postal ".$lesInfosPraticien['pCP']."
+ Ville ".$lesInfosPraticien['pVille']."
+ Coefficient notoriete ".$lesInfosPraticien['pCoefNotoriete']."
+ Type praticien ".$lesInfosPraticien['wTypeLibelle']."
+ Région ".$lesInfosPraticien['wRegion']."
+ ");
+echo ("
+
+
+
+
+
+
");
+
+
+/*================================================================================================== SUIVI DES VISITES(2)*/
+ echo ("
+
+
+
+
+ Visites chez le praticien
+
+ Date visite
+ Visiteur médical
+ Rapport
+ Motif
+ ");
+ foreach ($lesVisitesPraticien as $uneVisite)
+ {echo("
+
+".$uneVisite['wDateVisite']."
+ ".$uneVisite['wNomVisiteur']."
+ ".$uneVisite['vRapport']."
+ ".$uneVisite['vMotif']."
+ ");
+ }
+ echo ("
+
+
+ ");
+ echo ("
+
+
");
+
+/*================================================================================================== XXXXX */
+echo ("
+
+
+
");
+?>
\ No newline at end of file
diff --git a/vues/v_ficheUtilisateur.php b/vues/v_ficheUtilisateur.php
new file mode 100644
index 0000000..b961f33
--- /dev/null
+++ b/vues/v_ficheUtilisateur.php
@@ -0,0 +1,96 @@
+
+
+
+
+ '.$titre.'
+ Praticiens visités
+ ');
+/*================================================================================================== COORDONNEES (1) */
+
+ echo ("
+
+
+
+
Laboratoire
+
+
+ ".$lesInfosUtilisateur['lNom']."
+
+
+
+
");
+
+/*================================================================================================== SUIVI DES VISITES(2)*/
+ echo ("
+
+
+
+
+ Praticiens visités
+
+
+
+
+
+
+
Laboratoire
+
+
+ ".$lesInfosUtilisateur['lNom']."
+
+
+
+
");
+
+/*================================================================================================== XXXXX */
+echo ("
+
+
+ ");
+?>
\ No newline at end of file
diff --git a/vues/v_pied.php b/vues/v_pied.php
new file mode 100644
index 0000000..9618aa2
--- /dev/null
+++ b/vues/v_pied.php
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vues/v_unEchantillon.php b/vues/v_unEchantillon.php
new file mode 100644
index 0000000..76a2f10
--- /dev/null
+++ b/vues/v_unEchantillon.php
@@ -0,0 +1,210 @@
+
+
+SUPPRESSION DE l\'ECHANTILLON';
+ echo '
+
\ No newline at end of file
diff --git a/vues/v_unParam.php b/vues/v_unParam.php
new file mode 100644
index 0000000..3e687b6
--- /dev/null
+++ b/vues/v_unParam.php
@@ -0,0 +1,94 @@
+
+
+SUPPRESSION DE LA VALEUR D\'UN PARAMETRE';
+ echo "
+
\ No newline at end of file
diff --git a/vues/v_unPraticien.php b/vues/v_unPraticien.php
new file mode 100644
index 0000000..df1ae48
--- /dev/null
+++ b/vues/v_unPraticien.php
@@ -0,0 +1,119 @@
+
+
+SUPPRESSION DU PRATICIEN '.$lesInfosPraticien['pNom'].' '.$lesInfosPraticien['pPrenom'].'';
+ echo '
diff --git a/vues/v_unUtilisateur.php b/vues/v_unUtilisateur.php
new file mode 100644
index 0000000..a5af1bc
--- /dev/null
+++ b/vues/v_unUtilisateur.php
@@ -0,0 +1,153 @@
+
+
+SUPPRESSION DE L\'UTILISATEUR '.$lesInfosUtilisateur['uNom'].' '.$lesInfosUtilisateur['uPrenom'].'';
+ echo '