GRANGER Pierre-Emmanuel GIRAUD Florian



Documents pareils
Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Sommaire Accès via un formulaire d'identification... 4 Accès en mode SSO... 5 Quels Identifiant / mot de passe utiliser?... 6

CREATION WEB DYNAMIQUE

PHP et les Bases de données - Généralités

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

TP JAVASCRIPT OMI4 TP5 SRC

Stockage du fichier dans une table mysql:

Initiation à html et à la création d'un site web

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Mysql avec EasyPhp. 1 er mars 2006

Séance d ED n 5 : HTML et JavaScript

Pratique et administration des systèmes

DOSSIER D'ACTIVITES SUR LE PHP N 03 Créer une base de données MySQL avec PHPMyAdmin

Formulaire pour envoyer un mail

STID 2ème année : TP Web/PHP

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

PHP 4 PARTIE : BASE DE DONNEES

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

PHP 5. La base de données MySql. A. Belaïd 1

Attaques applicatives

Présentation du Framework BootstrapTwitter

Bernard Lecomte. Débuter avec HTML

Gestion de stock pour un magasin

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Mise en place d un serveur Proxy sous Ubuntu / Debian

1 Position du problème

Installation d'un serveur FTP géré par une base de données MySQL

Gestion du parc informatique des collèges du département du Cher. Manuel d utilisation de la solution de gestion de Parc

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

CREATION d UN SITE WEB (INTRODUCTION)

Olivier Mondet

I. MySQL : Serveur et SGBD

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

Diffuser un contenu sur Internet : notions de base... 13

Manuel d utilisation du module Liste de cadeaux PRO par Alize Web

Tutoriel : Feuille de style externe

Introduction à Expression Web 2

Optimiser les performances d un site web. Nicolas Chevallier Camille Roux

Principales failles de sécurité des applications Web Principes, parades et bonnes pratiques de développement

PDO : PHP Data Object 1/13

Groupe Eyrolles, 2003, ISBN : X

Bases de Données et Internet

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Sécurité des sites Web Pas un cours un recueil du net. INF340 Jean-François Berdjugin

Activités HTML. Code: act-html

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

Comment Accéder à des Bases de Données MySQL avec Windows lorqu'elles sont sur un Serveur Linux

Formation HTML / CSS. ar dionoea

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. Version EXOCA 1

Formation. Module WEB 4.1. Support de cours

Bases de données relationnelles

1. Base de données SQLite

Le générateur d'activités

Création de formulaires interactifs

Manuel du composant CKForms Version 1.3.2

W4 BPM WORKSPACE. MANUEL DE SUPERVISION FONCTIONNELLE Référence: W4WK_SUPERVISION_020_FR

// HTML, Javascript XHTML & CSS

Assistance à distance sous Windows

INSTALLATION ET CONFIGURATION D'UN SERVEUR WEB SUR MAC OS X

Insérer des images dans Base

DECONNEXION : Lorsque vous avez terminé, cliquez sur «Déconnexion», pour vous déconnecter.

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

Formulaires et Compteurs

1 ère Université WEB. Courbevoie Samedi 21 octobre Votre site interactif sur internet.

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Installation locale de JOOMLA SEPIA

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

TD HTML AVEC CORRECTION

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Guide Utilisateur - Guide général d'utilisation du service via Zdesktop ou Webmail v.8. Powered by. - media-2001.communication &.

Acer erecovery Management

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

NAMEBAY PRO. votre site de revente de noms de domaine en marque blanche. Documentation technique

Créer un site e-commerce avec Dreamweaver CS4 et PHP/MySQL

Tutoriel Prise en Main de la Plateforme MetaTrader 4. Mise à jour : 7/09/

Architecture de la plateforme SBC

SUPPORT DE COURS / PHP PARTIE 3

Utilisation de l éditeur.

Parcours FOAD Formation EXCEL 2010

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

ENVOI EN NOMBRE DE Mails PERSONNALISES

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

GUIDE DE DEMARRAGE RAPIDE:

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

DOM - Document Object Model

Attaques de type. Brandon Petty

Créer un site Web : mode d emploi Sous SPIP, avec le squelette «établissement» de l académie de Versailles

HelpAndManual_unregistered_evaluation_copy GESTIONNAIRE D'ALARMES CENTRALISE OPTIM'ALARM. Manuel d'utilisation

Utiliser un CMS: Wordpress

Sage CRM. 7.2 Guide de Portail Client

INCORPORER EXCEL EN LIGNE DANS UN FICHIER CRÉÉ AVEC L ÉDITEUR DE TEXTE 15 avril 2015

Transcription:

GRANGER Pierre-Emmanuel INTERFACE WEB DE RESERVATION DE LA SALLE INFORMATIQUES GTR - Promotion 2002

