EXEMPLE PROJET. Objectifs de la séance : De l analyse à la conception Passage de l UML au Site Web

Documents pareils
RÉALISATION D UN SITE DE RENCONTRE

Utiliser SQL Server 2008 R2 Reporting Services comme source de donne es pour Microsoft Excel

Dans l'article précédent, vous avez appris

Introduction à Expression Web 2

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)

CREATION WEB DYNAMIQUE

Projet ISN - dossier réalisé par Randrianarimanana Stéphanie. Titre du projet : Site de rencontre. le nom de notre site de rencontre : Linkymeet

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

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

TP JAVASCRIPT OMI4 TP5 SRC

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

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

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

Modélisation et Gestion des bases de données avec mysql workbench

En date du 11 décembre 2008

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

Gestion de stock pour un magasin

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

Rapport de stage Nicolas PLAZE Licence Pro A2I. Rapport de Stage LICENCE PRO A2I. Société INFHOTIK. Nicolas PLAZE

Pratique et administration des systèmes

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

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

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

Projet de programmation (IK3) : TP n 1 Correction

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

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

Impact des robots d indexation sur le cache de second niveau de SPIP IMBERTI Christophe - SG/SPSSI/CP2I/DO Ouest 06/06/2012 mis à jour le 05/07/2012

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

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

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

Stockage du fichier dans une table mysql:

Devenez un véritable développeur web en 3 mois!

PDO : PHP Data Object 1/13

AWS avancé. Surveiller votre utilisation d EC2

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Package Java.util Classe générique

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

PHP 5.4 Développez un site web dynamique et interactif

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

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

PHP 4 PARTIE : BASE DE DONNEES

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

Examen Médian - 1 heure 30

Documentation de conception

1. Base de données SQLite

Formation : WEbMaster

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

Encryptions, compression et partitionnement des données

Technologie Web. Conception de sites Web. Alexandre Pauchet. INSA Rouen - Département ASI. INSA - ASI TechnoWeb : Rappels UML 1/21

Construction d un Site Internet Dynamique avec Joomla René-Yves Hervé, Ph.D.

Architecture Orientée Service, JSON et API REST

Mysql. Les requêtes préparées Prepared statements

PHP. PHP et bases de données

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Tutoriel d installation de Hibernate avec Eclipse

Les Utilisateurs dans SharePoint

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

SYSTÈMES D INFORMATIONS

KompoZer. Composition du site : _ une page d'accueil : index.html. _ une page pour la théorie : theorie.html. _ une page pour les photos : photos.

Programmation Web. Madalina Croitoru IUT Montpellier

Configurer la supervision pour une base MS SQL Server Viadéis Services

La double authentification dans SharePoint 2007

Mysql avec EasyPhp. 1 er mars 2006

Migration d une Base de données

Attaques de type. Brandon Petty

Sommaire : Pourquoi créer un site web? Qu est-ce qu un site Web? Les différents types de sites. Quelles solutions peuvent être employées?

Le stockage local de données en HTML5

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

Bon ben voilà c est fait!

D'UN SITE INTERNET LES S D'UN SITE INTERNET PRATIQUE ET PERFORMANT PRATIQUE ET PERFORMANT

Note de synthèse. Développement web sur le CMS Prestashop. Stage du 17 mai au 25 juin Entreprise decoratzia.com 15 rue Erlanger Paris

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module http MMS AllMySMS.com Manuel d intégration

Bases de données avancées

Manuel d utilisation Mailchimp

Tutoriel : Feuille de style externe

Catalogue des Formations Techniques

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

Session S12 Les bases de l optimisation SQL avec DB2 for i

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

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

Paginer les données côté serveur, mettre en cache côté client

SITE I NTERNET. Conception d un site Web

OUTIL DE TRAVAIL COLLABORATIF

Rapport de Mini-Projet en ArcGIS Engine

Introduction au langage C

Installation de SQL Server Reporting Services avec l intégration dans un site Windows SharePoint Services V3

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

SUPPORT DE COURS / PHP PARTIE 3

