SYSTEME D’INFORMATION
Client HTML.......................................................................................... 25
Le navigateur HTML...................................................................... 27
URL : Uniform Ressource Locator................................................ 29
HTML, Hyper Text Markup Language........................................... 30
HTML : premier exemple............................................................... 31
Normes et outils............................................................................ 32
La syntaxe HTML : balises............................................................ 33
L'interprétation des pages HTML.................................................. 34
Le document HTML minimal......................................................... 35
Balises de mise en page............................................................... 37
Mise en forme, attributs standards................................................ 38
Les listes....................................................................................... 39
Les styles...................................................................................... 40
Les feuilles de style....................................................................... 41
Feuille de style : exemple.............................................................. 43
Feuille de style : fichier HTML....................................................... 44
Feuille de style : fichier CSS......................................................... 45
Les images.................................................................................... 46
Ancres et liens hypertextes........................................................... 47
Les tableaux.................................................................................. 49
Scinder une page en blocs............................................................ 52
Les formulaires HTML................................................................... 53
Les balises <form></form>........................................................... 54
Les contrôles graphiques HTML................................................... 55
TD HTML........................................................................................... ... 63
TD HTML 1................................................................................... 64
TD HTML 2................................................................................... 66
TD HTML 3................................................................................... 67
TD HTML 4................................................................................... 68
TD HTML 5................................................................................... 71
TD HTML 6................................................................................... 72
PHP................................................................................................... ... 97
PHP : histoire et état des lieux...................................................... 99
PHP : principe de fonctionnement...............................................100
Premier exemple de code........................................................... 101
Notions de base.......................................................................... 103
Structures de contrôle................................................................. 104
Interactions avec l'utilisateur....................................................... 105
Formulaire validé par lui-même................................................... 107
Tableaux..................................................................................... 109
Fonctions..................................................................................... 110
Ressources................................................................................. 111
Déroulement
● cours 1 (amphi) L’entreprise et son système d’information :
architecture et technologies
● TD 1 à 3 Fonctionnement du client HTML
● cours 2 (amphi) Programmation
● TD 4 QCM programmation
● TD 5 à 8 Langage PHP
● cours 3 (amphi) Base de données : concepts, relations, modélisation.
requêtes SQL de consultation et mise à jour, API php
● TD 9 à 13 Conception d'une base de données, début du projet
● cours 4 (amphi) Gestion de projet : les bases
● TD 14 à 19 Projet : intranet et covoiturage, évaluation
Places disponibles
pas de remboursement,
sauf assurance complémentaire
? coût de l’assurance
5% prix du voyage
3 ? coût de l’assurance
5% prix du voyage
3 ? coût de l’assurance
5% prix du voyage
4 réservation ferme !
? mode de paiement (carte bancaire / chèque)
Le système d’information :
une architecture client / serveur
● Base de données :
Oracle, DB/2, SQL server, BD
mySQL
● Serveur :
machine(s) et logiciels
● Clients :
■ terminal passif Serveur
(3270 / 5250)
■ micro-ordinateur :
client lourd ou léger ?
■ navigateur Web :
le client universel
Clients
HTML
Applications
HTML
HTML Applications
HTML
Back Office
Front Office
autonomie ou sous-traitance ?
régie ou forfait ? Back Office
externalisation (infogérance)?
Front Office
Cahier des
charges Tests utilisateurs -
pré-production
Spécifications
détaillées Tests unitaires
Codage
Cycle en V : parodie
Un projet d’évolution du SI ?
communication technique métier organisation
expression des
X X X
besoins
spécifications
X X X
fonctionnelles
spécifications
X X X
techniques
architecture X X X X
réalisation X X X X
tests X X X
livraison et
X X X
déploiement
maîtrise d’œuvre
maîtrise
d’ouvrage
analyste
technique fonctionnel
développeur
consultant consultant
architecte architecte
expertise
UV européenne
Le web
● Invention récente :
● 1992
● au CERN
● Tim Bernes Lee
● Au départ :
● sites documentaires
● liens hypertextes
● Technologie : HTTP et HTML
Evolution du Web
● Développement des pages dynamiques :
● générées à partir d'une base de
Windows
● Java : Servlets/JSP
● programmation objet
● PHP :
● communauté libre
● simple à apprendre
Formulaire :
- champs de saisie
- bouton de
validation
Transmission des
données du
formulaire
Réponse à la
demande
4 : le navigateur
affiche la page et 3 : le serveur génère
rompt la connexion dynamiquement une page
avec le résultat, l ’envoie
en réponse HTTP au
navigateur
doussot
Un contenu multimédia
Tous les navigateurs peuvent afficher du texte formaté en HTML et des
images au format GIF ou JPG ;
La plupart des navigateurs ne se limitent plus à l’interprétation des pages
HTML.
Par l’intermédiaire d’extensions (Plug-ins), le navigateur Web peut
désormais traiter tout type de documents multimédias : son, images
animées...
Bien que non officiellement standardisées, ces extensions acquièrent
parfois un statut de standard de fait (plug-in RealAudio pour la diffusion
de fichiers sonores).
Un OS au dessus de l’OS
Le navigateur Web possède des capacités d’exécution d’applications
distribuées :
moteurs d’exécution de scripts inclus dans les pages HTML (JavaScript
et VBScript) ;
machine virtuelle Java pour l’exécution d’applets ;
conteneur de composants binaires distribués (ActiveX).
Navigateurs disponibles
Microsoft Internet Explorer
Mozilla, Firefox
Opera
Utilité
URL signifie : Uniform Resource Locator
Une URL identifie de manière unique une ressource dans un réseau internet
ou intranet.
Forme générale
protocole:numéro_de_port//nom_ou_adresse_serveur/emplacement
le protocole indique la syntaxe d'échange entre le client et le serveur ;
le numéro de port indique un chemin d'écoute particulier sur le serveur
(par défaut : 80 pour http, 21 pour ftp, etc.) ;
le nom/l'adresse du serveur indique comment le retrouver sur le réseau
l'emplacement indique l'emplacement exact de la ressource demandée sur
le serveur.
Code source
<?xml version="1.0" encoding="ISO-8859-15"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-15" />
<title>
AgroParisTech
</title>
</head>
<body style="text-align:center">
<div id="contenu">
<img src="img/logo.png"
alt="Logo AgroParisTech" />
<h1>Bonjour !</h1>
</div>
</body>
</html>
Normes
La norme HTML a évolué pour atteindre la version 4.0
HTML est maintenant remplacé par XHTML (compatible XML) qui en
est à la version 1.1. Désormais, lorsque nous parlerons de HTML dans le
présent document, il faudra entendre XHTML.
La norme utilisée est déclarée en début de page et référence une URL de
validation sur le site du W3C
Les spécifications des normes peuvent être consultées sur le site
http://www.w3.org/TR
Il est important de se conformer aux normes, notamment pour permettre
l’accès des sites aux personnes qui disposent de navigateurs vocaux ou en
braille (cf. http://www.acces-pour-tous.net)
Pour vérifier la conformité d'une page web : http://validator.w3.org
Un site de référence francophone : http://openweb.eu.org
Outils
De nombreux outils permettent de générer automatiquement du code
HTML, mais il est cependant important de connaître celui-ci afin de
comprendre et manipuler le code généré, et de pouvoir y ajouter du code
dynamique (par exemple du PHP)
Outils de bureautique : Microsoft Office, OpenOffice
Outils dédiés : Microsoft Frontpage, Macromedia Dreamweaver MX
Référence en ligne :
http://www.w3schools.com/xhtml/xhtml_reference.asp
Balises <html></html>
La balise <html> spécifie la nature du document au navigateur.
L'attribut xml:lang indique la langue du texte
Balises <body></body>
Les balises <body> délimitent le corps du document (là où se trouvent le
texte et les images affichées dans la fenêtre du navigateur).
Balises <head></head>
Les balises <head> délimitent un ensemble d’informations, relatives à la
page et non affichées par le navigateur (sauf title).
Balise <meta>
La balise <meta> spécifie des informations qui ne sont pas affichées par le
navigateur, mais qui peuvent être lues par les serveurs HTTP et par certains
moteurs de recherche.
Balises <title></title>
Seul le texte « Ma première page HTML » inscrit entre les balises
<title></title> est visible dans la barre de titre du navigateur.
<div></div>
Cette balise permet de regrouper des éléments (pour leur affecter un style
particulier par exemple) avec saut de ligne avant et après.
<span></span> regroupement
Cette balise permet de regrouper des éléments (pour leur affecter un style
particulier par exemple) sans saut de ligne avant ni après.
Balise Utilisation
acronym acronyme
address adresse
blockquote citation longue (sur plusieurs lignes)
cite citation courte
code code informatique
em texte mis en valeur
strong texte renforcé
Attributs standard
La plupart des balises acceptent les attributs suivants :
Attributs Utilisation
class classe (cf. page suivante)
id nom unique pour identifier l'élément
style style (cf. page suivante)
title bulle d'aide
lang langue
acceskey raccourci clavier
tabindex ordre de parcours par tabulation
TD H1
Définir un style
Au niveau d’une balise :
<span style="color: red">Texte en rouge</span>
En en-tête de fichier :
<head>
<style type="text/css">
h1 {color:red; font-weight: bold}
</style>
</head>
Dans une feuille de style (CSS) :
<head>
<link rel="stylesheet"
href="styles.css" type="text/css" />
</head>
On peut redéfinir le style d'une balise existante, ou utiliser un nouveau
nom qui sera alors référencé par l'attribut class de la balise:
.fond {color: blue}
<body class="fond">
</body>
Propriétés de texte
Exemple Valeurs possibles
font-family : Arial; Noms de police
font-style : italic; normal, italic, oblique
font-weight : bold; normal, bold, bolder,
lighter, 100, 200, 300,...
900
font-size : x-small; xx-small, x-small, small,
font-size : 18pt; medium, large, x-large, xx-
font-size : 150%; large, larger, smaller
text-decoration : underline; none, underline, overline
line-through, blink
text-transform : uppercase; capitalize, uppercase,
lowercase, none
Propriétés de couleur
Exemple Valeurs possibles
color : red; Noms de couleurs, ou codes
color : #fd4a88; RGB
color : rgb(125,32,98);
background-color : blue; Idem
background-image : url("im.jpg") url("…"), none
Propriétés de placement
Exemple Valeurs possibles
text-align : center; left, right, center, justify
margin-top : 1em 1em :hauteurd'un caractère
1ex :hauteurdu x
1cm :1 centimère
1pt :1 point
margin-bottom : 2ex Idem
margin-left : 12px Idem
margin-right : 2cm Idem
float : left left, right, center
Utilisé pour rendre un bloc flottant,
c'est-à-dire le superposer à un autre
Propriétés de bordure
Exemple Valeurs possibles
border-style : solid none, hidden, dotted, dashed,
solid, double, groove, ridge,
inset, outset
border-top, border-bottom, idem margin
border-left, border-right
border-width : thin thin, medium, thick
border-width : 3px
Ressources
http://www.w3schools.com/css/default.asp
Astuces
Les navigateurs permettent d'afficher la source d'une page consultée : on
peut ainsi déterminer comment celle-ci a été réalisée. On peut aussi repérer
en en-tête l'emplacement de la ou des feuilles de style pour les télécharger.
TD H2
AgroParisTech, ufr d'information Client HTML page 45
Les images
Avec HTML, on a la possibilité de référencer des éléments multimédias tels
que les images.
Les principaux navigateurs Web interprètent les images GIF, JPG et PNG.
L'utilisation des mages GIF est déconseillée pour cause de brevet.
TD H3
Attributs
align : l'alignement horizontal
valign : alignement vertical
cellpadding : espace entre les bords des cellule et le texte
cellspacing : espace entre les cellules
border : bordure
width : taille en px ou en %
Bandeau
supérieur
Menu à
gauche
Technique utilisée
Beaucoup de sites font appels à des imbrications de tableaux pour
l'organisation de leur page. Cette pratique est à proscrire : les tableaux ne
doivent servir qu'à organiser des données en tableau !
Par contre, on peut organiser une page en utilisant les balises <div></div>
couplées à des styles, pour définir des sections superposées ou juxtaposées :
CSS : #menugauche {
float: left; width: 250px;
}
#contenu {
margin-left: 250px;
}
TD H4 TD H5
Contrôles graphiques
Utilité
Les formulaires permettent d'interagir avec l'utilisateur.
Ils sont notamment utilisés dans :
Les moteurs de recherche
Les sites de commerce électronique
Les questionnaires en ligne
Presque toute application web interactive !
La méthode get
Le contenu du formulaire est encodé sous la forme d’une QueryString
constituée d’une concaténation de l’URL du paramètre ACTION et du
contenu (encodé) du formulaire :
http://ouranos:8080/Tests/servlet/fr.inapg.tests.DoFormu
laire?btAction=OK&prenom=Henri&nom=Dupont
La méthode post
Dans le cas de la méthode POST le contenu (encodé) du formulaire est
envoyé dans le corps de la requête. Ceci permet de soumettre au serveur
des requêtes plus longues (voire même des fichiers).
TD H6
Easy PHP
Easy PHP est un logiciel qui permet d'installer et de prendre en charge
facilement sur une machine dôtée du système d'exploitation Windows :
• le serveur Web Apache ;
• PHP ;
http://www.easyphp.org
Eclipse
Eclipse est un outil de développement créé par IBM.
IBM a ensuite "offert" cet outil au "monde du logiciel libre".
Le développement d'Eclipse est maintenant géré par une fondation qui
regroupe un grand nombre d'acteurs du logiciel (IBM, Borland, BEA) :
http://www.eclipse.org
PHP Eclipse
PHP Eclipse est un plugin Eclipse qui permet de gérer des projets contenant
des fichiers HTML et PHP. Il est développé en Allemagne :
http://www.phpeclipse.de
Vérifier que Apache et MySQL apparaissent bien tous les deux avec le
statut Démarré.
Si MySQL ne démarre pas, supprimer le répertoire MySQL contenu dans le
répertoire N:\data et copier dans N:\data le répertoire
C:\Program Files\EasyPHP1-8\mysql\data\mysql (pour
obtenir de nouveau un répertoire N :\ data\mysql)
Démarrage d'Eclipse
Menu : Démarrer > Programmes > Programmation > Eclipse
La durée de lancement est assez conséquente, à cause de l'antivirus. En effet
le lancement d'eclipse repose sur la lecture de nombreux fichiers, tous
analysés par Sophos Antivirus.
Utilisation d'Eclipse
Pour chaque série de TD (HTML, puis PHP) on créera un nouveau projet
avec le menu : File > New > Projet..., en choisissant PHP > PHP Projet
Réalisation
Il s'agit tout d'abord de réaliser une page avec :
• une zone de titre;
• une liste insérée dans la zone de menu, avec un ensemble de liens vers les
différentes pages du site, sachant que le lien vers la page courante n'est pas
activé et est d'une couleur différente.
Indication : l'attribut float appliqué au style d'une zone permet de positionner
celle-ci par rapport aux autres zones.
Indication : display: inline; appliqué au style d'une liste permet d'afficher celle-
ci horizontalement.
Sommaire
● Ordinateur : architecture et codage
● Langages de programmation
● Types et variables
● Instructions
● Branchements conditionnels
● Schémas itératifs
● Procédures et fonctions
Ordinateur : fonctionnement
● Processeur :
● Cadencé par un cristal de quartz
● Fréquence : nombre d'impulsions par
seconde
● Accomplit des instructions :
● Opération
● Opérandes
Sommaire
● Ordinateur : architecture et codage
● Langages de programmation
● Types et variables
● Instructions
● Branchements conditionnels
● Schémas itératifs
● Procédures et fonctions
Exemples de langages
● Langages interprétés :
● Matlab
● PHP
● Langages compilés :
● Pascal
● C
● Java (semi-compilé)
Langages procéduraux
● Des suites d'instructions élémentaires sont
regroupées en procédures ou fonctions
● L'enchaînement global est réalisé dans
une procédure d'entrée
● Les instructions sont exécutées les unes à
la suite des autres, sauf si :
● Condition d'exécution : if
● Répétition d'exécution : for, while
Les variables
● Une variable est un moyen de représenter
et manipuler une donnée d'un programme
● Une variable correspond à un espace de
la mémoire de l'ordinateur
● Il peut y avoir des « conventions de
nommage » : par exemple le nom d'une
variable commence par $ en PHP
54 = $a b 123
?
...
Sommaire
● Ordinateur : architecture et codage
● Langages de programmation
● Types et variables
● Instructions
● Branchements conditionnels
● Schémas itératifs
● Procédures et fonctions
Branchements conditionnels
● Les branchements conditionnels
permettent de modifier l'exécution du
programme selon les valeurs des variables
● Typiquement : si condition
alors bloc vrai
sinon bloc faux
Conditions : à savoir
● L'égalité doit se distinguer de l'affectation :
généralement == au lieu de =
● Négation : ~ en Matlab, ! en PHP
● On peut combiner plusieurs conditions :
● opérateurs and, or, xor
● emploi des parenthéses possible
● ne pas oublier que (notation PHP) :
● ! ( A and B) = !A or !B
● ! (A or B) = !A and !B
Sommaire
● Ordinateur : architecture et codage
● Langages de programmation
● Types et variables
● Instructions
● Branchements conditionnels
● Schémas itératifs
● Procédures et fonctions
Schémas itératifs
● Si on souhaite avoir un compteur dans un
schéma while, il faut le gérer soi-même et
penser à le modifier à chaque itération
● Un schéma for peut toujours être
transformé en schéma while, mais la
réciproque n'est pas vraie
$f = 1;
$c = 1;
while ($c <= $a) {
$f = $f * $c;
$c = $c + 1;
}
Les collections
● Il arrive souvent qu'on ait à gérer un grand
nombre de données similaires et à leur
appliquer des traitements similaires
● On peut alors gérer ces données dans
Procédure et fonctions
● Les procédures et fonctions permettent
l'organisation et la réutilisation du code
● Contrairement à une procédure, une
fonction renvoie un résultat (plusieurs
possibles avec Matlab)
● Les procédures et fonctions peuvent
prendre des paramètres d'entrée
● Bien sûr les variables déclarées dans une
procédure ou fonction n'existent pas en
dehors de celle-ci
function factorielle($nombre) {
$resultat = 1;
for ($i = 2; $i <= $nombre ; $i++) {
$resultat = $resultat * $i;
}
return $resultat;
}
$b = 5;
$r = factorielle($b);
// $nombre prendra la valeur de $b :
5
Un peu d'histoire
1994 : création de PHP/FI (Personal Home Page Tools/Form Interpreter)
par Rasmus Lerdof (Canada) pour évaluer la consultation de son CV en
ligne.
1995 : mise à disposition du code pour tout le monde.
1997 : redéveloppement du coeur par 2 étudiants (Andi Gutmans et Zeev
Zuraski, Israëm) pour donner PHP (PHP: Hypertext Processor) 3.0.
2002 : 8 millions de sites basés sur PHP.
2004 : 15 millions de sites basés sur PHP.
Evolution du langage
Au départ basé sur le langage Perl, PHP a été réécrit ensuite en
langage C.
Le moteur a été réécrit plusieurs fois.
D'abords procédural, le langage a évolué a partir de la version 4.0 pour
intégrer les technologies objet.
Principales caractéristiques
Le moteur PHP s'intègre au serveur web Apache : il prend alors en
charge toutes les pages avec une extension .php.
PHP est un langage interprété : il n'y a pas de phase de compilation et les
erreurs sont découvertes au moment de l'exécution.
La syntaxe est très inspirée du langage C, tout en apportant beaucoup de
simplification, notamment dans la gestion des variables.
Poste client
Serveur
Apport de PHP
Les pages HTML sont des pages de contenu statique stockées dans le
système de fichier du serveur.
Les pages PHP contiennent du code HTML, mais aussi du code PHP qui
est exécuté sur le serveur au moment de la requête et produit du code
HTML ; la page est dite dynamique, car le contenu final HTML renvoyé
au navigateur peut changer selon le contexte.
PHP nécessite l'ajout et la configuration d'un module spécifique dans le
serveur web Apache.
Exemple simple
<?php echo "<?xml vers i on= \ " 1 . 0 \ " encoding= \ " I SO - 8859-
15\ " ?> " ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-15" />
<meta name="keywords" content="agronomie,INA-PG">
<meta name="revisit-after" content="30 days" />
<title>Ma première page PHP</title>
</head>
<body>
<div>
Bonjour nous sommes le :
<?php
$date = date("d-m-Y");
echo "$date"; // Affichage de la date
?>
</div>
</body>
</html>
Affichage
Syntaxe de base
L'instruction echo permet de générer de l'affichage HTML au sein d'une
page.
Les chaînes de caractères sont écrites entre "" : on doit faire précéder un
" d'un \ pour l'inclure au sein d'une chaîne.
Les noms de variables commencent toujours par le caractère $.
Les variables n'ont pas besoin d'être déclarées, ni d'être typées ; elles
sont créées implicitement lors de la première utilisation.
Le langage fournit un certain nombre de fonction prédéfinies ; lors d'un
appel de fonction, les paramètres sont passés entre ( ) et séparés par des ,.
Les commentaires sont écrits en commençant par // sur une ligne ou entre
/* et */ sur plusieurs lignes.
Les accolades {} permettent de délimiter des blocs d'instructions.
Remarque : lorsqu'on respecte la norme XHTML, les caractères <?
de la première ligne sont interprétés comme une balise PHP. Il faut
donc obligatoirement générer cette première ligne avec une
instruction PHP echo.
TD P1
AgroParisTech, ufr d’informatique PHP page 103
Structures de contrôle
PHP propose toutes les structures de contrôle classiques.
Tests conditionnels
<?
if (is_numeric($texte)) {
echo "La variable contient un nombre";
}
else {
echo "La variable contient du texte";
}
?>
Schémas itératifs
<?
for ( $i = 1; $i <= 10 ; $i++)
{
echo $i . ' ';
}
$i = 1;
while ($i<=10) {
echo $i . ' ';
$i++;
}
Principe général
Dans une application web, l'interaction avec l'utilisateur est essentiellement
fondée sur la validation de formulaire HTML, qui provoque l'envoie de
données vers le serveur et l'affichage de nouvelles informations en provenance
de celui-ci.
Des technologies telles que Javascript permettent la gestion d'événements, mais
celle-ci reste locale au navigateur et donc limitée.
Il faut préciser dans la balise form le nom du fichier PHP qui traitera les
données, ainsi que la méthode de transfert de ces données (POST conseillé).
Enchaînement
formulaire.php
validation_formulaire.php Interprétation de
(résultat HTML) validation_formulaire.php
1. Le navigateur rassemble les informations saisies dans le formulaire (nom
et prénom) et les envoie par une méthode POST au serveur.
2. Le serveur interprèle validation_formulaire.php avec les données reçues
et génère un flux HTML résultat renvoyé au navigateur.
Principe
Dans l'exemple précédent, lorsque l'utilisateur s'est trompé ou s'il veut faire
une nouvelle saisie, il soit revenir en arrière en utilisant la touche back du
navigateur.
Il est souvent plus judicieux d'afficher le formulaire et le résultat sur une
même page :
lors du premier accès, la méthode GET est employée ;
lors de la validation, la méthode POST est employée.
Exemple
TD P3
Exemples précédents
Dans les précédents exemples de code, on a :
$_SERVER["REQUEST_METHOD"]
$_POST["nom"]
$_POST["prenom"]
Tableaux associatifs
Un tableau associatif permet de faire correspondre des valeurs à des clés :
<?php
// Création d'un tableau de 3 éléments
$tableau = array(1=>"rouge", 2=>"bleu", 3=>"jaune");
// Parcours du tableau
foreach ($tableau as $index => $couleur) {
echo "<br /> $index => $couleur";
}
On peut définir des fonctions dans des fichiers .php et les utiliser dans
d'autres fichiers grâce à l'instruction include :
<?php
include "fonctions.php";
echo factorielle(5);
?>
TD P5
Installation
http://www.easyphp.org
http://www.eclipse.org
http://www.phpeclipse.de
Développement
http://www.php.net/manual/fr/
http://www.phpfrance.org
http://www.phpindex.com
http://www.commentcamarche.net/php/phpintro.php3
http://php.developpez.com
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 121
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 122
Organiser les données
du système d’information
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 123
GIE agricole :
cahier des charges (simplifié)
● Des agriculteurs possèdent des parcelles
● Une parcelle a un et un seul propriétaire
un agriculteur possède une ou plusieurs parcelles
● Pour exploiter ces parcelles, les agriculteurs font
appel à un GIE. Celui-ci fournit de la main d’œuvre
d’appoint, à la journée.
● Cette main d’œuvre est assurée par des
employés du GIE.
● Chaque employé du GIE a un tarif, qui constitue
son salaire journalier brut.
GIE agricole :
cahier des charges (simplifié)
● Le GIE paie ses employés mensuellement, en
fonction de leurs interventions.
● Chaque intervention concerne une parcelle, un
employé et un nombre de jours.
● Le système d’information désiré doit pouvoir
fournir :
● la liste des agriculteurs,
● la liste des employés
● la liste des interventions par employé
● la liste des interventions par agriculteur
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 124
Inventaire des données (simplifié)
● nom et prénom ● interventions : employé,
(agriculteur) parcelle, date de début,
● nom et prénom nombre de jours
(employé GIE)
● parcelle : nom,
superficie, lieu et Quelle structure
propriétaire
pour représenter
● employé : numéro insee
et salaire journalier ces données ?
● agriculteur : lieu de
résidence
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 125
Une clé primaire pour la table
● Une colonne particulière
permet d’identifier de
manière unique chaque
agriculteur
●
On l’appelle la clé
primaire de la table
● Ici, cette clé est une valeur
numérique que l’on
augmente (incrémente) à
chaque ajout d’un nouvel
agriculteur
La table agriculteur
a quatre champs
● Chaque champ représente
une propriété de l’informa-
tion "Agriculteur" et il est
associé à une colonne
● Chaque champ a un type
qui caractérise les valeurs
qu’il peut prendre
● Le champ AGR_IDF est
"auto-incrémenté" et c’est
la clé primaire de la table.
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 126
Récapitulons - table
● La table est l’unité de stockage dans une base
de données
● Une table est associée à une entité du modèle
de données. Elle répertorie toutes les
apparitions (occurrences) de cette entité.
● Chaque ligne (enregistrement) de la table
représente une occurrence de l’entité
● Chaque propriété de l’entité est représentée
par une colonne (champ)
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 127
Et maintenant, les parcelles
● Une parcelle a
un nom, elle est
située en un lieu
précis et elle a
une superficie
Désigner le propriétaire
● Une parcelle a
un nom, elle est
située en un lieu
précis et elle a
une superficie
● Le champ
PAR_AGR_IDF
désigne le
propriétaire
● Il définit une relation
entre les deux tables
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 128
Une relation un à plusieurs
● Un agriculteur peut
posséder plusieurs
parcelles
Une parcelle a un et un 1
seul propriétaire
● La relation entre les n
tables est une relation
un à plusieurs.
plusieurs Elle est
matérialisée, du côté
« plusieurs », par
une clé étrangère
La table employe
● Un employé a :
un numéro de
sécurité sociale,
un nom,
un prénom
et un tarif journalier
● Faut-il une clé
primaire auto-
incrémentée pour
cette table ?
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 129
Quelle relation entre les tables
parcelle et employe ?
● Un employé peut être amené à travailler
sur plusieurs parcelles
● Sur une même parcelle, peuvent travailler
plusieurs employés (simultanément ou
l’un après l’autre)
● C’est une relation plusieurs à plusieurs :
on la représente par une nouvelle table
L’employé Grandet a
travaillé à la parcelle du pré
au vent, 5 jours à partir du 5
juillet 2004
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 130
Exercice :
concevoir un modèle de données
Base de données cinématographique :
● Un film a un titre, un budget de production, des
recettes ; il est joué par des acteurs ; il est réalisé par
un metteur en scène
● Chaque acteur jouant dans un film touche un cachet ;
il a une année de naissance et éventuellement de
décès ; il parle une langue maternelle
● Chaque réalisateur est originaire d’un pays et a une
année de naissance et éventuellement de décès
● Concevez le modèle de données !
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 131
Consultation (1)
● select * from agriculteur
le résultat est une table
temporaire
● select agr_nom, agr_prn
from agriculteur
where agr_res = 'ARITH'
Consultation (2)
● résidences des
agriculteurs ?
select agr_res
from agriculteur
● comment …
● obtenir un résultat select agr_res from agriculteur
ordonné ? order by agr_res
● supprimer les doublons ?
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 132
Consultation (3)
● Quels sont les propriétaires de
parcelles ?
select agr_nom, par_nom
from agriculteur, parcelle
where agr_idf = par_agr_idf
● Nombre de parcelles pour
chaque propriétaire ?
select agr_nom, count(par_nom)
from agriculteur, parcelle
where agr_idf = par_agr_idf
group by agr_nom
● L’outil PhpMyAdmin
accessible via easyPHP
(clic droit sur l’icône
easyPHP, puis choix
de « Administration »)
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 133
AgroParisTech, ufr d’informatique Organiser les données du Système d'Information page 134
TD Base de Données
Limites rencontrées
Lorsqu'on manipule des variables en informatiques, les données associées
sont stockées dans la mémoire vive (RAM) de l'ordinateur. Ce mode de
fonctionnement présente cependant des limites :
les données n'existent que pendant le temps de fonctionnement de
etc.
Stocker des données dans des fichiers permet de pallier certains de ces
inconvénients, cependant :
il faut définir à chaque fois comment on stocke les données, et
l'expliquer éventuellement aux concepteurs d'autres applications ;
il est difficile de représenter des données complexes (de type 1 à
plusieurs par exemple) ;
pour retrouver une donnée particulière, on est obligé de parcourir une
bonne partie du fichier ;
les modifications concurrentes posent problème.
Base
Requete ou mise à jour SQL Table
Relation
API
Enregistrements
Réponse
Index
MySQL
Base développée par la société MySQL AB : http://www.mysql.com
MySQL est très utilisée en conjonction avec PHP pour produire des sites
web dynamiques.
MySQL a la réputation d'être une base de données simple à utiliser,
performante et très robuste.
PhpMyAdmin est une application PHP développée pour administrer une
base MySQL à distance via un simple navigateur web :
http://www.phpmyadmin.net. Cette application est intégrée à EasyPHP.
PhpMyAdmin permet également de visualiser les ordres SQL qui
permettent d'obtenir telle ou telle information ou d'executer telle ou telle
action.
Objectifs de l'exercice
Il s'agit de mettre en pratique les principes des bases de données sur un
exemple. Tout d'abord il faudra créer un schéma de données (les différentes
tables et leur relations) avec des exemples de données, puis il faudra trouver les
requêtes appropriées pour réaliser des interrogations sur ce schéma.
Nous utiliserons pour ce faire MySQL et PHPMyAdmin ; ces 2 outils sont
inclus dans la distribution EaxyPHP installée sur les postes et téléchargeable
gratuitement sur : http://www.easyphp.org
Outil PhpMyAdmin
On peut utiliser PhpMyAdmin en faisant un clic droit sur l'icône EasyPHP en
bas à droite de l'écran et en choisissant "Administration" puis "Gestion BDD",
ou plus directement, lorsque EasyPHP est démarré, en tapant dans un
navigateur l'adresse http://localhost/mysql/.
Sujet de l'exercice
Sur de nombreux canaux français, la navigation commerciale a laissé la place à
la navigation de plaisance. Ainsi la société Starboat s'est fait une réputation
dans la location de pénichettes aux touristes. Pour améliorer la productivité,
elle a décidé d'équiper chacune de ses bases d'un logiciel de gestion adapté à
leurs activité. Dans un premier temps, il faut concevoir le modèle de données
de ce logiciel. Ce modèle sera conçu au fur et à mesure de manière interactive
en utilisant PhpMyAdmin, sachant que lorsqu'on se trompe, cet outil permet
facilement d'effectuer des rectifications.
On commence par créer une base Starboat.
Les bateaux
On crée une première table Bateau dans notre base sachant que chaque bateau :
est bien entendu identifié par une clé primaire unique ;
est baptisé ;
correspond à un type de modèle (classique, terrasse, ou flying bridge) ;
a été terminée à une date donnée ;
a navigué un certain nombre d'heures.
Une fois cette première table créée, on y insère un certain nombre de données
d'exemple pour valider les champs et leur type. On considère par exemple une
base avec 10 bateaux.
On crée donc une nouvelle table Modele pour prendre en compte ces
caractéristiques en plus du nom du modèle. On saisit des données d'exemple
pour les 3 types de modèle.
Les révisions
Chaque bateau est révisé régulièrement par un technicien (la base exemple
compte actuellement 2 techniciens). A chaque révision, le technicien devra
remplir l'application en indiquant :
qui a réalisé la révision ;
la date ;
le nombre d'heures de navigation du bateau au moment de la révision ;
les interventions réalisées, sous forme de texte libre.
Les locations
Toutes les locations sont enregistrées dans la base.
En plus des informations évidentes à saisir pour une location, on souhaite avoir
la possibilité de saisir au retour du bateau :
le nombre d'heures de navigation effectuées ;
un commentaire libre.
Introduction
SQL signifie Structured Query Langage.
La dernière norme du langage date de 1992 : on parle de SQL/92 ou SQL 2.
SQL est insensible à la casse (différence minuscule/majuscule).
Syntaxe du SELECT
L'ordre select permet de retrouver des données dans une base en
spécifiant les champs que l'on souhaite, ainsi que des critères de recherche.
Syntaxe générale :
SELECT COL1,COL2,COL3 FROM TABLE1,TABLE2
WHERE COL1=COL2 AND COL3 LIKE 'A%'
ORDER BY COL1
Seule la première ligne est obligatoire ! Elle permet d'indiquer les colonnes
des valeurs qui nous intéressent dans différentes tables.
Valeurs et types
SQL permet de manipuler de champs de type numérique, chaîne de
caractères et dates.
Les chaînes de caractères sont à mettre entre ' et '.
% permet de remplacer une partie de chaîne de caractères.
Sommaire
● Un projet, c'est quoi ?
● Les grands rôles dans un projet
● Les phases
● Méthodologie et documents
● Chiffrage
Notion de ROI
● Un projet doit être rentable :
● Rapporter des clients, de l'argent ;
● Economiser du temps, des efforts
● ROI : Return Of Investment
Sommaire
● Un projet, c'est quoi ?
● Les grands rôles dans un projet
● Les phases
● Méthodologie et documents
● Chiffrage
La MOE
● Maîtrise d'oeuvre
● Il sagit de celui qui réalise :
● Organise
● Réalise
● Livre
● Facture
● Contractant
Sommaire
● Un projet, c'est quoi ?
● Les grands rôles dans un projet
● Les phases
● Méthodologie et documents
● Chiffrage
Conception
Tests unitaires
Codage
Plan documentaire
● Modèles de document :
● Cahier des charges
● Analyse
● Conception
● Architecture
● Tests
● Livraison
● Intallation
● Exploitation
Plusieurs méthodes
● Chiffrage macroscopique
● Chiffrage par comptage des instructions
● Chiffrage par points de fonctions
● Chiffrage par ration
● Chiffrage commercial
● Chiffrage expert
But du projet
Les différentes étapes décrites dans ce document consistent à réaliser un
intranet dynamique en PHP. Chaque élève suivra le cheminement proposé
pour réaliser son propre intranet des élèves, avec un certain degré de liberté
quant aux choix des attributs des styles, du moment que le travail réalisé
reste conforme à l'esprit de l'exercice.
L'intranet disposera des fonctionnalités suivantes :
− protection d'accès par identification ;
− gestion d'annuaire :
modification de ses informations personnelles ;
recherche selon certains critères.
− gestion simple de covoiturage.
Démarrage du projet
Créer un sous-répertoire intranet dans votre répertoire N:\www.
Lancer l'outil de développement et créer un nouveau projet nommé intranet
dans votre répertoire N:\www :
N:\www\intranet\
Une fois la table créée, cliquer sur le menu Insérerpour insérer des données
d'exemple.
// Ouverture de la connexion
function ouvre_connexion() {
mysql_connect(bd_serveur, bd_utilisateur,
bd_motdepasse) or die(mysql_error());
mysql_select_db(bd_base) or die(mysql_error());
}
//Fermeture de la connexion
function ferme_connexion() {
mysql_close();
}
Cette fonction renvoie 0 si l'authentification n'est pas bonne, sinon elle renvoie
le numéro d'identifiant de l'utilisateur.
Lorsque l'utilisateur arrive sur la page d'accueil, il n'est redirigé vers la page
d'annuaire que s'il s'est logué correctement.
Par contre, pour l'instant, rien n'empêche un utilisateur d'arriver directement à
la page annuaire.php en tapant directement son URL dans la barre d'adresse
du navigateur.
En effet, une variable d'un fichier PHP n'existe par contre que le temps
d'exécution de ce fichier, c'est-à-dire que le temps de génération de la page web
correspondante.
Syntaxe INSERT
L'ordre SQL insertpermet d'insérer des enregistrements dans une table.
Syntaxe générale :
INSERT INTO TABLE(COL1,COL2,COL3) VALUES(VAL1,VAL2,VAL3)
Syntaxe UPDATE
L'ordre SQL update permet de modifier des enregistrements déjà présents
dans une table.
Syntaxe générale :
UPDATE TABLE SET COL1=VAL1, COL2=VAL2 WHERE COL3=VAL3
Syntaxe DELETE
L'ordre SQL delete permet de supprimer des enregistrements présents dans
une table.
Syntaxe générale :
DELETE FROM TABLE WHERE COL1=VAL1
On a donc une relation de type "un à plusieurs" entre la table ELV et la table
ADR. Cette relation est matérialisée par le champ ADRELVIDF qui joue le rôle de
"clé étrangère" : il indique à quel élève est rattachée une adresse.
Nous pouvons maibtenant créer la nouvelle table ADR dans la base MySQL.
Il faut donc :
créer les nouvelles tables nécessaires dans la base ;
PHP
http://www.phpfrance.com
http://www.easyphp.org/
http://www.php.net/
http://www.commentcamarche.net
MYSQL
http://www.mysql.com
Covoiturage
http://www.123envoiture.com
http://www.easycovoiturage.com/
http://www.covoiturage-france.fr/