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; ?> +

+ + + + + '; + ?> + + + + + \ 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; ?> + +

' +?> + + + "> + + + + + + 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; ?> + +

' +?> + + + "> + + + + + + 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

+
+
Identification utilisateur +

+ + +

+

+ + +



+ + +

+
+
+

+ 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']).'
  • +
  • déconnexion
  • + '; + } +?> +

    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 @@ +
    +
      + $erreur"; + } + ?> +
    +
    \ 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 + + + +
    CodeDescriptionBooléenChoix multiples
     ".$enteteParametre['tlId']."".$enteteParametre['tlLibelle']."".$enteteParametre['tlBooleen']."".$enteteParametre['tlChoixMultiple']."
    +

    + + + + "); + if ($nbP>=10) + { + echo(" + "); + } + echo(" + +
    +
    Valeurs + "); + $numPa=1; + foreach ($lesInfosParametre as $uneLigne) + { + if ($numPa<10) + {$numPa=$numPa+1; + $type = $choix; + $indice = $uneLigne['pIndice']; + + echo(" + + + "); + } + } + while ($numPa<10) + { + echo(""); + $numPa=$numPa+1; + } + echo(" +
    ".$uneLigne['pIndice']." ".$uneLigne['pLibelle'].""); + + echo(""); + echo (" + "); + echo (" +
          
    +
    +
    (suite) + "); + $numP=1; + foreach ($lesInfosParametre as $uneLigne) + { + if ($numP>=10) + { + $type = $choix; + $indice = $uneLigne['pIndice']; + + echo(" + + + "); + } + $numP=$numP+1; + } + if ($numP<10) {$numP=10;} + while ($numP<19) + { + echo(""); + $numP=$numP+1; + } + echo(" +
    ".$uneLigne['pIndice']." ".$uneLigne['pLibelle'].""); + + echo(""); + 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 @@ + + + +
      +
    • '.$titre.'
    • +
    • Visites
    • +
    '); +/* */ +/*================================================================================================== COORDONNEES (1) */ + + echo (" +
    + + + + + +
    +
    Coordonnées du praticien "); +echo (" + + + + + + + + + + "); +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']."
    +
    +
    +
    "); + + +/*================================================================================================== SUIVI DES VISITES(2)*/ + 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 (" +
    + + + + + +
    +
    Coordonnées de l'utilisateur "); + if ($lesInfosUtilisateur['uId']==$_SESSION['idUtilisateur'] and $_SESSION['statut']<>0) + {$lien=$_SERVER['PHP_SELF'].'?choixTraitement=utilisateur&action=modifier&lstUtilisateurs='.$lesInfosUtilisateur['uId']; +echo (' '); + } +echo (" + + + + + + + + + + "); +echo ("
    Nom ".$lesInfosUtilisateur['uNom']."
    Prénom ".$lesInfosUtilisateur['uPrenom']."
    Adresse ".$lesInfosUtilisateur['uAdresse']."
    Code postal ".$lesInfosUtilisateur['uCP']."
    Ville ".$lesInfosUtilisateur['uVille']."
    Statut ".$lesInfosUtilisateur['wStatut']."
    Nom de compte ".$lesInfosUtilisateur['uLogin']."
    Région ".$lesInfosUtilisateur['wRegion']."
    Secteur ".$lesInfosUtilisateur['wSecteur']."
    +
    +
    + +
    Laboratoire + + + + +
    ".$lesInfosUtilisateur['lNom']."
    +
    +
    "); + +/*================================================================================================== SUIVI DES VISITES(2)*/ + echo (" + "); + +/*================================================================================================== 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 '
    ';} + if ($_REQUEST['action']=="modifierEchantillon") + { echo '

    MODIFICATION DE l\'ECHANTILLON

    '; + echo '';} + if ($_REQUEST['action']=="ajouterEchantillon") + { echo '

    AJOUT D\'UN ECHANTILLON

    '; + echo '';} + echo (" +
    Visite du ".$lesInfosVisite['wDate']." chez ".$lesInfosVisite['pNom']." ".$lesInfosVisite['pPrenom']." + "); + if ($_REQUEST['action']=="supprimerEchantillon") //-------------------------------------------------------- cas suppression + { echo (" + + + + + + +
    +
    Médicament + + + + +
    Famille ".$leMedicament['fLibelle']."
    Médicament ".$leMedicament['mNomCommercial']." +
    Quanté remise ".$leMedicament['qte']."
    +
    +
    +
    Rapport de visite + + + + + + + + + + +
    Date de visite".$lesInfosVisite['wDate']."
    Motif ".$lesInfosVisite['vMotif']."medicament 1 + BIVALIC +
    Commentaires ".$lesInfosVisite['vRapport']."medicament 2 + APATOUX Vitamine C +
    +
    +
    +
    "); + //"); + + } + if ($_REQUEST['action']=="ajouterEchantillon") //-------------------------------------------------------- cas ajout d'un échantillon + { + echo (" + + +
    Médicament + + + + +
    Famille + +
    Médicament + +
    Quanté remise +
    +
    + + + + +
    Rapport de visite + + + + + + + + + + +
    Date de visite".$lesInfosVisite['wDate']."
    Motif ".$lesInfosVisite['vMotif']."medicament 1 + BIVALIC +
    Commentaires ".$lesInfosVisite['vRapport']."medicament 2 + APATOUX Vitamine C +
    +
    + + + + "); + } + + if ($_REQUEST['action']=="modifierEchantillon") //-------------------------------------------------------- cas modification + { + echo (" + + +
    Médicament + + + + +
    Famille ".$leMedicament['fLibelle']."
    Médicament ".$leMedicament['mNomCommercial']." +
    Quanté remise +
    +
    + + + + +
    Rapport de visite + + + + + + + + + + +
    Date de visite".$lesInfosVisite['wDate']."
    Motif ".$lesInfosVisite['vMotif']."medicament 1 + BIVALIC +
    Commentaires ".$lesInfosVisite['vRapport']."medicament 2 + APATOUX Vitamine C +
    +
    + + + + "); + + } +?> + + "> + + + + + + + + +
    + \ 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 "
    ";} + if ($action==="modifier") + {echo '

    MODIFICATION DE LA VALEUR D\'UN PARAMETRE

    '; + echo "";} + if ($action==="ajouter") + {echo '

    AJOUT DE LA VALEUR D\'UN PARAMETRE

    '; + echo "";} +?> + +
    + + + + + + + + +
    +
    + +
    Indice "); + + if ($_REQUEST['action']==="ajouter") {echo "";} + else {echo $infosParam['pIndice'];} +echo ("
    Valeur "); + if ($_REQUEST['action']==="ajouter") {echo "";} + if ($_REQUEST['action']==="modifier") {echo "";} + if ($_REQUEST['action']==="supprimer") {echo $infosParam['pLibelle'];} +echo ("
    Territoire "); + if ($_REQUEST['action']==="ajouter") {echo "";} + if ($_REQUEST['action']==="modifier") {echo "";} + if ($_REQUEST['action']==="supprimer") {echo $infosParam['territoire'];} +echo ("
    Département "); + if ($_REQUEST['action']==="ajouter") {echo "";} + if ($_REQUEST['action']==="modifier") {echo "";} + if ($_REQUEST['action']==="supprimer") {echo $infosParam['dep'];} +echo ("
    "); +} +else +{ +echo (" + + "); + if($infosParam['pType'] === "motifSo") + { + echo ("");} + else + {echo (" + oui + Non");} +echo (" + "); + } + else + { echo (" + + ");} +echo (" +
    Indice "); + if ($action==="ajouter") {echo "";} + else {echo $infosParam['pIndice'];} +echo ("
    Valeur "); + if ($action==="ajouter") {echo "";$actif=null;} + if ($action==="modifier") {echo "";$actif=null;} + if ($action==="supprimer") {echo $infosParam['pLibelle'];$actif="disabled='disabled'";} +echo ("
    Réorientation "); + if($infosParam['pPlancher'] == 1) + {echo (" + oui + Non
    Plancher
    Plafond
    + "); +} ?> + + + + +
    + +

    + + + +

    +
    + \ 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 '
    ';} + if ($_REQUEST['action']=="modifier") + { echo '

    MODIFICATION DU PRATICIEN '.$lesInfosPraticien['pNom'].' '.$lesInfosPraticien['pPrenom'].'

    '; + echo '';} + if ($_REQUEST['action']=="ajouter") + { echo "

    AJOUT D'UN NOUVEAU PRATICIEN

    "; + echo ' + ';} + echo (" +
    Coordonnées + "); + if ($_REQUEST['action']=="supprimer") //-------------------------------------------------------- cas suppression + { 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']."
    +
    "); + //"); + + } + if ($_REQUEST['action']=="ajouter") //-------------------------------------------------------- cas ajout + { + echo (' + Nom + + + Prénom + '); + echo (' + Rue + Code postal '); + echo (" + + codes postaux + Ville + Coefficient Notoriété + Type praticien "); + echo (" Région + + "); + } + + + if ($_REQUEST['action']=="modifier") //------------------------------------------------------------------------------------ cas modification + { + echo (' + Nom + + Prénom + '); + echo (' + Adresse + Code postal '); + echo (" + + codes postaux + Ville "); + echo (' + Coefficient Notoriété '); + echo (" + Type praticien "); + echo (" + Région "); + 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 '
    ';} + if ($_REQUEST['action']=="modifier") + { echo '

    MODIFICATION DE L\'UTILISATEUR '.$lesInfosUtilisateur['uNom'].' '.$lesInfosUtilisateur['uPrenom'].'

    '; + echo '';} + if ($_REQUEST['action']=="ajouter") + { echo "

    AJOUT D'UN NOUVEL UTILISATEUR

    "; + echo ' + ';} + echo (" +
    Coordonnées + "); + if ($_REQUEST['action']=="supprimer") //-------------------------------------------------------- cas suppression + { echo (" + + + + + + + +
    Nom ".$lesInfosUtilisateur['uNom']."
    Prénom ".$lesInfosUtilisateur['uPrenom']."
    Adresse ".$lesInfosUtilisateur['uAdresse']."
    Code postal ".$lesInfosUtilisateur['uCP']."
    Ville ".$lesInfosUtilisateur['uVille']."
    Statut ".$lesInfosUtilisateur['wStatut']."
    Nom de compte ".$lesInfosUtilisateur['uLogin']."
    +
    + + + "); + } + if ($_REQUEST['action']=="ajouter") //-------------------------------------------------------- cas ajout + { + echo (' + + + '); + echo (' + + + + + "); + echo (" + + +
    +
    Laboratoire + +
    +
    Nom +
    Prénom +
    Adresse
    Code postal '); + echo (" + + codes postaux
    Ville
    Statut
    Nom de compte +
    Mot de passe +
    Région +
    + + + + +
    +
    Laboratoire +
    "); + + } + if ($_REQUEST['action']=="modifier") //------------------------------------------------------------------------------------ cas modification + { + echo (' + Nom + + Prénom + '); + echo (' + Adresse + Code postal '); + echo (" + + codes postaux + Ville "); + + echo (" + Statut + Nom de compte + + Nouveau mot de passe ? Non Oui + + Région + + + + + +
    +
    Laboratoire +
    "); + } +?> + + + "> + + + + + + +