SOMMAIRE I. Introduction... 3 II. Outils nécessaires... 3 1. Apache :... 3 2. MySQL :... 3 3. Editeur HTML et PHP :... 3 Dreamweaver... 3 WebExpert 5 et PhpEdit 6... 3 III. Bases de MySQL... 4 1. Tables Existantes :... 4 Tables des Départements :... 4 Tables des séries :... 4 Table des comptes :... 4 2. Bases Complémentaires :... 5 Table Date :... 5 Tables PC :... 5 Table Réservation :... 5 IV. PHP... 6 1. Présentation PHP :... 6 2. Utilisation du PHP :... 6 3. Exemples liés au site :... 6 Exécution d'une requête :... 6 Création d'un formulaire avec une liste déroulante :... 6 Passage de variables cachés :... 7 List et mysql_fetch_row() :... 7 Découpage de l'image de la salle informatique :... 7 Fonctions :... 7 V. Interface... 9 1. Page d'accueil :... 9 2. Sélection de la date :... 10 3. sélection du poste :... 11 4. Enregistrement :... 12 5. Planning :... 12 6. Postes libres :... 13 VI. Mise à jour... 13 1. Script :... 13 2. Reservation.sql... 14 VII. Présentation du Site... 15 VIII. ANNEXES... 16 2 / 27

I. Introduction Ce projet a pour objectif de créer une interface Web de réservation de la salle informatique de l IUT, qui soit facile d utilisation, et qui enregistre chaque réservation dans une base de donnée. Cette interface à pour but d être utile à l IUT, et les étudiants des départements GTR et GEII. Principalement à ceux qui veulent avoir accès à la salle informatique. Elle doit aider les étudiants à s organiser pour accéder à la salle informatique, en ayant le choix entre les postes de travail, ou les postes connecté à Internet. Ce site est réalisé en PHP, HTML, et en accédant à une base MySQL. II. Outils nécessaires 1. Apache : Pour pouvoir créer ce site nous avons utilisé un serveur Internet tel qu Apache, pour pouvoir tester les pages au fur et à mesure de la construction du site. Apache a été installé et configuré sur un serveur Linux à l IUT, et il faut lui ajouter le module de PHP pour pouvoir faire fonctionner les pages contenant du code PHP. En effet, les machines clientes n ont pas d interpréteur PHP, les requêtes et fonctions sont donc exécutées sur le serveur, et c est lui qui retourne le résultat aux clients. Les lignes rajoutés sont :Addtype application/x-httpd-php3.php.php3 Loadmodule php3-module modules/libphp3.so. Nous avons aussi pu utiliser EasyPHP 1.5 comme serveur sous Windows. 2. MySQL : MySQL 3.23.32 nous sert de système de gestion de base de donné, installé avec "PHP My Admin", cela nous permet de créer et de gérer les tables de la base de donnés. MySQL est installé avec le serveur, ceci nous permet un accès plus facile aux tables. 3. Editeur HTML et PHP : Différents éditeurs ont été utilisés pour la conception du site : Dreamweaver Ce logiciel nous a été très utile pour la création des cadres comme dans le fichier index.htm, pour la création de feuille de style, et pour le découpage de l'image de la salle Internet. Pour toutes les parties ne contenant que du HTML. WebExpert 5 et PhpEdit 6 Ces logiciels permettent un meilleur affichage du code PHP, car il n'est pas reconnu dans Dreamweaver. 3 / 27

III. Bases de MySQL Pour la création de ce site nous avons eu besoin d'accéder aux bases de donnés des départements, des sections, et des étudiants de l'iut. Mais nous avons eu aussi besoin de créer d'autres bases de données, pour pouvoir enregistrer les réservations. La Mise à jour de ces tables entraîne une mise à jour du site. 1. Tables Existantes : Tables des Départements : Elle contient les nom et sigles des départements de l'iut. Tables des séries : Elle contient tous les groupes de l'iut, avec un champ ser_gid pour pouvoir associer les groupes avec les départements. Table des comptes : Elle contient tous les noms des étudiants, avec leur logins. 4 / 27

2. Bases Complémentaires : Table Date : Nous avons créer une table date qui contient tout les jours de réservations possibles, avec les horaires qui leur sont associés. Il y a un identifiant des dates (date_id) comme champ primaire qui identifie chacune des dates, et un identifiant des jours (jour_id) qui nous sert à classer les jours dans l'ordre de la semaine dans le planning, et qui peut éventuellement nous servir dans la mise à jour des tables. Tables PC : Cette table contient tout les noms des 28 PC, et une colonne indique par un entier 0 ou 1 si le PC est connecté à Internet (1: Pc connecté à Internet, 0: Poste de travail). Table Réservation : Cette table nous sert à enregistrer les réservations, elle contient un nombre qui identifie la réservation, le poste qui est réservé, l'identifiant de la date de réservation, et le login de l'étudiant qui fait la réservation. 5 / 27