Les BASES de DONNEES dans WampServer

Exploiter les statistiques d utilisation de SQL Server 2008 R2 Reporting Services

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Formation VBA 3 Interagir

Content Management System V.3.0. BlackOffice CMS V3.0 by ultranoir 1

Transcription:

EXEMPLE PROJET Objectifs de la séance : De l analyse à la conception Passage de l UML au Site Web

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 2 Projet Objectifs Mettre en application les concepts vu en cours Mise en application de l informatique Compréhension de la complexité de mise en œuvre d une solution informatique A quoi va nous servir UML dans le projet? Besoins et fonctionnalités attendues à Cas d utilisation Quels sont les besoins de mon «entreprise» pour le site? Quelles sont les fonctionnalités attendues dans le site? Processus à Diagrammes d activités Description de l ensemble de processus métier liés au site Différents modes de navigation dans le site Algorithmes pour la mise en œuvre (notamment accès BdD) Informations manipulées à Diagramme de classes Identification des concepts (entités) manipulés par le site Architecture à Diagramme de classes Description de la structure du site et de ses pages

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 3 Exemple : Association DVDs Exemple : site d une association d échange de DVDs d occasion Créer un site vitrine permettant de faire connaître les DVDs disponibles à travers l association Permettre aux internautes de rechercher un film qui les intéresse dans la base de l association

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 4 Exemple : Association DVDs Démarche : Toujours commencer par les besoins On doit être capable de rechercher un film par son titre On doit être capable de feuilleter le catalogue de DVDs disponibles Pour chaque film, on doit être capable de voir les détails concernant le film (titre originel, genre, directeur ) Diagramme de cas d utilisation identifier les acteurs identifier les besoins, puis les fonctionnalités attendues pour chaque acteur

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 5 Exemple : Association DVDs Fonctionnalités à diagramme de cas d utilisation sual Paradigm for UML Community Edition [not for commercial use] Rechercher un titre <<Include>> Afficher les résultats <<Extend>> Internaute Feuilleter catalogue <<Extend>> Afficher détails du film

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 6 Exemple : Association DVDs Démarche : comprendre le fonctionnement On ne sait toujours pas comment faire le site L Pour être capable de comprendre comment ça devrait marcher, il faut comprendre les processus Comprendre la dynamique pour mieux comprendre ce qu il y a à faire Diagramme d activités Processus permettant la réalisation des fonctionnalités prévues

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 7 Exemple : Association DVDs Spécifier le processus de navigation Comprendre comment devrait fonctionner le site Titre Titre Titre bla bla bla Titre OK Titre n xx yy zz titre xxx yyy zzz Titre n xx yy zz titre xxx yyy zzz n : xx Titre : xxx Genre :

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 8 Diagramme d activités : processus de navigation

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 9 Exemple : Association DVDs Une fois les processus maîtrisés, nous pouvons déterminer les informations et les responsabilités Trouver les informations qu on va manipuler Premier diagramme de classes avec les entités de la BdD Identification des classes «entity» Identifier les composants principaux de notre architecture Enrichir le diagramme de classes avec les classes «contrôle» et «dialogue» Ok, mais comment?? L

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 10 Exemple : Association DVDs Démarche : identification des concepts métier Pour être capable de remplir ces fonctionnalités, de quoi avons-nous besoin? 1 er diagramme de classes Concepts manipulés Films : titre, directeur, genre Acteurs : nom, prénom Les acteurs jouent dans les films Les directeurs et les acteurs sont des personnes

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 11 Exemple : Association DVDs Diagramme de classes : concepts manipulés Visual Paradigm Professional Edition(Université Paris 1 Panthéon Sorbonne) Film -nfilm : Integer -titre : String -genre : String * * dirige 1 dir * joue * acteur Personne -npers : Integer -nom : String -prénom : String Catalogue +recherche(titre) : Film [0..*] +recuperecatalogue() : Film [0..*]

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 12 Exemple : Association DVDs Mise en relation entre les données manipulées et le processus? comment exploiter ces données dans le site? comment réaliser le site?? L Retour sur le processus de navigation identifier les blocs d actions / activités identifier qui peut faire quoi Identifier les composants de notre architecture identifier les responsabilités de chaque bloc une responsabilité à une classe Enrichir le diagramme de classes avec les classes «contrôle» et «dialogue»

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 13 Diagramme d activités : processus de navigation Pages statiques (page accueil, formulaire de recherche) Recherche titre Récupérer catalogue Détails Film

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 14

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 15 Exemple : Association DVDs Architecture à structure de l application Une fois que les responsabilités sont identifiées, on peut les organiser dans l architecture Identifier les éléments d interaction avec les acteurs Identifier les éléments responsables de logique applicative Etablir les relations entre ces éléments et les concepts métiers Réalisation d un 2 ème Diagramme de classes

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 16 Exemple : Association DVDs 2 ème Diagramme de classes : structure de l application

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 17 Mise en œuvre Exemple : Association DVDs comment passer des processus et classes à un site? mise en œuvre des processus identification des actions / activités à programmer à pages Web dynamiques penser l algorithme pour ces actions Exemple page ctlcatalogue récupérer les titres dans le catalogue les afficher dans une page

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 18 Exemple : Association DVDs Mise en œuvre affichage du catalogue objectif : afficher le contenu du catalogue on se concentre dans une action à la fois sual Paradigm Professional Edition(Université Paris 1 Panthéon Sorbonne) AfficherCatalogue Récupérer titres catalogue Afficher catalogue [else] [clic film] Afficher détails film

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 19 Exemple : Association DVDs Mise en œuvre affichage du catalogue on se concentre dans une action/activité à la fois que me faut-il pour réaliser l action / activité? quelles étapes doit-on réaliser? Algorithme! Activité «Récupérer titres catalogue» Objectif : récupérer les films de la base de données étapes à réaliser : connexion à la BdD réaliser une requête SQL pour récupérer les films récupérer les résultats ils affichés par l action afficher catalogue

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 20 Exemple : Association DVDs Mise en œuvre activité «Récupérer titres catalogue» Visual Paradigm Professional Edition(Université Paris 1 Panthéon Sorbonne) RécupérerTitres Ouvrir connexion à la BdD connexion Si [ erreur de connexion ] [ else ] afficher message sql="select titre From Film;" arrêter le programme envoyer requête à la BdD résultats Mais en PHP ça donne quoi??

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 21 Exemple : Association DVDs On cherche la traduction en PHP Comment ouvrir une connexion avec une BdD? Classe «mysqli» Besoin de certaines informations user, host, mot de passe et base de données autant de variables nécessaires si la connexion ne marche pas, on aura un code d erreur RécupérerTitres $mysqli->connect_errno Visual Paradigm Professional Edition(Université Paris 1 Panthéon Sorbonn Ouvrir connexion à la BdD

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 22 Exemple : Association DVDs La fonction «die» arrête l exécution de PHP <html> <head> </head> <body>... La création d un objet «mysqli» <?php entraîne l ouverture de la $user="uml"; connexion avec la BdD $host="localhost"; $password="uml"; $database="collectdvd"; $mysqli = new mysqli($host, $user,$password, $database); if ($mysqli->connect_errno) { die ("Echec lors de la connexion à MySQL : ". $mysqli->connect_error); } echo "<p> connecté </p>" ;?> La propriété «connect_errno» de l objet «mysqli» indique s il y a eu une erreur

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 23 Exemple : Association DVDs On cherche la traduction en PHP ual Paradigm Professional Edition(Université Paris 1 Panthéon Sorbonne) Comment on envoie une requête SQL à la BdD? RécupérerTitres On va utiliser la classe «mysqli» Ouvrir connexion Opération «query ( sql )» à la BdD Besoin de préparer la requête SQL on cherche des informations à requête SELECT SELECT titre FROM Film connexion On obtient un objet contenant les résultats si pas de résultats, on obtient un objet «vide» Si [ erreur de connexion ] [ else ] sql="select titre From Film;" envoyer requête à la BdD

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 24 Exemple : Association DVDs... <?php La variable $sql contient notre requête SQL $sql = "SELECT titreorig FROM Film f" ; $res = $mysqli->query($sql); if (!$res) { die ("<p>pas de film disponible. </p>") ; } echo "<p> On a ". $res->num_rows. " lignes </p>" ; L opération «query» de l objet «mysqli» permet d envoyer la requête à la BdD?> L objet «$res» contient tous les résultats, y compris le nombre de lignes (propriété «num_rows»)

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 25 Exemple : Association DVDs Mise en œuvre affichage du catalogue ü récupérer titres catalogues on se concentre désormais sur l action «afficher catalogue» sual Paradigm Professional Edition(Université Paris 1 Panthéon Sorbonne) AfficherCatalogue Récupérer titres catalogue Afficher catalogue [else] [clic film] Afficher détails film

Afficher d 20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 26 Exemple : Association DVDs Activité «Afficher catalogue» Objectif : afficher les résultats obtenus de la BdD étapes à réaliser : on veut afficher le résultats dans une liste (ou tableau) à afficher la balise pour démarrer la liste (ou tableau) Visual Paradigm Professional Edition(Université Paris 1 Panthéon Sorbonne) pour chaque film dans le résultats, afficher le titre AfficherCatalogue afficher la balise de fin de liste Récupérer titres catalogue Afficher catalogue

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 27 Exemple : Association DVDs ual Paradigm Professional Edition(Université Paris 1 Panthéon Sorbonne) AfficherTitres afficher balise fin de liste résultats Afficher balise début liste Tant [ else ] [ il reste de films] récupérer prochain film afficher titre

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 28 Exemple : Association DVDs On cherche la traduction en PHP Comment ouvrir on affiche une balise HTML en PHP? echo «balise» ; J Comment on récupère chaque film? l objet «res» contenait tous les résultats opération «fetch_object» permet de récupérer un à un les résultats besoin d une boucle pour parcourir ces résultats while ( $ligne = $res->fetch_object() ) la variable $ligne reçoit les informations de chaque film

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 29... <?php echo "<ul>"; Exemple : Association DVDs La fonction echo permet d afficher dans la page les balises HTML/CSS while ( $ligne = $res->fetch_object() ) { echo "<li>" ; echo " $ligne->titreorig " ; echo "</li>" ; } echo "</ul>" ;?> L opération «fetch_object» de l objet «$res» permet d obtenir le prochain résultat Chaque attribut de notre requête SQL («titreorig» ici) devient une propriété de l objet dans «$ligne» L objet «$res» qu on a récupérer de l activité précédente, contient tous les résultats, on doit juste les récupérer un par un

20/03/16 Manuele Kirsch Pinheiro - CRI/UP1 - mkirschpin@univ-paris1.fr 30 Exemple : Association DVDs Pour faire la recherche d un film précis, c est pareil, seule la requête SQL change ouverture de connexion préparation de la requête envoie de la requête récupération des résultats afficher les résultats On peut donc organiser tout cela dans une classe classe Catalogue

Diagramme de classes final Revisité après la mise en œuvre Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 31

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 32 Documents créés : Exemple : implémentation mysite.css feuille de style index.html page d accueil recherche.html formulaire recherche navigation.html bloc de navigation head.html entête ctlcatalogue.php page catalogue ctlrecherche.php résultat recherche ctlfilm.php page détails produit Catalogue.php classe catalogue (accès BdD)

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 33 Exemple : implémentation Page d accueil <head> <ar.cle> <nav> <footer>

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 34 Page d accueil Exemple : implémentation <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="author" content=" " /> <@tle>associa@on DVD</@tle> <link href="css/mysite.css" rel="stylesheet" /> </head> <body> <header> <h1>associa@on DVD</h1></header> <nav> <p><a href="index.html">accueil</a></p> <p><a href="ctlcatalogue.php">nos DVDs</a></p> <p><a href="recherche.html">recherche</a></p> </nav> <sec@on> <ar.cle> <h2 class=imp> Bien </h2> <p>...</p> <p> </p> </ar.cle> </sec@on> <footer> <p>ceci </p> </footer> </body> </html>

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 35 Feuille de style : mysite.css Menu (nav) Float : left Width : 20% Contenu (article) Flottement Width : 80 % Height : 15% a:hover Lien survolé tr:nth-child(even) Lignes paires tableau Exemple : implémentation

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 36 Exemple : implémentation fonctionnalité «feuilleter catalogue» : Page ctlcatalogue.php

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 37 Exemple : implémentation Page ctlcatalogue.php <head> <?php include_once ("head.html"); include_once ("Catalogue.php");?> </head> <body> <?php include ("navigation.html");?> <section> <article> <?php $catalogue = new Catalogue(); $catalogue->connexion(); $catalogue->recuperecatalogue(); affichercatalogue($catalogue); $catalogue->deconnexion();. head.html <title>ma Librarie</title> <link href="css/mysite.css" rel="stylesheet" /> navigation.html <header> <h1> </h1> </header> <nav> <p><a href= " ">Accueil </a></p>... </nav> La classe Catalogue s occupe le l accès à la BdD Classe Catalogue Catalogue.php

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 38 Exemple : implémentation Page ctlcatalogue.php function affichercatalogue($catalogue) { echo "<table>" ; echo "<thead> <tr> "; echo "<th> N Film </th>" ; echo "<th> Titre </th> ; echo " </tr> </thead> <tbody> "; } //on recupere chacune des lignes while ( $ligne = $catalogue->prochainfilm() ) { echo "<tr>" ; echo "<td> ". $ligne->nfilm." </td>" ; } echo "<td> <a href='ctlfilm.php?nfilm=". $ligne->nfilm. "'</a>. $ligne->titreorig. " </td>" ; echo "</tr>" ; echo "</tbody> </table>" ; On prépare les balises pour l affiche d abord les entêtes On utilise la classe Catalogue on récupère film par film On récupère les données du film et on fait un lien vers la page donnant plus de détails

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 39 Exemple : implémentation Classe Catalogue : connexion à la BdD <?php class Catalogue { private $user="uml"; private $host="localhost"; private $password="uml"; private $database="collectdvd»; private $mysqli ; private $res ; func.on connexion() { $this->mysqli = new mysqli($this->host, $this->user, $this->password, $this->database); } func.on deconnexion() { $this->mysqli->close(); } Données nécessaires à la connexion Objets connexion (mysqli) et requête (res) Opéra>on pour l ouverture de connexion opération de fermeture de connexion

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 40 Exemple : implémentation Classe Catalogue : exécution d une requête On prépare la requête SQL func.on recuperecatalogue() { $sql = "SELECT f.nfilm, f.@treorig, f.genre, f.dir FROM Film f" ; $this->res = $this->mysqli->query($sql); if (!$this->res) { die ("<p>pas de film disponible. </p>") ; }... } func.on prochainfilm() { if (! $this->res ) { return null; } return $this->res->fetch_object() ; }... et on la soumet à la BdD à travers la connexion Si ça ne marche pas, on s arrête Si on n a pas de résultats d une requête, il n y a rien à récupérer On récupère les résultats sous la forme d objets

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 41 Exemple : implémentation Page Recherche

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 42 Exemple : implémentation Page recherche.html <head>... <link href="css/mysite.css" rel="stylesheet" /> </head> <body> <header> <h1> </h1> </header> La soumission du formulaire <nav>... </nav> envoie les données à <sec@on> <ar.cle> ctlrecheche.php <h2>rechercher un @tre</h2> <form ac.on="ctlrecherche.php" method="post"> <input type="text" size="30" name="mot" /> <input type="submit" value="rechercher" /> <input type="reset" value="restaurer"/> </form> </ar.cle> </sec@on>... </body>

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 43 Exemple : implémentation Page ctlrecherche.php Rechercher un produit par un mot du titre Structure similaire à ctlcatalogue.html Différence sur la requête à la classe Catalogue Récupération information du formulaire de recherche Usage tableau global $_POST

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 44 Exemple : implémentation Page ctlrecherche.php <?php $mot = $_POST['mot']; echo "<h2 class=imp>recherche de $mot : </h2>"; On récupère le mot du formulaire $catalogue = new Catalogue(); $catalogue->connexion(); $catalogue->recherche($mot); On u>lise la classe Catalogue pour l accès à la BdD $nblignes = $catalogue->nombrefilms(); if ($nblignes > 0) {. afficherfilms($catalogue); } else { affichermessageerreur($mot); } $catalogue->deconnexion();

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 45 Exemple : implémentation Page ctlrecherche.php func.on afficherfilms($catalogue) { echo "<table>" ; echo "<thead> <tr> "; echo "<th> N Film </th>" ; echo "<th> Titre </th> ; echo " </tr> </thead> <tbody> "; On récupère auprès du catalogue chacun de films sélec>onnés } while ( $ligne = $catalogue->prochainfilm() ) { echo "<tr>" ; echo "<td> ". $ligne->nfilm." </td>" ; echo "<td> <a href='ctlfilm.php?nfilm=". $ligne->nfilm. "'</a>". $ligne->.treorig. " </td>" ; echo "</a>" ; echo "</tr>" ; } echo "</tbody> </table>" ; et on fait un lien vers la page des détails. on affiche ses données

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 46 Exemple : implémentation Opération recherche(mot) sur Catalogue.php Même procédure que recuperecatalogue, requête SQL différente class Catalogue {... On prépare la requête SQL func.on recherche($mot) { $sql = "SELECT f.nfilm, f..treorig, f.genre, f.dir FROM Film f WHERE f..treorig LIKE \"%$mot%\" "; }... $this->res = $this->mysqli->query($sql); On soumet la requête if (!$this->res) { die ("<p>pas de film disponible. </p>") ; } et si ça ne marche pas, on termine.

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 47 Exemple : implémentation Détails sur un produit ctlfilm.php

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 48 Exemple : implémentation Page ctlfilm.php Lorsqu on clique sur un produit Nouvelle recherche sur la base de données toujours à l aide de la classe Catalogue Trouver les informations sur un produit précis Usage tableau global $_GET Paramètre nfilm=n à paramètre numéro du film ctlproduit?nfilm=1

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 49 Page ctlfilm.php... <?php $nfilm = $_GET['nfilm'];... $catalogue = new Catalogue(); $catalogue->connexion();?>... Exemple : implémentation $film = $catalogue->recupererfilm($nfilm); $colonnes = $catalogue->colonnes() ; afficherdetails($film, $colonnes); $catalogue->deconnexion(); On récupère le numéro de film (paramètre nfilm) On u>lise la classe Catalogue pour trouver le film on récupère le film et ses aqributs (colonnes) function afficherdetails($film, $colonnes) { echo "<ul>"; foreach($colonnes as $col) { $attr = $col->name ; echo "<li> <b class=imp> $attr : </b> "; echo $film->$attr. " </li> " ; } echo "</ul>"; }

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 50 Exemple : implémentation Opération recupererfilm dans classe Catalogue... func>on recupererfilm($nfilm) { $sql = "SELECT f.nfilm, f.>treorig, f.genre, le mécanisme est toujours le même, ce qui change est la requête SQL (Select p.nom From Personne p Where P.npers=f.dir) As 'dir' FROM Film f WHERE f.nfilm=". $nfilm ; }... $this->res = $this->mysqli->query($sql); if (!$this->res) { die ("<p>pas de film $nfilm connu. </p>") ; } $film = $this->res->fetch_object(); return $film; on soumet la requête et on récupère l objet contenant les données du film

INFORMATIQUE MODÉLISATION UML Objectifs : Exemple de projet en VBA

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 52 Exemple en VBA Exemple de projet Un employé d une société de vêtements a besoin d un petit système pour l aider à gérer les commandes qu il passe auprès des fournisseurs Le système doit enregistrer les produits et les commandes Si le stock est inférieur à un seuil (50 produits), le système doit conseiller l employé à passer une commande L employé doit être capable d enregistrer un nouveau fournisseur lors qu il passe une commande

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 53 Diagramme de Cas d Utilisation : fonctionnalités Exemple en VBA

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 54 Exemple VBA Puisqu on va réaliser notre projet dans MS Access (un système de BdD), on va d abord réfléchir sur les données Données manipulées à 1 er Diagramme de classes : Identification des concepts métiers nécessaires à la réalisation des fonctionnalités Ø Base de données

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 55 Exemple VBA Processus de manipulation de ces données à diagramme d activités : Comprendre les processus en place pour comprendre comment les mettre en œuvre Plusieurs processus nécessaires aux différentes fonctionnalités Editer d un produit Passer une commande

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 56 Exemple VBA Diagramme d activités : éditer produits

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 57 Exemple VBA Diagramme d activités : Passer une commande

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 58 Exemple VBA Début de la mise en œuvre à identification des composants Identifier les éléments (et donc les classes) qui pourront mettre en œuvre les différentes actions Formulaires et états pour l interaction avec l utilisateur Module de classe pour la réalisation des fonctionnalités transversales 2 ème Diagramme de classes : classes applicatives Placer les différentes actions nécessaires sur les différentes classes

Exemple VBA Diagramme de classes revisité Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 59

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 60 Passage du projet à VBA Exemple VBA Création de la base de données Les tables correspondent aux classes de données Création des formulaires Correspondant aux classes Form Création des modules de programmation Module de classe à correspond à la notion de classe CtlStock : définition du seuil et vérification du stock Module à ensemble d objets et d opérations ModueGlobal : calculs variés (ex. : calculer total commande)

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 61 Exemple VBA Une «application» VBA s utilise un document MS Office, une base MS Access dans ce cas Création des tables et formulaires prévus dans le diagramme de classes dans Access

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 62 Exemple VBA Formulaires : Produit

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 63 Exemple VBA Formulaires : Commande

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 64 Exemple VBA Formulaires : Fournisseur

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 65 Exemple VBA VBA va nous permettre de programmer les vérifications qu on a indiqué dans les diagrammes d activités

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 66 Exemple VBA Vérification stock lors de l édition des produits Avertissement à l entrée de FormProduit Avertissement dans FormProduit si stock < seuil

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 67 Exemple VBA Code VBA pour FormProduit Pour chaque produit on vérifie le stock À l ouverture du formulaire, on vérifie également Et lorsqu on modifie un produit, on avertit aussi si stock<seuil

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 68 Exemple VBA Le seuil est le même pour toute l application : Objet «controle» dans ModuleGlobal Dans les modules, on peut aussi ajouter les fonctions (opérations) qu on n arrive pas à mettre dans les formulaires

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 69 Exemple VBA Les «Modules de Classe» correspondent à la notion de classe. On y définit des propriétés et des opérations Constructeur : création des objets Getter (Get) et Setter (Let) pour la propriété stockmin Si on fait contrôle.stockmin = 30 on passe par le Let Opération CheckStockMin

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 70 Exemple VBA Code VBA pour la ligne de commande À chaque mise à jour, on actualise la commande On vérifie le stock à chaque nouvelle ligne et on averti l utilisateur si le stock>seuil Les lignes de commande concernent la commande affichée

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 71 Exemple VBA Code VBA pour FormCommande Possibilité d impression Calcul total de la commande, effectué concrètement dans le ModuleGlobal

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 72 Exemple VBA Code VBA pour FormCommande Pour imprimer, on va utiliser un état capable d afficher la commande

Manuele Kirsch Pinheiro - UP1 / CRI / UFR06 Gestion 73 Exemple VBA Code VBA pour FormCommande Pour imprimer, on va utiliser un état capable d afficher la commande