diff --git a/controleurs/c_connexion.php b/controleurs/c_connexion.php new file mode 100644 index 0000000..b0ceedb --- /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 index e69de29..75a2465 100644 --- a/controleurs/c_param.php +++ 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_utilisateur.php b/controleurs/c_utilisateur.php new file mode 100644 index 0000000..c5e03f3 --- /dev/null +++ b/controleurs/c_utilisateur.php @@ -0,0 +1,49 @@ +getInfosUtilisateur("*",$_SESSION['idUtilisateur']); + include("vues/v_ficheUtilisateur.php"); + break; + } + +//----------------------------------------- AJOUT/MODIFICATION/SUPPRESSION + +case 'modifier': + + { + include("vues/v_entete.php"); + $lesInfosUtilisateur = $pdo->getInfosUtilisateur("*",$_SESSION['idUtilisateur']); + include("vues/v_unUtilisateur.php"); + break; + } + +//----------------------------------------- VALIDATION MODIFICATION +case 'validerModifier': + { //majUtilisateur <---faire la fonction dans la classe pdo + if ($_REQUEST['zOk']=="OK") {$pdo->majUtilisateur($type, $valeur, addslashes ($_REQUEST['zLibelle']), $_REQUEST['zTerritoire'], $_REQUEST['zDep'], $plancher, $plafond);} + header ('location: index.php?choixTraitement=utilisateur&action=voir'); + break; + } + +default : + { + echo 'erreur d\'aiguillage !'.$action; + break; + } +} +?> \ No newline at end of file diff --git a/controleurs/fonctionsProjet.inc b/controleurs/fonctionsProjet.inc new file mode 100644 index 0000000..7646314 --- /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 index e69de29..582f929 100644 --- a/index.php +++ b/index.php @@ -0,0 +1,35 @@ + diff --git a/modele/classPDO b/modele/classPDO deleted file mode 100644 index e69de29..0000000 diff --git a/modele/classPDO.php b/modele/classPDO.php new file mode 100644 index 0000000..611457e --- /dev/null +++ b/modele/classPDO.php @@ -0,0 +1,152 @@ +query("SET CHARACTER SET utf8"); + } + public function _destruct() + { + PdoBD::$monPdo = null; + } +/** + * Fonction statique qui cree l'unique instance de la classe PdoBD +*/ + public static function getPdoBD() + { + if(PdoBD::$monPdoBD==null) {PdoBD::$monPdoBD= new PdoBD();} + return PdoBD::$monPdoBD; + } + +/** ---------------------------------------------- module Connexion + * + * dernière modif le : 09/03/2022 par Pascal Blain + * Retourne les informations d'un utilisateur sous la forme d'un tableau associatif +*/ + public function getInfosUtilisateur($login,$mdp) + { + $req = "SELECT uId,uNom,uPrenom,uLogin,uMdp,uAdresse,uCP,uVille,uDateEmbauche,uSecteur,uStatut,uRegion, + st.pLibelle as wStatut,s.pLibelle as wSecteur,r.pLibelle as wRegion,uLabo,lNom + FROM utilisateur + INNER JOIN parametre st ON (st.pType='statUti' AND st.pIndice=uStatut) + INNER JOIN parametre r ON (r.pType='region' AND r.pIndice=uRegion) + INNER JOIN parametre s ON (s.pType='secteur' AND s.pIndice=uSecteur) + INNER JOIN labo ON uLabo=lCode"; + if ($login==="*") + {$req.=" WHERE uId='$mdp';";} + else + {$req.=" WHERE uLogin='$login' + AND uMdp='$mdp';";} + //echo $req; + $rs = PdoBD::$monPdo->query($req); + if ($rs === false) {afficherErreurSQL("Probleme lors de la lecture des informations d'un utilisateur...", $req, PdoBD::$monPdo->errorInfo());} + $ligne = $rs->fetch(); + return $ligne; + } +/** ---------------------------------------------- Fin module Connexion +*/ + +/** ---------------------------------------------- gestion des PARAMETRES +/** + * Retourne les informations de la table TYPEPARAMETRE +*/ + public function getLesParametres() + { + $req = "SELECT tlId, tlLibelle, tlBooleen, tlChoixMultiple, tlCumul + FROM typeParametre + ORDER BY tlLibelle;"; + $rs = PdoBD::$monPdo->query($req); + if ($rs === false) {afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} + $lesLignes = $rs->fetchAll(); + return $lesLignes; + } +/** + * Retourne dans un tableau associatif les informations de la table PARAMETRE (pour un type particulier) +*/ + public function getParametre($type) + { + $req = "SELECT pIndice, pLibelle, pCategorie + FROM parametre + WHERE pType='$type' + ORDER by pIndice;"; + $rs = PdoBD::$monPdo->query($req); + if ($rs === false) {afficherErreurSQL("Probleme lors de la recherche des parametres dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} + $lesLignes = $rs->fetchAll(); + return $lesLignes; + } +/** + * Retourne dans un tableau associatifles informations de la table PARAMETRE (pour un type particulier) +*/ + public function getInfosParam($type, $valeur) + { + if ($valeur=="NULL") + {$req = "SELECT pType, max(pIndice)+1 AS pIndice, ' ' AS pLibelle, tlLibelle, pPlancher, pPlafond + FROM parametre INNER JOIN typeParametre ON typeParametre.tlId=parametre.pType + WHERE pType='$type';"; + } + else + {$req = "SELECT pType, pIndice, pLibelle, tlLibelle, pPlancher, pPlafond + FROM parametre INNER JOIN typeParametre ON typeParametre.tlId=parametre.pType + WHERE pType='$type' + AND pIndice like '$valeur';"; + } + $rs = PdoBD::$monPdo->query($req); + if ($rs === false) {afficherErreurSQL("Probleme lors de la recherche dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} + $ligne = $rs->fetch(); + return $ligne; + } +/** + * Met a jour une ligne de la table PARAMETRE +*/ + public function majParametre($type, $valeur, $libelle, $territoire, $dep, $plancher, $plafond) + { + $req = "UPDATE parametre SET pLibelle='$libelle', pPlancher=$plancher, pPlafond=$plafond + WHERE pType='$type' + AND pIndice=$valeur;"; + $rs = PdoBD::$monPdo->exec($req); + if ($rs === false) {afficherErreurSQL("Probleme lors de la mise a jour des parametres dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} + } +/** + * supprime une ligne de la table PARAMETRE +*/ + public function supprimeParametre($type, $valeur) + { + $req = "DELETE + FROM parametre + WHERE pType='$type' + AND pIndice=$valeur;"; + $rs = PdoBD::$monPdo->exec($req); + if ($rs === false) {afficherErreurSQL("Probleme lors de la suppression d'un parametre dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} + } +/** + * ajoute une ligne dans la table PARAMETRE +*/ + public function ajoutParametre($type, $valeur, $libelle,$territoire, $dep, $plancher, $plafond) + { + $req = "INSERT INTO parametre + (pType, pIndice, pLibelle, pPlancher, pPlafond) + VALUES ('$type', $valeur, '$libelle', $plancher, $plafond);"; + $rs = PdoBD::$monPdo->exec($req); + if ($rs === false) {afficherErreurSQL("Probleme lors de l'insertion d'un parametre dans la base de données.", $req, PdoBD::$monPdo->errorInfo());} + } +/** ---------------------------------------------- fin gestion des PARAMETRES +*/ +} +?> \ No newline at end of file diff --git a/php0.php b/php0.php deleted file mode 100644 index faa759b..0000000 --- a/php0.php +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - Accueil : mon premier script php ... - - - -Bonjour le monde !'; -//---- utilisation d'une fonction php -echo ' - nous sommes le '.date("d-m-Y").' et il est '.date("H:i").'
'; -//---- utilisation d'une variable d'environnement -echo " - l'adresse IP de ma machine est ".$_SERVER['REMOTE_ADDR']; -?> - - - \ No newline at end of file diff --git a/styles/style.css b/styles/style.css deleted file mode 100644 index e69de29..0000000 diff --git a/styles/styles.css b/styles/styles.css new file mode 100644 index 0000000..3855dbd --- /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..a3e37e0 --- /dev/null +++ b/vues/proceduresJava.js @@ -0,0 +1,248 @@ +// version modifiée 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 données 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 année 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 séparateurs 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 après 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 éléments sélectionnés */ + { + valeur = origine.options[origine.options.selectedIndex].value; /* valeur de l'élément sélectionné */ + texte = origine.options[origine.options.selectedIndex].text; /* texte de l'élément sélectionné */ + 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_connexion.php b/vues/v_connexion.php new file mode 100644 index 0000000..1b0d2bb --- /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 index e69de29..c63d87d 100644 --- a/vues/v_entete.php +++ 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..27418d8 --- /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..9db69df --- /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_ficheUtilisateur.php b/vues/v_ficheUtilisateur.php new file mode 100644 index 0000000..9db69df --- /dev/null +++ b/vues/v_ficheUtilisateur.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_pied.php b/vues/v_pied.php index e69de29..42cc26a 100644 --- a/vues/v_pied.php +++ b/vues/v_pied.php @@ -0,0 +1,5 @@ + + +

    + + \ No newline at end of file diff --git a/vues/v_unParam.php b/vues/v_unParam.php new file mode 100644 index 0000000..955528e --- /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