IV. PHP 1. Présentation PHP : Le PHP va nous permettre de faire la liaison entre la base de donnés, et l'interface graphiques. Le code PHP est inséré à l'intérieur du code HTML, mais le fichier portera l'extension.php. Il permet l'utilisation de fonctions, de boucles (do, while ), de test (if, elseif, else), d'inclusion de fichier (include). Et à l'intérieur des balises PHP, on peut remettre des balises HTML. 2. Utilisation du PHP : Voici la présentation d'un fichier type en PHP pour notre site, avec les balises HTML nécessaires, contenant certaines fonctions basiques de PHP. <HTML> (début de fichier HTML) <BODY> (début du corps du fichier) <? (début de PHP) include connect.inc; (inclusion d'un fichier, connexion à MySQL) echo "<B><U>Etudiant:</B></U> \"$login\" ";(Utilisation de HTML avec des variables) mysql_close(); (Déconnexion de la base MySQL)?> (fin de PHP) </BODY> </HTML> (fin du fichier) 3. Exemples liés au site : Exécution d'une requête : On écrit les requêtes en PHP, et on les exécute sur le serveur qui nous retourne un résultat. Les variable sont désignés par le signe $. $requete="select dep_sigle FROM departement ORDER BY dep_sigle"; $resultat = mysql_query($requete); Création d'un formulaire avec une liste déroulante : A l'intérieur des balises PHP on peut créer des formulaires en HTML. Ceci nous permet de faire des liste déroulantes qui récupèrent les donnés des tables. On utilise des boucles pour récupérer une liste de résultat. echo "<FORM TARGET=\"bottomFrame\" ACTION=\"section.php\" METHOD=POST>"; echo "<SELECT NAME=\"Section\">"; While(list($sect)= mysql_fetch_row($resultat)) { echo "<OPTION>$sect \n"; echo "</SELECT>"; echo "</FORM>"; 6 / 27

Passage de variables cachés : Entre deux pages PHP, les valeurs des variables sont automatiquement passé d'une page à l'autre, mais si on veut faire sauter une page à une variable, et la récupérer deux pages plus loin, on peut passer la variable en paramètre caché. echo "<INPUT TYPE=HIDDEN NAME=\"login\" VALUE=\"$login\" >"; List et mysql_fetch_row() : La fonction list nous sert à affecter les valeurs des éléments d'un tableau, à des variables spécifiées, pour récupérer par exemple les différents paramètres du résultat d'une requête. Nous l'utilisons avec mysql_fetch_row, qui est une fonction qui nous récupère les lignes de résultats sous forme de tableau énuméré. $requete = "SELECT DISTINCT jour, horaire, re_pc_id, re_cpt_login FROM pc,date,reservation WHERE re_date_id=date_id AND re_pc_id=pc_id ORDER BY jour_id,horaire,re_pc_id "; $resultat = mysql_query($requete); echo "<BR><TABLE border=\"1\" width=\"500\" BGCOLOR=\"gray\" align=\"center\ ">"; while(list($jour,$horaire,$pc,$login) = mysql_fetch_row($resultat)) { echo "<tr BGCOLOR=lightgrey>"; echo "<td>$jour</td><td>$horaire</td><td>$pc</td><td>$login</td>"; echo "</tr>"; echo "</TABLE>"; Découpage de l'image de la salle informatique : On a découpé l'image de la salle informatique, et on a placé des liens sur chacun des postes. Avec les liens (href), on place une étiquette (alt) qui nous affiche l'état du poste. Tous les liens des 28 postes accèdent à la même page mais ils passent en paramètre le nom du poste. Ceci se fait après le nom du fichier appelé (ok.php), grâce au signe '?'. <area shape="rect" coords="85,43,130,73" href="ok.php?login=<?echo $login?> & PC=Info01 & jour=<?echo $jour?> & horaire=<?echo $horaire?>" target="centre" alt="<? echo internet(info01, $jour, $horaire);?>"> Fonctions : A l'intérieur d'un fichier PHP, on peut écrire une fonction et lui passer des paramètres. C'est ce que fait chaque lien, décrit plus haut, ils appellent une fonction. function internet($pc, $jour, $horaire) { $requete = "SELECT internet FROM pc WHERE pc_id='$pc' "; $resultat = mysql_query($requete); list($re_result) = mysql_fetch_row($resultat); if ($re_result == "1") { echo "$PC : Poste internet "; else { 7 / 27

echo "$PC : Poste de travail "; $requetedate = "SELECT date_id FROM date WHERE jour='$jour' AND horaire='$horaire'"; $dateid = mysql_query($requetedate); list($date_id) = mysql_fetch_row($dateid); $re_pc_occupe = "SELECT re_id FROM reservation WHERE re_date_id = '$date_id' AND re_pc_id='$pc'"; $verif = mysql_query($re_pc_occupe); if(mysql_num_rows($verif) == 0){ echo "Libre"; else { echo "Occupé"; 8 / 27

V. Interface 1. Page d'accueil : L'étudiant arrive sur cette page, il doit d'abord sélectionner son département, puis s'affiche les différentes séries en fonction du département. Il sélectionne alors sa série, ceci entraîne l'affichage du cadre du login. Les logins apparaissent en fonction du groupe choisi. 9 / 27

2. Sélection de la date : Après la sélection du login, l'étudiant doit choisir le jour de sa réservation, puis l'heure qu'il souhaite réserver selon le jour. 10 / 27

3. Sélection du poste : Ensuite s'affiche le l'image de la salle Informatique. L'étudiant n'a qu' placer sa sourie sur un poste pour voir son état, puis à cliquer pour le sélectionner. 11 / 27

4. Enregistrement : Après avoir tout sélectionné correctement, la réservation de l'étudiant est enregistrée, avec un récapitulatif de sa réservation. On remarque que la réservation ne s'effectue que si l'étudiant a choisi un horaire valide, un poste non occupé, un si il n'a pas déjà réservé à la même heure. Dans les cas contraires, une invite de retour lui sera proposée. 5. Planning : Avec un lien sur la page d'accueil, l'étudiant peut voir le planning des réservations de la semaine. 12 / 27

6. Postes libres : Au moment du choix du poste, l'étudiant peut aussi voir la liste des postes déjà réservés, pour le jour et l'heure qu'il a sélectionné. VI. Mise à jour 1. Script : Un Script de mise à jour a été créé, mais n'a pas pu être testé sur le serveur. Il est à exécuter les week-ends avec "Crontab" sous Linux. echo "Mise à jour des tables réservation de MySQL" mysql=/usr/local/mysql #chemin du repertoir MySQL login=root #login de MySQL password=toto #Password de MySQL base=tut #nom de la base des tables reservations source=/root/reservation.sql #chemin du fichier reservation.sql #accés au repertoir de MySQL cd $mysql #démarage de MySQL mysql -u $login -p $password #sélection de la base souhaité use $base #mise à jour des tables de reservation source $source #déconnexion de MySQL exit echo "Mise à jour éffectué" 13 / 27

2. Reservation.sql Le fichier reservation.sql est le fichier appelé dans le script, il effectue la remise à zéro des tables créer. Il permet aussi de changer les noms des PC, les horaires de réservation. #effacement des anciennes tables DROP TABLE reservation; DROP TABLE pc; DROP TABLE date; #Table reservation CREATE TABLE reservation ( re_id smallint(6) NOT NULL auto_increment, re_pc_id varchar(6) NOT NULL DEFAULT '', re_date_id varchar(10) NOT NULL DEFAULT '', re_cpt_login varchar(8) NOT NULL DEFAULT '0', PRIMARY KEY (re_id) ); #Table pc #internet : 1 = oui, 0 = non CREATE TABLE pc ( pc_id varchar(10) NOT NULL, internet smallint(2) DEFAULT'0', PRIMARY KEY (pc_id) ); INSERT INTO pc VALUES("Info01","1"); INSERT INTO pc VALUES("Info02","1"); INSERT INTO pc VALUES("Info03","1"); INSERT INTO pc VALUES("Info04","1"); INSERT INTO pc VALUES("Info05","1"); INSERT INTO pc VALUES("Info06","1"); INSERT INTO pc VALUES("Info07","1"); INSERT INTO pc VALUES("Info08","1"); INSERT INTO pc VALUES("Info09","1"); INSERT INTO pc VALUES("Info10","1"); INSERT INTO pc VALUES("Info11","1"); INSERT INTO pc VALUES("Info 12","1"); INSERT INTO pc VALUES("Info13","1"); INSERT INTO pc VALUES("Info14","1"); INSERT INTO pc VALUES("Info15","0"); INSERT INTO pc VALUES("Info16","0"); INSERT INTO pc VALUES("Info17","0"); INSERT INTO pc VALUES("Info18","0"); INSERT INTO pc VALUES("Info19","0"); INSERT INTO pc VALUES("Info20","0"); INSERT INTO pc VALUES("Info21","0"); INSERT INTO pc VALUES("Info22","0"); INSERT INTO pc VALUES("Info23","0"); INSERT INTO pc VALUES("Info24","0"); INSERT INTO pc VALUES("Info25","0"); INSERT INTO pc VALUES("Info26","0"); INSERT INTO pc VALUES("Info27","0"); INSERT INTO pc VALUES("Info28","0"); 14 / 27

#Table date CREATE TABLE date ( date_id smallint(3) auto_increment, jour varchar(10) NOT NULL DEFAULT '', jour_id smallint(1), horaire varchar(15) NOT NULL DEFAULT '', PRIMARY KEY (date_id) ); INSERT INTO date(jour,jour_id,horaire) VALUES("Lundi","1","12h - 12h45"); INSERT INTO date(jour,jour_id,horaire) VALUES("Lundi","1","12h45-13h30"); INSERT INTO date(jour,jour_id,horaire) VALUES("Mardi","2","12h - 12h45"); INSERT INTO date(jour,jour_id,horaire) VALUES("Mardi","2","12h45-13h30"); INSERT INTO date(jour,jour_id,horaire) VALUES("Mercredi","3","12h - 12h45"); INSERT INTO date(jour,jour_id,horaire) VALUES("Mercredi","3","12h45-13h30"); INSERT INTO date(jour,jour_id,horaire) VALUES("Jeudi","4","14h - 15h"); INSERT INTO date(jour,jour_id,horaire) VALUES("Jeudi","4","15h - 16h"); INSERT INTO date(jour,jour_id,horaire) VALUES("Jeudi","4","16h - 17h"); INSERT INTO date(jour,jour_id,horaire) VALUES("Jeudi","4","17h - 18h"); INSERT INTO date(jour,jour_id,horaire) VALUES("Vendredi","5","12h - 12h45"); INSERT INTO date(jour,jour_id,horaire) VALUES("Vendredi","5","12h45-13h30"); VII. Présentation du Site Présentation du site sur : www.projet-tut.fr.st login : GTR2002 Mot de passe : GTR2002 15 / 27

VIII. ANNEXES connect.inc <!-- connect.inc, fichier de connection à MySQL --> <body> <!-- définition des paramètres de connection à MySQL --> <? mysql_connect("localhost","root","toto") or die ("Impossible de se connecter"); @mysql_select_db("tut") or die ("Impossible de selectionner la base souhaitée");?> </body></html> reservation.css @charset "iso-8859-1"; body { font: normal 14px/normal "Times New Roman", Times, serif; background: url(backblue.gif) repeat; color: #000000 index.htm <!-- Index.htm, Page principal --> <!-- Titre du document --> <title>reservation de la salle informatique</title> <!-- Définition des cadres --> <frameset rows="20%,*" frameborder="no" framespacing="0"> <frame name="topframe" src="titre.htm" frameborder="no" scrolling="no" > <frameset cols="200,*" frameborder="no" border="0" framespacing="0" rows="*"> <frameset rows="33%,33%,33%" border="0" framespacing="0" cols="*" frameborder="no"> <frame name="leftframe" noresize src="departement.php" > <frame name="bottomframe" noresize src="section.htm"> <frame name="bottomframe1" noresize src="nom.htm"> </frameset> <frame name="centre" src="centre.htm" noresize border="0"> </frameset> </frameset> <noframes> <!-- Définition de ce qui va être écrit à l'écran si le navigateur ne supporte pas les cadres --> <H1>Votre navigateur ne supporte pas les Frames</H1> </noframes> </html> 16 / 27

titre.htm <!-- titre.htm, sité dans le cadre supérieur --> <title>reservations Info</title> <!-- Attache de la feuille de style reservation.css --> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <!-- Définition d'un tableau à deux cases --> <table width="75%" border="1" align="center"> <tr> <td> <!-- Lien vers le site de l'iut sur l'image du logo de l'iut --> <a href="http://iut-univers.ujf-grenoble.fr/gtr/" target="_blank"> <img src="siut.gif" border="0"></a> </td> <td> <!-- Titre du site --> <p align="center"><font size="5"> <B>RESERVATION D'UN POSTE DE LA SALLE D'INFORMATIQUE</B></font></p> </td> </tr> </table> <!-- Fin du Tableau --> </body></html> Centre.htm <!-- centre.htm, page d'accueil --> <title>présentation</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <!-- titre affiché --> <p align="center"><font size="6"><b>bienvenue, utilisateur de la salle informatique.</b></font></p> <br><br> <!-- texte d'accueil --> <p align="left"><font size="4"> Cette partie du site étant seulement réservé aux utilisateurs de la salle informatique, toute autre personne n'étant pas intérréssée peut passer son chemin.<br><br> Pour les autres, vous trouverez sur ce site les plages horaires et les PC disponibles, ainsi que les jours d'ouverture de la salle informatique.<br><br> Bonne navigation.</font></p> <BR><BR><BR><BR><BR><BR><BR><BR> <!-- Concepteur --> <p align="right"><u>concepteur</u> : <i> &<BR>GRANGER Pierre-Emmanuel</i></p> </body></html> 17 / 27

departement.php <!-- choix.php, fichier de récupération du département de l'élève --> <title>departement</title> <!-- appel du fichier configuration graphique --> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <p><b><u>departement :</U></B></p> <!- balise de début du PHP --> <? //appel du fichier de connexion include "connect.inc"; //définition de la requete à éxécuter su MySQL $requete="select dep_sigle FROM departement ORDER BY dep_sigle"; $resultat = mysql_query($requete); //début du formulaire, echo permet d insérer du HTML dans le PHP echo "<FORM TARGET=\"bottomFrame\" ACTION=\"section.php\" METHOD=POST>"; //liste déroulante echo "<SELECT NAME=\"Section\">"; While(list($sect)= mysql_fetch_row($resultat)) { echo "<OPTION>$sect \n"; echo "</SELECT>"; mysql_close(); //fermeture de la connection à MySQL?> <!- balise de fin du PHP --> <INPUT TYPE=SUBMIT VALUE="OK"> <!-- Insertion du bouton OK --> </FORM> <!-- fin du formulaire --> </body></html> section.htm <!-- section.htm, fichier de remplissage du cadre de la section au démarrage --> <title>affichagesection</title> <link rel="stylesheet" href="reservation.css" type="text/css"> </html> 18 / 27

section.php <!-- section.php, fichier de sélection de la série de l'étudiant, en fonction du départment --> <title>série</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <!--titre affiché dans le cadre --> <p><b><u>groupe :</U></B></p> <? include "connect.inc"; //connexion à MySQL //requete de sélection des séries $requete="select ser_nom FROM serie, departement WHERE ser_nom like 'G%' and ser_dep_id=dep_id and dep_sigle='$section' ORDER BY ser_nom "; $resultat = mysql_query($requete); //éxécution de la requete //formulaire echo "<FORM TARGET=\"bottomFrame1\" ACTION=\"nom.php\" METHOD=GET>"; //liste déroulante echo "<SELECT NAME=\"serie\">"; While(list($classe)= mysql_fetch_row($resultat)) { echo "<OPTION>$classe \n"; echo "</SELECT>"; mysql_close();?> //deconnexion de MySQL <INPUT TYPE=SUBMIT VALUE="OK"> </FORM> <!-- fin du formulaire --> </body></html> nom.htm <!-- nom.htm, fichier de remplissage du cadre nom au démarrage --> <title>nom</title> <link rel="stylesheet" href="reservation.css" type="text/css"> </html> 19 / 27

nom.php <!-- nom.php, fichier de sélection des logins --> <title>login</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <? include "connect.inc"; $requete="select cpt_login ". "FROM compte,serie ". "WHERE cpt_ser_gid=ser_gid AND ser_nom='$serie'". "ORDER BY cpt_login"; $resultat = mysql_query($requete);?> <p><b><u>selectionner votre login</u></b></p> <FORM TARGET="centre" ACTION="jourhoraire.php" METHOD=POST> <SELECT NAME="login"> <? While(list($login)= mysql_fetch_row($resultat)) { echo "<OPTION>$login \n"; mysql_close();?> </SELECT> <INPUT TYPE=SUBMIT VALUE="OK"> </FORM> </body></html> jourhoraire.php <!-- jouhoraire.htm, création de 2 cadres à l'intérieur du cadre pricipal --> <title>jourhoraire</title> <frameset rows="50%,50%" frameborder="no" border="0" framespacing="0" cols="*"> <frame name="jour" noresize src="jour.php?login=<? echo $login;?> "> <!--Passage du login en paramètre --> <frame name="horaire" src="horaire.php"> </frameset> <noframes> <H1>Votre navigateur ne supporte pas les Frames</H1> </noframes> </html> 20 / 27

jour.php <!-- jour.php, fichier de sélection du jour de la reservation --> <title>jour</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <!-- action : défini vers ou se fait le lien en fin de formulaire --> <form name=jour target=horaire action=horaire.php METHOD=POST> <? include "connect.inc"; $requetej = "SELECT DISTINCT jour FROM date"; $resultatj = mysql_query($requetej); echo "<b><u>etudiant:</b></u> \"$login\""; echo "<BR>"; echo "<SELECT NAME=\"joursel\">"; While(list($jour)= mysql_fetch_row($resultatj)) { echo "<OPTION>$jour</Option>"; // passage en variable caché du login pour les pages suivantes echo "<INPUT TYPE=HIDDEN NAME=\"login\" VALUE=\"$login\">"; mysql_close();?> <BR><BR><INPUT TYPE=SUBMIT VALUE="suite"> <!--bouton de lien --> </FORM> </body></html> horaire.php <!-- horaire.php, fichier de sélection de l'horaire --> <title>horaire</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <FORM NAME=Reservation TARGET=centre ACTION=salle.php METHOD=POST> <? include "connect.inc"; //définition et éxécution de la requete $requeteh="select horaire FROM date WHERE jour = '$joursel'"; $resultath = mysql_query($requeteh); echo "<u><b>reservation de $login :</B></u><BR><BR>"; //Liste déroulante echo "<SELECT NAME=\"horaire\">"; While(list($heure)= mysql_fetch_row($resultath)) { echo "<OPTION>$heure</Option>"; echo "</SELECT>"; //passage de paramètres cachés echo "<INPUT TYPE=HIDDEN NAME=\"login\" VALUE=\"$login\">"; echo "<INPUT TYPE=HIDDEN NAME=\"jour\" VALUE=\"$joursel\">"; 21 / 27

mysql_close();?> <BR><BR> <INPUT TYPE=SUBMIT VALUE="suite"> </FORM> </body></html> libre.php <!-- libre.php, page permettant de voir les PC occupés--> <title>libre</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <b>voici la liste des postes déja réservés:</b><br> <br> <? include "connect.inc"; echo "Pour la reservation du \"$jour\" à \"$horaire\" "; $requete="select DISTINCT pc_id, re_cpt_login FROM pc,date,reservation WHERE re_date_id=date_id AND re_pc_id = pc_id AND jour='$jour' AND horaire='$horaire' "; $resultat = mysql_query($requete); //définition d'un tableau pour afficher les postes occupés et leur occupant echo "<br><br><table border=1 width=150 BGCOLOR=gray>"; while (list($pc,$login) = mysql_fetch_row($resultat)) { echo "<tr BGCOLOR=lightgrey>"; echo "<td>$pc</td><td>$login</td>"; echo "</tr>"; mysql_free_result($resultat); //libération de la mémoire occupé mysql_close();?> </table> planing.php <!-- planing.php, page permettant de voir le planing de la salle --> <title>planing</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <br><p align="center"><b><u>planing de la salle :</u></b></p> <? include "connect.inc"; $requete = "SELECT DISTINCT jour, horaire, re_pc_id, re_cpt_login FROM pc,date,reservation WHERE re_date_id=date_id AND re_pc_id=pc_id ORDER BY jour_id,horaire,re_pc_id "; $resultat = mysql_query($requete); //définition d'un tableau pour afficher les postes occupés et leur occupant, avec le jour et l'horaire 22 / 27

echo "<br><table border=\"1\" width=\"500\" BGCOLOR=\"gray\" align=\"center\">"; while (list($jour,$horaire,$pc,$login) = mysql_fetch_row($resultat)) { echo "<tr BGCOLOR=lightgrey>"; echo "<td>$jour</td><td>$horaire</td><td>$pc</td><td>$login</td>"; echo "</tr>"; mysql_free_result($resultat); //libération de la mémoire occupé mysql_close();?> </table> </body></html> salle.php <!-- salle.php, page de sélection d'un poste--> <title>salle Info</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <h1 align="center">configuration de la salle informatique</h1> <BR> <? include "connect.inc"; //test si l'horaire a été choisi correctement if($horaire == "") { echo "<b><i>vous devez choisir un horaire valide</i></b>"; else { //lien vers la page des postes déjà occupé echo "<FORM ACTION=\"libre.php\" TARGET=_blank METHOD=POST>"; echo "Liste des postes reservés :"; echo "<INPUT TYPE=SUBMIT VALUE=\"Envoyer\">"; echo "<INPUT TYPE=HIDDEN NAME=\"jour\" VALUE=\"$jour\">"; echo "<INPUT TYPE=HIDDEN NAME=\"horaire\" VALUE=\"$horaire\">";?> </FORM> <font size="4"><u>choisissez votre poste : </u></font> <p><i> Pour choisir votre poste, déplacer le curseur sur l'image et regarder l'état du poste.</i></p> <p align="center"> <img src="salleinfo.jpg" border=1 usemap="#map"> <!-- Decoupage de l'image "Salleinfo.jpg" en 28 carrés pour les 28 postes plus un pour l'imprimante --> <!-- Passage des paramètres $login, $jour et $horaire en code PHP dans les liens--> <!-- Appel de la fonction "internet" definie plus bas. --> <map name="map"> <area shape="rect" coords="85,43,130,73" href="ok.php?login=<? echo "$login";?> & PC=Info01 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info01, $jour, $horaire);?>"> <area shape="rect" coords="130,41,174,72" href="ok.php?login=<? echo "$login";?> & PC=Info02 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info02, $jour, $horaire);?>"> <area shape="rect" coords="173,42,218,72" href="ok.php?login=<? echo 23 / 27

"$login";?> & PC=Info03 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info03, $jour, $horaire);?>"> <area shape="rect" coords="220,42,265,73" href="ok.php?login=<? echo "$login";?> & PC=Info04 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info04, $jour, $horaire);?>"> <area shape="rect" coords="273,41,316,74" href="ok.php?login=<? echo "$login";?> & PC=Info15 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info15, $jour, $horaire);?>"> <area shape="rect" coords="317,43,362,72" href="ok.php?login=<? echo "$login";?> & PC=Info16 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info16, $jour, $horaire);?>"> <area shape="rect" coords="362,43,406,73" href="ok.php?login=<? echo "$login";?> & PC=Info17 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info17, $jour, $horaire);?>"> <area shape="rect" coords="407,42,452,72" href="ok.php?login=<? echo "$login";?> & PC=Info18 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info18, $jour, $horaire);?>"> <area shape="rect" coords="108,143,151,173" href="ok.php?login=<? echo "$login";?> & PC=Info05 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info05, $jour, $horaire);?>"> <area shape="rect" coords="152,145,197,175" href="ok.php?login=<? echo "$login";?> & PC=Info06 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info06, $jour, $horaire);?>"> <area shape="rect" coords="198,143,242,173" href="ok.php?login=<? echo "$login";?> & PC=Info07 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info07, $jour, $horaire);?>"> <area shape="rect" coords="298,143,344,173" href="ok.php?login=<? echo "$login";?> & PC=Info19 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info19, $jour, $horaire);?>"> <area shape="rect" coords="344,144,390,173" href="ok.php?login=<? echo "$login";?> & PC=Info20 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info20, $jour, $horaire);?>"> <area shape="rect" coords="387,143,432,173" href="ok.php?login=<? echo "$login";?> & PC=Info21 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info21, $jour, $horaire);?>"> <area shape="rect" coords="108,172,151,206" href="ok.php?login=<? echo "$login";?> & PC=Info08 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info08, $jour, $horaire);?>"> <area shape="rect" coords="152,175,198,204" href="ok.php?login=<? echo "$login";?> & PC=Info09 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info09, $jour, $horaire);?>"> <area shape="rect" coords="199,173,241,205" href="ok.php?login=<? echo "$login";?> & PC=Info10 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info10, $jour, $horaire);?>"> <area shape="rect" coords="299,174,344,206" href="ok.php?login=<? echo "$login";?> & PC=Info22 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info22, $jour, $horaire);?>"> <area shape="rect" coords="346,174,388,206" href="ok.php?login=<? echo "$login";?> & PC=Info23 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info23, $jour, $horaire);?>"> <area shape="rect" coords="387,175,433,205" href="ok.php?login=<? echo "$login";?> & PC=Info24 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info24, $jour, $horaire);?>"> <area shape="rect" coords="84,275,129,305" href="ok.php?login=<? echo "$login";?> & PC=Info11 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info11, $jour, $horaire);?>"> <area shape="rect" coords="128,277,174,308" href="ok.php?login=<? echo "$login";?> & PC=Info12 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info12, $jour, $horaire);?>"> <area shape="rect" coords="175,275,219,306" href="ok.php?login=<? echo "$login";?> & PC=Info13 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info13, $jour, $horaire);?>"> <area shape="rect" coords="219,275,265,305" href="ok.php?login=<? echo "$login";?> & PC=Info14 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info14, $jour, $horaire);?>"> <area shape="rect" coords="271,277,317,307" href="ok.php?login=<? echo "$login";?> & PC=Info25 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info25, $jour, $horaire);?>"> 24 / 27

<area shape="rect" coords="317,276,361,305" href="ok.php?login=<? echo "$login";?> & PC=Info26 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info26, $jour, $horaire);?>"> <area shape="rect" coords="360,276,408,305" href="ok.php?login=<? echo "$login";?> & PC=Info27 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info27, $jour, $horaire);?>"> <area shape="rect" coords="407,276,453,306" href="ok.php?login=<? echo "$login";?> & PC=Info28 & jour=<? echo "$jour";?> & horaire=<? echo "$horaire";?>" target="centre" alt="<? echo internet(info28, $jour, $horaire);?>"> <area shape="rect" coords="501,195,534,256" alt="imprimante reseau"> </map> </p> <? /*fin du else*/?> <? //fonction d'affichage de la situation du PC : libre ou occupé, connecté ou non function internet($pc, $jour, $horaire) { // requête reperant les postes internet ou de travail $requete = "SELECT internet FROM pc WHERE pc_id='$pc' "; $resultat = mysql_query($requete); list($re_result) = mysql_fetch_row($resultat); if ($re_result == "1") { echo "$PC : Poste internet "; else { echo "$PC : Poste de travail "; // requête reperant le numéro d'identification de la date $requetedate = "SELECT date_id FROM date WHERE jour='$jour' AND horaire='$horaire'"; $dateid = mysql_query($requetedate); list($date_id) = mysql_fetch_row($dateid); // requête reperant les postes occupés ou non en fonction de la date $re_pc_occupe = "SELECT re_id FROM reservation WHERE re_date_id = '$date_id' AND re_pc_id='$pc'"; $verif = mysql_query($re_pc_occupe);?> if(mysql_num_rows($verif) == 0){ echo "Libre"; else { echo "Occupé"; </body></html> 25 / 27

ok.php <!-- ok.php, page final qui enregistre la reservation--> <title>ok</title> <link rel="stylesheet" href="reservation.css" type="text/css"> <body> <? include "connect.inc"; //récapitulatif de la reservation echo "<B><U>Votre Reservation :</U></B><BR>$PC, $login, $jour, $horaire <BR>"; //requetes de vérification que l'étudiant n'a pas déjà reservé un PC à la même heure $requetedate = "SELECT date_id FROM date WHERE jour='$jour' AND horaire='$horaire'"; $dateid = mysql_query($requetedate); list($date_id) = mysql_fetch_row($dateid); $requeteleve= "SELECT re_id from reservation where re_cpt_login='$login' and re_date_id='$date_id'"; $verifeleve=mysql_query($requeteleve); //test de l'étudiant, si il n'a pas déjà reservé à la même heure if( mysql_num_rows($verifeleve) == 0) { //requete de vérification que le poste est disponible $re_pc_occupe = "SELECT re_id FROM reservation WHERE re_date_id = '$date_id' AND re_pc_id='$pc'"; $verif = mysql_query($re_pc_occupe); echo "<BR>"; //test de la liberté du poste //enregistrement de la reservation si le poste est libre if(mysql_num_rows($verif) == 0){ $requeteajout = "INSERT INTO reservation(re_pc_id,re_date_id,re_cpt_login) VALUES ('$PC','$date_id','$login')"; mysql_query($requeteajout); echo "<BR><I>Votre reservation a été éffectuée</i>"; //si le poste et occupé, insertion d'un bouton de retour else { echo "<BR><I>Le poste est occupé. Reporter vous a la table des postes déja reservés</i>"; echo "<p align=\"left\">"; echo "<FORM TARGET=\"centre\" ACTION=\"salle.php\" METHOD=POST>"; echo "<INPUT TYPE=SUBMIT VALUE=\"Changer de poste\">"; echo "<INPUT type=hidden NAME=\"login\" VALUE=\"$login\">"; echo "<INPUT type=hidden NAME=\"horaire\" VALUE=\"$horaire\">"; echo "<INPUT type=hidden NAME=\"jour\" VALUE=\"$jour\" >"; echo "</FORM>"; echo "</p>"; else { echo "Désolé vous avez déjà reservé un poste à cette heure ci."; mysql_close();?> 26 / 27

<!-- insertion d'un bouton de retour pour éffectuer une autre reservation --> <p align="left"> <FORM TARGET="centre" METHOD="POST" action="jourhoraire.php"> <INPUT TYPE=SUBMIT VALUE="Nouvelle Reservation"> <INPUT type=hidden NAME="login" VALUE=<? echo $login?> > </FORM> </p> </body></html> 27 / 27