Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES...

99
Conception et Cr´ eation de Bases de Donn´ ees SVA8511A (Licence Biologie 3 e ann´ ee) T. Lecroq LITIS EA 4108 Batiment Extension Biologie - 1er ´ etage [email protected] Cours r´ edig´ e par L. Mouchard Ann´ ee 2008–2009 T. Lecroq (Universit´ e de Rouen) Conception et Cr´ eation de BD Ann´ ee 2008–2009 1 / 99

Transcript of Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES...

Page 1: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Conception et Creation de Bases de DonneesSVA8511A (Licence Biologie 3e annee)

T. Lecroq

LITIS EA 4108Batiment Extension Biologie - 1er etage

[email protected]

Cours redige par L. Mouchard

Annee 2008–2009

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 1 / 99

Page 2: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Contenu du cours

1 Organisation de l’UE

2 Concepts generiquesBase de donneesEst-ce si simple ?Principe client-serveur

3 Langage SQLPourquoi ?LES langagesSchemas

4 Premiere base de donneesConceptionInsertion dans une tableAffichage

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 2 / 99

Page 3: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan

1 Organisation de l’UE

2 Concepts generiquesBase de donneesEst-ce si simple ?Principe client-serveur

3 Langage SQLPourquoi ?LES langagesSchemas

4 Premiere base de donneesConceptionInsertion dans une tableAffichage

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 3 / 99

Page 4: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Organisation de l’Unite d’Enseignement

CoursI concepts generiques des bases de donnees ;I bases du langage structure de requetes SQL ;

Travaux diriges (apprentissage du langage SQL)I descriptif approfondi des fonctions SQL ;I exercices de conception de bases de donnees ;I normalisation des relations et construction des tables ;I construction des requetes SQL.

Travaux pratiques (pratique du langage SQL)I mise en pratique des TD sous MySQL ;I requetes et verifications sous phpMyAdmin ;I realisation pratique d’une base de donnees (( grandeur nature )).

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 4 / 99

Page 5: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan

1 Organisation de l’UE

2 Concepts generiquesBase de donneesEst-ce si simple ?Principe client-serveur

3 Langage SQLPourquoi ?LES langagesSchemas

4 Premiere base de donneesConceptionInsertion dans une tableAffichage

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 5 / 99

Page 6: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Qu’est-ce qu’une base de donnees (relationnelle) ?c’est generalement un ensemble de donnees :

I de taille importante ;I organise (on dit egalement structure) ;I interrogeable grace a un langage de requetes ;

elle constitue une representation du monde reel, qui, dans sa versionrelationnelle, manipule des entites, par exemple :

I etudiant ;I enseignant ;I cours.

et des associations entre ces entites, par exemple :I suivre : un etudiant suit un cours ;I donner : un enseignant donne un cours ;I noter : un enseignant note un etudiant.

note

suit donne

cours

enseignantetudiantassociationentitélégende :

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 6 / 99

Page 7: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Qu’est-ce qu’un SGBD ?

Un SGBD (Systeme de Gestion de Bases de Donnees) est un ensemblelogiciel (un ensemble de programmes) qui permet :

I le stockage des informations ;I la gestion des entites et des mecanismes souples pour representer les

associations (dans le modele relationnel) ;I l’affichage de tout ou partie de la base de donnees.

Quelques exemples de SGBD : Access, DBase, Ingres, Informix, mSQL,MySQL, Oracle, O2, PostgresQL, Sybase, ...Le modele relationnel n’est pas le seul possible : nous pouvons considererles elements de la base comme des objets, de definir les methodes propresa leur utilisation et aux interactions entre les objets (equivalentes auxassociations dans le modele que nous avons ebauche). C’est le cas parexemple de la base O2 (qui est Orientee-Objet).

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 7 / 99

Page 8: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Est-ce si simple ?

Nous venons de decrire rapidement ce que pourrait etre une base dedonnees :

I quelques entites (etudiants, enseignants, cours) ;I quelques associations (suivre, donner, noter) entre les entites ;

mais suffit-il de mettre des noms en face des entites pour que le toursoit joue ?

l’entite cours n’est sans doute pas satisfaisante : cours, TD ou TP ;

l’association noter n’est pas satisfaisante : un enseignant ne note pasun etudiant mais note : un controle continu, un compte-rendu de TPou un examen final.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 8 / 99

Page 9: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Pourquoi utiliser une base de donnees ?

Parce que :

les donnees sont separees (chaque entite est representee par une tableindependante des autres donnees) et donc reutilisables ;

les donnees sont specifiees : les (( attributs )) d’une entite sont connuset contraints ;

les donnees sont securisees : les transactions concurrentes sur lesdonnees sont efficacement gerees ;

les mecanismes d’importation/exportation des donnees existent etpermettent d’alimenter efficacement les tables ;

les mecanismes generiques d’interrogation des donnees sont dejadeveloppes, le temps de developpement d’une application est parconsequent reduit ;

possibilites d’interfacage www...

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 9 / 99

Page 10: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Modele client-serveur

requête requête

réponse réponse

internet

1. émission 2. réception

5. réception 4. émissionréponse

requête

3. traitement

client

serveur

� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �

� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �

� � � � �� � � � �� � � � �� � � � �� � � � �

� � � � �� � � � �� � � � �� � � � �

� � � � � �� � � � � �� � � � �� � � � �

��������������������

��������������������

client : Le client peut interroger le serveur en utilisant :I un langage de requetes structure (compatible avec la norme ANSI SQL)I un langage de programmation classique double d’un connecteur

specifique (DBC : DataBase Connectivity) : ODBC pour le langage C,JDBC pour Java et equivalents pour les langages C++, Delphi, Perl,Python, TCL, ...

Le client peut etre installe sur tout type de systeme d’exploitation(Windows, Mac OS, Linux, OS/2, ...), il interagit le plus souvent avecle serveur au travers d’un mecanisme reseau.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 10 / 99

Page 11: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Modele client-serveur

serveur : c’est le (( cœur )) du SGBD, il :I attend les sollications des clients, eventuellement nombreux, et

provenant de divers systemes d’exploitation ;I effectue les recherches correspondantes dans la base ;I retourne la reponse correspondante au client dans un format

independant du systeme d’exploitation.

il est assez facile d’etendre ce modele pour que plusieurs serveurs serepartissent la charge et repondent de facon efficace aux sollicitationsdes multiples clients (comme les moteurs de recherche par exemple).

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 11 / 99

Page 12: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan

1 Organisation de l’UE

2 Concepts generiquesBase de donneesEst-ce si simple ?Principe client-serveur

3 Langage SQLPourquoi ?LES langagesSchemas

4 Premiere base de donneesConceptionInsertion dans une tableAffichage

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 12 / 99

Page 13: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le langage de requetes SQL (Structured QueryLanguage) : le pourquoi d’un tel langage

si l’on souhaite que le client et le serveur se comprennent, quelquesoit le systeme d’exploitation des machines sur lesquels ils sontinstalles, il faut que le langage qui leur serve a s’echanger requetes etreponses aux requetes soit normalise ;

le langage de requetes doit etre independant de la structurationinterne des entites ;

les differents systemes de gestion de bases de donnees (Oracle,MySQL, PostgresQL, ...) doivent pouvoir echanger des donneesaisement.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 13 / 99

Page 14: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le langage de requetes SQL (Structured QueryLanguage) : le pourquoi d’un tel langage

un langage de requetes structure SQL (Structured Query Language)est un langage concu pour extraire des informations de la base dedonnees. Le premier SQL a la fin des annees 70 s’appelait Oracle...c’est a present une des grandes entreprises informatiques, commepeuvent l’etre Intel (processeurs), Microsoft (environnementsgraphiques), Cisco (reseaux Internet) ;

il a ete normalise (ou agree par le American National StandardsInstitute) en 1986, 1992 et 1999 ;

nous utiliserons pour les TD/TP le SGBD MySQL, conforme a la plusrecente des normes preconisees par l’ANSI, qui est decrit dans ungrand nombre d’ouvrages et de sites www.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 14 / 99

Page 15: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le langage de requetes SQL (Structured QueryLanguage) : structuration

Le langage de commandes SQL peut etre separe suivant quatre categories :

DDL (Data Definition Language) :langage de manipulation des tables representant les entites (exemples :commandes alter, create, drop)

DML (Data Manipulation Language) :langage de manipulation des donnees presentees dans les tables (exemples :delete, insert, load data, update)

DQL (Data Query Language) :langage de requetes (d’interrogation) sur les donnees (exemple : selectavec toutes les clauses)

DCL (Data Control Language) :langage de controle d’acces aux donnees (exemples : alter password,grant, revoke, commit, rollback)

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 15 / 99

Page 16: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Les schemas

Il est possible de considerer quatre niveaux de ce que nous nommerons desschemas :

externe 1 externe 2 externe 3

conceptuel

interne

physique

entités/relations

différentes vues

index/optimisation

fichiers/répertoires

UN schema externe est UNE facon dont les donnees serontpresentees a l’utilisateur, en quelque sorte, le masque de saisie ou devisualisation, ce que nous appellerons la vue. Il peut y avoir plusieursschemas externes pour une meme base de donnees ;

le schema conceptuel est la facon dont les donnees sont repartiesdans les tables, en fonction des entites qui ont ete definies et desdifferents attributs associes a une entite ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 16 / 99

Page 17: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Les schemas

le schema interne est la facon dont sont organises les index et tous leselements associes indirectement aux donnees, permettant uneoptimisation des ressources de stockage et de meilleurs performance lorsde l’acces aux donnees ;le schema physique correspond au schema de stockage des tables etbases en fonction du materiel (disques durs, memoire, ...) et du systemed’exploitation. Ce schema ne concerne que l’administrateur.

Ces deux derniers niveaux sont moins faciles d’acces, nous ne parlerons parla suite que succintement du schema interne.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 17 / 99

Page 18: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan

1 Organisation de l’UE

2 Concepts generiquesBase de donneesEst-ce si simple ?Principe client-serveur

3 Langage SQLPourquoi ?LES langagesSchemas

4 Premiere base de donneesConceptionInsertion dans une tableAffichage

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 18 / 99

Page 19: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Conception d’une premiere base de donnees

Nous allons concevoir une petite base de donnees toute simple. Elle vacontenir les noms, prenoms et filieres des etudiants inscrits pour cetteoption. Elle consiste en une seule table, que nous nommerons etudiant,qui contient quatre attributs types :

le prenom : une chaıne de caracteres d’au plus 30 lettres ;

le nom : une chaıne de caracteres d’au plus 30 lettres ;

la qualite : au choix ’Melle’,’Mme ou ’M.’ ;

la filiere : une chaıne de caracteres de 6 caracteres ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 19 / 99

Page 20: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Code SQL correspondant a la creation de la base dedonnees base du cours

creation de la base de donnees par une requete SQLSyntaxe : create database nom basenom base est constitue de lettres, et chiffres et du caractere souligne , il peutcomporter jusqu’a 30 lettres et doit etre unique.

create database base du cours ;Vous devez creer une base de donnees par projet que vous developpez memes’il est possible theoriquement de regrouper des tables sans aucun rapport lesunes avec les autres dans une meme base.utilisation de la base nouvellement creee :

use base du cours ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 20 / 99

Page 21: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Code SQL correspondant a la creation de la table etudiant

creation de la tableSyntaxe : create table nom table(liste de declarations d’attributs)les regles de construction de nom table sont identiques a nom base...

create table etudiant(prenom varchar(30),nom varchar(30),qualite enum(’Melle’,’Mme’,’M.’) not null,filiere varchar(6) default ’SVA331’) ;

nomprenomqualitefiliere

VARCHARVARCHAR

VARCHARENUM (’Melle’,’Mme’,’M.’)

(30)(30)

(6)

etudiant

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 21 / 99

Page 22: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Affichage des informations relatives a la table etudiant

show databases ; va afficher base du coursshow tables ; va afficher etudiantdescribe etudiant ; va afficher la structure de la table sous la formesuivante :

Field Type Null Key Default Extraprenom varchar(30) YES NULLnom varchar(30) YES NULLqualite enum(’Melle’,’Mme’,’M.’) Mellefiliere varchar(6) YES SVA331

Certains champs ici (champs Key et Extra) ne sont pas utilisees pourl’instant, le reste est comprehensible.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 22 / 99

Page 23: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Les types des attributs

Une declaration d’attribut est de la formenom attribut type d attribut [contraintes]les types des attributs pouvant etre :

des chaınes de caracteres : char(longueur), varchar(longueur),tinytext, text, mediumtext, longtext, ...

des numeriques : tinyint, smallint, mediumint, int, bigint,float, double, real, ...

des dates : timestamp, date, time, datetime, year, ...

ensemblistes : enum(valeurs), set(valeurs)

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 23 / 99

Page 24: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Les contraintes sur les attributs

Certaines contraintes peuvent etre ajoutees lors de la declaration desattributs, elles sont de plusieurs ordres :

contraintes de domaine (valeurs prises par un attribut not null -pour l’attribut qualite, default pour l’attribut filiere, unique). Cescontraintes peuvent etre implicites, comme pour la valeur par defautde l’attribut qualite ;

contraintes d’integrite d’entite (precise la cle primaire de chaquetable : nous en reparlerons plus tard primary key)

contraintes d’integrite referentielle (assure de la coherence entre clesprimaires et cles etrangeres correspondantes : nous en reparlerons plustard foreign key, references)

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 24 / 99

Page 25: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Insertion d’elements dans une table

Nous avons plusieurs possibilites :insertion simple totale :Syntaxe : insert into ident table values(liste complete des valeurs) ;

insert into etudiant values(’Marie’,’Delabio’,’Melle’,’SVA331’) ;

insertion simple partielle :Syntaxe : insert into ident table(liste attributs) values(liste de valeurs) ;

insert into etudiant(prenom) values(’Pierre’) ;

insertion multiple (totale ou partielle) :Syntaxe : insert into ident table(liste attributs) values(plusieurs listes de valeurs) ;

insert into etudiant(prenom) values(’Paul’),(’Isabelle’) ;

insertion a partir des donnees d’un fichier :Syntaxe : load data infile nom fichier into table ident table ;

load data infile ’fic liste etudiants’ into table etudiant ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 25 / 99

Page 26: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Affichage (simplifie) des elements d’une table

Pour verifier que les elements ont bien ete ajoutes a la table, il nous fautaffiche le contenu de cette table :Syntaxe : select liste attributs from nom table ;select * from etudiant ; (affichage de tous les attributs)

prenom nom qualite filiere

Marie Delabio Melle SVA331Pierre null Melle SVA331Paul null Melle SVA331Isabelle null Melle SVA331

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 26 / 99

Page 27: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Affichage (simplifie) des elements d’une table

select prenom from etudiant ; select nom from etudiant ;

prenom

MariePierrePaulIsabelle

nom

Delabionullnullnull

select prenom as ’Prenom’, filiere as ’Filiere’ from etudiant ;

Prenom Filiere

Marie SVA331Pierre SVA331Paul SVA331Isabelle SVA331

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 27 / 99

Page 28: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Affichage avec clause restrictive des elements d’une table

Nous pouvons souhaiter n’afficher qu’une partie des informationsdisponibles dans une table, pour cela nous utiliserons le mot cle wheresuivi d’une clause de restriction :Syntaxe : select liste attributs from nom table whereclause restrictive ;select * from etudiant where nom<>’null’ ;

prenom nom qualite filiere

Marie Delabio Melle SVA331

select prenom as ’Prenom’, filiere as ’Filiere’ from etudiant where prenom

like ’P%’ ;Prenom Filiere

Pierre SVA331Paul SVA331

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 28 / 99

Page 29: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Contenu du cours

5 Association 1,nTable filiereCle primairePeuplementNouvelle table etudiantCle etrangereRequete conjointe

6 Association n, nTable coursTable etu couPeuplementRequete conjointe

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 29 / 99

Page 30: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan

5 Association 1,nTable filiereCle primairePeuplementNouvelle table etudiantCle etrangereRequete conjointe

6 Association n, nTable coursTable etu couPeuplementRequete conjointe

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 30 / 99

Page 31: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Creation de la table filiere

En fait, on s’apercoit bien vite que le code (sur six caracteres) de la filieren’est pas explicite, et que l’on souhaiterait avoir, pour chaque etudiantplus d’informations sur la filiere dans laquelle il est inscrit. Nous allonscreer une entite specifique, nommee filiere regroupant les informations quilui sont associees, nous etablirons ensuite une association entre ces deuxentites. L’entite filiere sera representee par une table filiere contenant :

le code : une chaıne de caracteres de 8 caracteres (celui que l’ontrouve dans la table etudiant pour l’instant) ;

l’intitule complet : une chaıne de caracteres (< 40 lettres) ;

le parcours : licence, master ou doctorat code sur un caractere ;

l’annee : un entier sur un chiffre ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 31 / 99

Page 32: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Creation de la table filiere : cle primaire

Nous allons a present (( etoffer )) notre table en ajoutant un attributparticulier qui va nous permettre d’identifier de facon non-ambigue uneentree dans la table filiere : c’est une cle primaire, comme un numero desecu ou un numero d’etudiant. Nous pourrions utiliser le code del’universite, mais nous allons plutot utiliser un entier, qui aura commepropriete d’etre auto increment not null.

create table filiere(fil id int(3) auto increment not null,fil code char(6),fil intitule varchar(40),fil parcours enum(’l’,’m’,’d’),fil annee int(1),primary key (fil id)) ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 32 / 99

Page 33: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Ce qu’il faut en comprendre

Voici ce qu’en dit MySQL :

Field Type Null Key Default Extrafil id int(3) pri null auto incrementfil code char(6) yes nullfil intitule varchar(30) yes nullfil parcours enum(’l’,’m’,’d’) yes nullfil annee int(1) yes null

On peut noter la colonne Key et Extra ou fil id est indique comme pri etauto increment

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 33 / 99

Page 34: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Peuplement de la table filiere

Nous allons a present (( peupler )) notre table filiere.

insert into filiere(fil code, fil intitule, fil parcours, fil annee)values(’SVA331’,’Biochimie et Biologie Moleculaire’,’l’,3),

(’SVA332’,’Biologie Cellulaire et Physiologie’,’l’,3),(’SVA333’,’Sciences de Vie et de la Terre’,’l’,3),

(’SVA334’,’Ecologie et Biologie des Organismes’,’l’,2),

(’SVA335’,’Ecologie et Biologie des Organes’,’l’,3)) ;

Nous avons entre les attributs fil code, fil intitule, fil parcours et fil anneemais pas l’attribut fil id, qui rappelons-le est auto increment et notnull. Cela veut dire que le systeme va attribuer une valeur si elle n’estpas fournie, pour la premiere entree, ce sera 1, puis cette valeur seraauto-incrementee pour chaque nouvelle entree.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 34 / 99

Page 35: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Peuplement de la table filiere

fil id fil code fil intitule fil parcours fil annee1 SVA331 Biochimie et Biologie Moleculaire l 32 SVA332 Biologie Cellulaire et Physiologie l 33 SVA333 Sciences de la Vie et de la Terre l 3

4 SVA334 Ecologie et Biologie des Organismes l 2

5 SVA335 Ecologie et Biologie des Organes l 3

Essayons d’ajouter une ligne avec une cle primaire deja attribuee :insert into filiere values(3,’SVA331’,’Filiere imaginaire’,’l’,1) ;error 1062 : Duplicate entry ’3’ for key 1

L’entree 3 ne peut etre utilisee deux fois (deja attribuee).

Corrigeons l’erreur sur l’attribut fil annee correspondant a fil id=4 :update filiere set fil annee=3 where fil id=4 ;

Supprimons la ligne superflue correspondant a ’SVA335’delete from filiere where fil code=’SVA335’ ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 35 / 99

Page 36: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Modification de notre table etudiantNous devons modifier la table etudiant pour lui ajouter un attribut cle primaire,renommer les attributs pour les prefixer avec etu et retirer l’attribut filiere pourl’instant.

drop table etudiant ;create table etudiant(

etu id int(5) auto increment not null,etu prenom varchar(30),etu nom varchar(30),etu qualite enum(’Melle’,’Mme’,’M.’) not null,primary key (etu id)),

Nous aurions pu modifier l’attribut (( prenom )) en (( etu prenom )) de la structure dela table etudiant de la facon suivante :

alter table etudiant change prenom etu prenom varchar(30) ;

Pour plus d’information, voir la syntaxe d’alter table

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 36 / 99

Page 37: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Schema entites/associations

Nous pouvons representer a present les deux entites et l’association entreces deux entites :

inscrit en

n 0

fil_id INT NOT NULL AUTO_INCREMENT

fil_parcoursfil_intitulefil_code

INT

VARCHAR

ENUM

(6)

(1)fil_annee

(4O)

filiere

(’l’,’m’,’d’)

etu_prenomVARCHAR

ENUM

etu_id

etu_nometu_qualite

etudiant

VARCHAR

INT NOT NULL AUTO_INCREMENT

(3O)

(3O)

(’Melle’,’Mme’,’M.’)

CHAR

L’association entre les deux entites est indiquee avec sa cardinalite :

c’est le nombre d’une entite qui peut etre mis en association avec l’autre ;

plusieurs etudiants (n du cote de la table etudiant) peuvent etre inscritsdans la meme filiere

mais un etudiant ne peut etre inscrit dans plusieurs filieres...

remarquons qu’une filiere peut ne pas ouvrir par manque d’etudiants, doncla cardinalite minimale peut etre 0 (du cote de la table filiere) !

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 37 / 99

Page 38: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Ajout de la cle etrangere dans la table etudiant

Nous allons a present etablir l’association 0, n entre les entites etudiant etfiliere, nous allons pour cela creer dans la table etudiant une reference versla cle primaire de la table filiere, ce que nous allons appeler une cleetrangere (si la cardinalite de la relation avait ete n, n nous aurions duproceder differemment, comme nous le verrons plus tard) :

inscrit en

n 0

etu_idetudiant

INT NOT NULL AUTO_INCREMENT fil_id INT NOT NULL AUTO_INCREMENT

fil_parcoursfil_intitulefil_code

INT

CHAR

VARCHAR

ENUM

(6)

(’licence’,’master’,’doctorat’)

(1)fil_annee

(4O)

filiere

etu_fil_idetu_prenometu_nometu_qualite ENUM (’Melle’,’Mme’,’M.’)

INT NOT NULL

VARCHAR(3O)

VARCHAR(3O)

fait référence à

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 38 / 99

Page 39: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Ajout de la cle etrangere dans la table etudiant

drop table etudiant ;create table etudiant(

etu id int(5) not null auto increment,etu fil id int(3) not null,etu prenom varchar(30),etu nom varchar(30),etu qualite enum(’Melle’,’Mme’,’M.’) not null,primary key (etu id)),foreign key (etu fil id) references filiere(fil id)) ;

le mot cle foreign key indique que cet attribut est la cle primaired’une autre table ;

le mot cle references, suivi d’un nom de table (ici filiere), vapreciser a quelle table appartient la cle etrangere ;

le nom d’attribut entre parentheses (ici fil id) indique le nom de la cleprimaire tel qu’il est connu dans la table l’hebergeant.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 39 / 99

Page 40: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Peuplement de la table etudiant

insert into etudiant(etu prenom,etu nom,etu qualite,etu fil id)values(’Marie’, ’Delabio’, ’Melle’, 1),(’Pierre’, ’Delageno’, ’M.’, 2),(’Isabelle’, ’Delaproteo’, ’Mme’, 1) ;

select ∗ from etudiant ;

etu id etu fil id etu prenom etu nom etu qualite1 1 Marie Delabio Melle2 2 Pierre Delageno M.3 1 Isabelle Delaproteo Mme

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 40 / 99

Page 41: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Utilisation des deux tables simultanement

Nous pouvons a present utiliser conjointement les tables etudiant et filierede la facon suivante :

select etu prenom,etu nom,etu qualite,fil intitulefrom etudiant,filierewhere etudiant.etu fil id = filiere.fil id ;

etu prenom etu nom etu qualite fil intituleMarie Delabio Melle Biochimie et Biologie MoleculairePierre Delageno M. Biologie Cellulaire et PhysiologieIsabelle Delaproteo Mme Biochimie et Biologie Moleculaire

l’utilisation conjointe des tables est realisee par (( from etudiant,filiere )) ;

l’association entre les deux entites est realisee par la clause (( whereetudiant.etu fil id = filiere.fil id ; )) qui precise explicitement comment lesentrees des deux tables sont mises en correspondance ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 41 / 99

Page 42: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Utilisation des deux tables simultanement

Afficher en ordre alphabetique les prenoms, noms et filieres des etudiants :select etu prenom as ’Prenom’,

etu nom as ’Nom’,fil intitule as ’Filiere’

from etudiant,filierewhere etudiant.etu fil id = filiere.fil idorder by etu prenom ;

Prenom Nom Filiere

Isabelle Delaproteo Biochimie et Biologie MoleculaireMarie Delabio Biochimie et Biologie MoleculairePierre Delageno Biologie Cellulaire et Physiologie

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 42 / 99

Page 43: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan

5 Association 1,nTable filiereCle primairePeuplementNouvelle table etudiantCle etrangereRequete conjointe

6 Association n, nTable coursTable etu couPeuplementRequete conjointe

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 43 / 99

Page 44: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Creation de la table cours

Nous allons a present creer une table cours dans laquelle seront stockeestoutes les informations relatives aux cours. Elle contiendra au minimum lesattributs suivants :

create table filiere(cou id int(3) auto increment not null,cou intitule varchar(40),cou page www varchar(40),primary key (cou id)) ;

Nous aurions pu ajouter des attributs supplementaires comme le semestre,le nombre d’heures de cours, TD et TP, mais l’enseignant ne peut etreajoute, dans la mesure ou plusieurs enseignants peuvent se partager lescours, TD et TP. Il est donc necessaire de penser entite enseignant.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 44 / 99

Page 45: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Association n, n

Nous souhaitons a present etablir l’association entre les entites cours etetudiant, les tables correspondantes sont :

n

VARCHAR

etu_idetudiant

INT NOT NULL AUTO_INCREMENT

(3O)

cou_idcou_intitule

cours

cou_page_wwwVARCHARINT NOT NULL AUTO_INCREMENT

(4O)

suitn

VARCHAR (4O)

etu_qualite ENUM (’Melle’,’Mme’,’M.’)etu_nometu_prenometu_fil_id

VARCHAR (3O)

INT NOT NULL

une cle etrangere dans la table etudiant ne pourrait faire referencequ’a une seule cle primaire de la table cours alors qu’un etudiant peutsuivre plusieurs cours ;

une cle etrangere dans la table cours ne pourrait faire reference qu’aune seule cle primaire de la table etudiant alors qu’un cours peut etresuivi par plusieurs etudiants ;

nous allons utiliser une table supplementaire qui va faire le relai entreles tables des deux entites, cette table s’appelle une table de jointure.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 45 / 99

Page 46: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Association n, n

La table que nous allons creer ne va contenir que peu d’informations,uniquement celles qui permettent l’association : une reference a une entreede la table etudiant et une entree de la table cours, nous allons passer dedeux entites et d’une association n, n entre ces entites a :

trois entites (etudiant, cours et etu cou) ;

deux associations : une association 1, n entre les entites etudiant etetu cou et une association n, 0 entre les entites etu cou et cours.

VARCHAR

etu_idetudiant

INT NOT NULL AUTO_INCREMENT

(3O)

etu_qualite ENUM (’Melle’,’Mme’,’M.’)etu_nometu_prenometu_fil_id

VARCHAR (3O)

INT NOT NULL

etu_couetu_idcou_id

INT NOT NULL

INT NOT NULL

cou_idcou_intitule

cours

cou_page_wwwVARCHARINT NOT NULL AUTO_INCREMENT

(4O)VARCHAR (4O)n

0n1

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 46 / 99

Page 47: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Creation de la table etu cou

Nous allons a present creer une table etu cou dans laquelle seront stockeesles deux cles etrangeres :

create table etu cou(etu id int(3) not null,cou intitule int(3) not null,foreign key(etu id) references etudiant(etu id),foreign key(cou id) references cours(cou id)) ;

Nous allons ajouter par la suite des attributs : les numeros du groupe deTD et de TP par exemple

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 47 / 99

Page 48: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Peuplement des tables etudiant et etu cou

insert into etudiant(etu prenom,etu nom,etu qualite,etu fil id)values (’Paul’,’Dutranscripto’,’M.’,3),

(’Maxime’,’Dumetabolo’,’M.’,4) ;insert into etu cou

values (1,1),(1,2),(1,3),(2,1),(2,2),(3,1),(4,1),(5,3) ;select ∗ from etu cou ;

etu id cou id1 11 21 32 12 23 14 15 3

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 48 / 99

Page 49: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Utilisation des deux tables simultanement

Nous pouvons a present utiliser conjointement les tables etudiant et coursde la facon suivante :

select fil intitule as ”Intitule du cours”,etu nom as ”Nom”,etu prenom as ”Prenom”

from etudiant,cours,etu couwhere etudiant.etu id = etu cou.etu id

and etu cou.cou id = cours.cou idorder by fil intitule ;

Intitule du cours Nom PrenomConception et Construction de Bases de Donnees Paul DutranscriptoConception et Construction de Bases de Donnees Marie DelabioConception et Construction de Bases de Donnees Pierre DelagenoConception et Construction de Bases de Donnees Isabelle DelaproteoProgrammation en Informatique Marie DelabioProgrammation en Informatique Pierre DelagenoUnix et langage C Pierre DelagenoUnix et langage C Maxime Dumetabolo

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 49 / 99

Page 50: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Contenu du cours

7 Architecture trois tiersApercuTrois tiersLangages a balises

8 HTMLParagraphesEntetesCaracteresListesTableauximageHyperlien

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 50 / 99

Page 51: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan

7 Architecture trois tiersApercuTrois tiersLangages a balises

8 HTMLParagraphesEntetesCaracteresListesTableauximageHyperlien

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 51 / 99

Page 52: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Architecture trois tiers :HTML, PHP/Python/Perl (ou autre) et MySQL

Page web de saisie

HTMLProgramme

requête SQL

des paramètresRécupération

PHP, Python, Perl

résultat de larequête SQL

Récupération du

Construction de la

Construction de lapage web de résultatPage web de résultat

Réseau

Envoi de

Envoi durésultat de larequête SQL

la requête SQL requête SQL

Base de

Données

Récupération de la

Exécution de larequête SQL

Résultat de larequête SQL

serveur SGBD

Réseau Demande de la page web

client (ordinateur personnel)

Navigateur web

serveur web

web de résultatEnvoi de la page

� � � �� � � �� � � �� � � �� � � �� � � �� � � �

� � � �� � � �� � � �� � � �� � � �� � � �� � � �� � � �� � � �� � � �

� � � �� � � �� � � �� � � �� � � �� � � �� � � �� � � �

������������������

������������������

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 52 / 99

Page 53: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Les trois tiers

1 HTML – Hyper Text Markup LanguageLe langage HTML est un langage a balise utilise pour la presentationdes pages web, la construction des formulaires a partir desquels seronttransmises les donnees.

2 PHP – PHP Hypertext PreprocessorLe langage PHP est utilise pour recuperer les donnees transmises apartir du formulaire, construire la requete SQL, la transmettre auserveur. Il permet egalement de recuperer le resultat de la requete,une fois effectuee par le SGBD, puis de construire la page HTMLpresentant les resultats.

3 SGBD – Systeme de Gestion de Bases de DonneesLe langage MySQL (dans notre cas) est utilise pour executer larequete, le serveur retourne alors au programme appelant le resultatde la requete.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 53 / 99

Page 54: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

D’autres possibilites ?

PHP n’est pas le seul langage permettant de faire le lien entre la page webet le SGBD :

Python est une alternative extremement interessante, c’est un langagefacile a apprendre, puissant et extensible : il dispose d’un modulepermettant l’interrogation d’un SGBD distant (il est etudie endeuxieme annee de licence du parcours Biologie) ;

Perl est tres utilise, il dispose d’un ensemble de modules pourl’interrogation d’un SGBD distant et la construction de pages HTML ;

ces deux langages possedent de nombreuses fonctionnalites pour letraitement de donnees, des mecanismes souples de gestion de listes,particulierement utiles pour traiter les resultats d’une requete SQL ;

plus generalement, les langages qui s’appuient sur la CGI (CommonGateway Interface)

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 54 / 99

Page 55: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

L’introduction a MySQL, HTML et PHP

MySQL est indispensable (lui ou un autre SGBD) a l’interrogation desdonnees contenues dans la base, il a ete appris pour pouvoirconstruire les requetes qui seront transmises au SGBD.

HTML est le langage de presentation des pages web, il fautl’apprendre pour pouvoir par la suite afficher sur une page web lesresultats des requetes transmises au serveur.

PHP est un langage qui va (( se glisser )) dans le code HTML et vapermettre l’interaction avec le SGBD. Il faut comprendre quelques-unsde ses mecanismes pour permettre la transmission de la requete auSGBD, mais egalement la construction de la page web de resultats.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 55 / 99

Page 56: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Quelques generalites sur les langages a balisesLes langages a balises (ou marqueurs) sont des langages de description structurelle,ils rendent explicite la facon dont le document est construit :

<lettre>

<entete>

<lieu>Mont-Saint-Aignan</lieu>

<date>le 31 octobre 2008</date>

</entete>

<ouverture> Madame, </ouverture>

<corps> Je suis tres heureux de votre lettre </corps>

<fermeture>Cordialement,</fermeture>

<signature>Votre oblige</signature>

</lettre>

Quelques langages a balises : SGML (Std Generalized Markup Language, depuis lesannees 1960), XML (eXtensible Markup Language, 1998), TEXet LATEX 2ε, ...Chaque langage dispose de ses propres balises, ainsi parfois que demecanismes permettant d’en definir de nouvelles.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 56 / 99

Page 57: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan

7 Architecture trois tiersApercuTrois tiersLangages a balises

8 HTMLParagraphesEntetesCaracteresListesTableauximageHyperlien

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 57 / 99

Page 58: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le langage HTML

HTML est utilise pour decrire les pages web ;developpe a la fin des annees 1980 par Tim Berners-Lee alors qu’iltravaillait au CERN pour mettre en commun des documents de travail ;des versions successives, des mecanismes de feuilles de styles, ...voici un exemple de code HTML :

<html><head><title>Mon titre</title>

</head><body><center>Mon texte centre</center>

</body></html>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 58 / 99

Page 59: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le langage HTML :l’entete <head> ... </head>

L’entete <head> contient essentiellement les informations relatives a lapage :

<title>Mon titre</title>

le titre qui apparaıtra sur la barre de titre ;<meta name=author content="Thierry Lecroq">

le nom de l’auteur de la page ;<meta http-equiv="content-type" content="text/html;charset=iso-8859-15">

l’encodage utilise (caracteres accentues avec ¿ par exemple) ;<link rel="stylesheet" href="ficstyle.css">

l’utilisation d’un fichier de style (fonctionnalite non presentee dans cecours).

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 59 / 99

Page 60: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le langage HTML :le corps <body> ... </body>

C’est cette partie du fichier HTML qui va etre affichee par votrenavigateur. Elle contient des balises pour :

les paragraphes ;

les entetes (titres) ;

les listes ;

la construction de tableaux ;

la gestion des images ;

la creation de liens vers d’autres documents ;

la mise en place de formulaires ;

...

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 60 / 99

Page 61: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les paragraphes <p> </p> et lesruptures <br/>

un paragraphe est balise par <p>, et est par defaut justifie a gauche ;

une rupture de paragraphe (passage a la ligne) est balise par <br/> ;

pour modifier ce comportement, il faut ajouter un attribut a la balise<p> comme ci-dessous :

<p>un paragraphe normal sera...</p>

<p align="left"> un paragraphe justifie a ga...</p>

<p align="center">un paragraphe centre</p>

<p align="right">un paragraphe justifie a dr...</p>

<p align="justify">un paragraphe totalement ...</p>

<p> un paragraphe<br/>avec rupture</p>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 61 / 99

Page 62: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les entetes <h1> </h1> a <h6></h6>

<h1>Entete de niveau 1</h1>

<h2>Entete de niveau 2</h2>

<h2 align="center">Entete centree de niveau 2</h2>

<h3>Entete de niveau 3</h3>

<h4>Entete de niveau 4</h4>

<h4>Entete de niveau 4 justifiee a droite</h4>

<h5>Entete de niveau 5</h5>

<h6>Entete de niveau 6</h6>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 62 / 99

Page 63: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML :les caracteres et leur mise en formeEn HTML, les caracteres ne sont pas des balises mais des codes reserves construitsen indiquant dans l’ordre :

l’esperluette & ;le caractere ;le modificateur (grave, acute, circ, cedil, uml) ;le point-virgule.

Ce sont :

code symbole code symbole code symbole&eacute; e &egrave; e &ecirc; e

&Eacute; E &Egrave; E &Ecirc; E... ... ... ... ... ...&ccedil; c &Ccedil; C &uuml; u

Les effets sur les caracteres sont eux accessibles grace a des balises :

<b>texte1</b> et <i>texte2</i> pour texte1 et texte2 ;<u>texte</u> pour texte en souligne.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 63 / 99

Page 64: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les liste non-ordonnees <ul> <li></li> </ul>

<ul>

<li>HTML</li>

<li>PHP</li>

<li>MySQL</li>

</ul>

<ul style="list-style-type: square;">

<li>HTML</li>

<li>PHP</li>

<li>MySQL</li>

</ul>

<ul style="list-style-type: circle;">

<li>HTML</li>

<li>PHP</li>

<li>MySQL</li>

</ul>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 64 / 99

Page 65: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les liste ordonnees <ol> <li> </li></ol>

<ol>

<li>HTML</li>

<li>PHP</li>

<li>MySQL</li>

</ol>

<ol style="list-style-type: lower-roman;">

<li>HTML</li>

<li>PHP</li>

<li>MySQL</li>

</ol>

<ol start="19" style="list-style-type: lower-alpha;">

<li>HTML</li>

<li>PHP</li>

<li>MySQL</li>

</ol>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 65 / 99

Page 66: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les listes descriptives <dl><dt></dt> <dd></dd> </dl>

<dl>

<dt>HTML </dt>

<dd>langage...</dd>

<dt>PHP </dt>

<dd>langage...</dd>

<dt>MySQL</dt>

<dd>systeme...</dd>

</dl>

<dl>

<dd>HTML</dd>

<dd>langage...</dd>

<dd>PHP</dd>

<dd>langage...</dd>

<dd>MySQL</dd>

<dd>systeme...</dd>

</dl>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 66 / 99

Page 67: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les tableaux <table> <tr> <td></td> </tr> </table>

<table width="100%" border=1>

<tr>

<td>haut gauche</td>

<td align="left">haut droite</td>

</tr>

<tr>

<td align="center">bas gauche</td>

<td align="right">bas droite</td>

</tr>

</table>

<table border=1 ncols=2>

<tr>

<td colspan=2 align="center">haut</td>

</tr>

<tr>

<td>bas gauche</td>

<td>bas droite</td>

</tr>

</table>

<table border=1>

<tr>

<td rowspan=2 valign="center">gauche</td>

<td>haut droite</td>

</tr>

<tr>

<td>bas droite</td>

</tr>

</table>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 67 / 99

Page 68: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les tableaux<table> <tr> <td> </td> </tr> </table>

<table frame="vsides">

<tr>

<td rowspan="2" valign="top">gauche</td>

<td colspan="2" align="right">haut droite</td>

</tr>

<tr>

<td>bas milieu</td>

<td style="background-color: rgb(192, 192, 192);">

bas droite</td>

</tr>

</table>

<table frame="hsides" rules="rows">

<tr>

<td rowspan="2" valign="center">gauche</td>

<td colspan="2" align="center">haut droite</td>

</tr>

<tr>

<td bgcolor="ff00ff">bas milieu</td>

<td>bas droite</td>

</tr>

</table>

<table frame="vsides" rules="cols">

<tr>

<td rowspan="2" valign="bottom">gauche</td>

<td colspan="2" align="left">haut droite</td>

</tr>

<tr>

<td>bas milieu</td>

<td bgcolor="blue">bas droite</td>

</tr>

</table>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 68 / 99

Page 69: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les tableaux<table> <tr> <td> </td> </tr> </table>

<table cellspacing=0

frame="hsides"

rules="rows">

<tr bgcolor="lightgrey">

<td>Delabio</td><td>Marie</td>

</tr>

<tr>

<td>Delageno</td><td>Pierre</td>

</tr>

<tr bgcolor="lightgrey">

<td>Delaproteo</td><td>Isabelle</td>

</tr>

<tr>

<td>Dumetabolo</td><td>Maxime</td>

</tr>

</table>

<br/>

<table border=1>

<tr>

<td background="chutes_niagara.jpg">

un petit texte pour la<br/>

cellule avec image<br/>

pas tres lisible n’est-ce pas ?</td>

<td>rien d’autre</td>

</tr>

</table>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 69 / 99

Page 70: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : l’insertion d’une image<img src=”...”/>

Une petite image :

<img src="chutes_niagara.jpg"/>

<br/>

Une image etiree en hauteur :

<img alt="Chutes du Niagara"

src="chutes_niagara.jpg"

align="middle"

height="240"

width="120"/>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 70 / 99

Page 71: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : l’insertion d’un hyperlien<a href=”...”>...</a>

<a href="Cours/Ba_Do/index.html">

Lien

</a>

vers les pages de cours.

<br/>

Un lien vers

<a href="mailto:[email protected]">

mon mel

</a>

<br/>

Une image avec un lien autour :

<a href="http://www.niagara.com">

<img src="chutes_niagara.jpg"

alt="Niagara"

height="40">

</a>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 71 / 99

Page 72: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Contenu du cours9 Formulaires

PrincipeForme generaleMethodesLes formulaires

10 PHPIntroductionExemplesActions

11 Connexions au SGBDListe des basesRequete simpleRequete amelioree

12 Interrogation de notre baseFormulaireaction

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 72 / 99

Page 73: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan9 Formulaires

PrincipeForme generaleMethodesLes formulaires

10 PHPIntroductionExemplesActions

11 Connexions au SGBDListe des basesRequete simpleRequete amelioree

12 Interrogation de notre baseFormulaireaction

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 73 / 99

Page 74: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Principe des formulaires

Page web de saisie

HTMLProgramme

des paramètresRécupération

PHP, Python, Perl

Construction de lapage web de résultatPage web de résultat

Réseau Demande de la page web

client (ordinateur personnel)

Navigateur web

serveur web

web de résultatEnvoi de la page

La page web est associee aun fichier-action, ecrit dansun langage de programma-tion, qui va traiter les donneesentrees dans le formulaire web :la page formulaire et le fichier-action sont generalement sur lememe serveur (web).

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 74 / 99

Page 75: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Le balisage HTML : les formulaires<form action=”...” method=”...”> </form><form action="..." method="...">...<input type="submit">

</form>

<form declaration du formulaire ;action="..." fichier-action a executer apres validation

du formulaire ;method="..."> methode de transfert des informations vers

le fichier-action ;... suit alors la construction elle-meme du for-

mulaire ;<input type="submit">construit le bouton de transfert des infor-

mations ;</form> fin du formulaire.

Nous allons apprendre a construire divers formulaires et par la suite comprendre

comment les fichiers-actions peuvent etre construits.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 75 / 99

Page 76: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Les methodes pour les formulaires

la methode get va transmettre les donnees au serveur en les ajoutanta la fin de l’adresse du fichier-action, apres un ?, lorsque les donneessont peu nombreuses et assez petites en taille :

la methode post va transmettre les donnees au serveurindependemment de l’adresse du fichier-action, ce lorsque le nombreou la taille des donnees transmises entre le formulaire et lefichier-action est importante ;

Ces deux methodes ne sont pas specifiques a PHP mais sont rattachees ala partie CGI (Common Gateway Interface).

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 76 / 99

Page 77: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Formulaire contenant une entree texte simple :<input type=”text”>

Formulaire avec l’entr&eacute;e text<br/>

<form action="action_input_text.php"

method="get">

Entrer votre nom :

<input type="text"

name="nom"/>

<br/>

<input type="submit"

value="Entrer"/>

</form>

le nom du fichier-action est action_input_text.php

la methode est get, tres peu d’informations sont transmises

le formulaire contient une entree de type text, appele nom

le formulaire contient un bouton cliquable (submit), sur lequel sera afficheEntrer. C’est ce bouton qui permettra la transmission des informations aufichier-action

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 77 / 99

Page 78: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Formulaire contenant des boutons selectionnables :<input type=”radio”>

Formulaire avec l’entr&eacute;e radio<br/>

<form action="action_input_radio.php"

method="get">

<table border=0>

<tr>

<td valign="top">

Choisissez une fili&egrave;re :

</td>

<td>

<input type="radio" name="filiere"

value="SVA331" checked="checked">

SVA321<br/>

<input type="radio" name="filiere"

value="SVA332">SVA332<br/>

<input type="radio" name="filiere"

value="SVA333">SVA333<br/>

<input type="radio" name="filiere"

value="SVA334">SVA334

</td>

</tr>

<tr>

<td>

<input type="submit" value="Entrer"/>

</td>

<td></td>

</tr>

</table>

</form>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 78 / 99

Page 79: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Formulaire contenant des boutons exclusifs :<input type=”checkbox”>

Formulaire avec l’entr&eacute;e checkbox<br/>

<form action="action_input_checkbox.php"

method="post">

Choisissez quelques cours : <br/>

<input type="checkbox" name="cours[]"

value="Programmation en informatique">

Programmation en informatique<br/>

<input type="checkbox" name="cours[]"

value="Bases de donnees">

Bases de donn&eacute;es<br/>

<input type="checkbox" name="cours[]"

value="Unix et langage C">

Unix et Langage C<br/>

<input type="checkbox" name="cours[]"

value="Assemblage">

Assemblage<br/>

<input type="submit" value="Entrer"/>

</form>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 79 / 99

Page 80: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Formulaire contenant un menu deroulant :<select>

Formulaire avec le menu select<br/>

<form action="action_select.php"

method="get">

S&eacute;lectionner votre couleur pr&eacute;f&eacute;r&eacute;e :<br/>

<select name="couleur">

<option value="bleu">

bleu

</option>

<option value="rouge">

rouge

</option>

<option value="jaune">

jaune

</option>

<option value="vert">

vert

</option>

<option value="violet">

violet

</option>

<option value="rose">

rose

</option>

</select>

<input type="submit" value="Entrer"/>

</form>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 80 / 99

Page 81: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan9 Formulaires

PrincipeForme generaleMethodesLes formulaires

10 PHPIntroductionExemplesActions

11 Connexions au SGBDListe des basesRequete simpleRequete amelioree

12 Interrogation de notre baseFormulaireaction

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 81 / 99

Page 82: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Qu’est-ce que PHP ?, pourquoi utiliser ce langage ?

PHP = (Personal Home Page ou) PHP Hypertext Preprocessor :langage facilitant la generation de code HTML

PHP peut aisement :I analyser les donnees transmises depuis un formulaire ;I effectuer une requete SQL vers un serveur distant ;I mettre en forme la page web presentant le resultat de la requete ;

PHP est facile a programmer, il dispose d’un grand nombre demodules specifiques additionnels ;

beaucoup de documentations pour PHP/MySQL sont disponibles surle reseau ;

PHP fonctionne indifferemment sur PC (Windows et Linux), Mac(Mac OS X) et stations de travail ;

PHP est gratuit, ces codes sources sont disponibles.

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 82 / 99

Page 83: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Notre premier programme PHP<html>

<head>

<title>premier exemple de

programme PHP</title>

</head>

<body>

<?php

print("Nous sommes le ",

date("d m Y, H:i"));

?>

</body>

</html>

le nom du fichier doit se terminer par .php ;

le programme PHP est insere au milieu du code HTML ;

le programme PHP est delimite par <?php et ?> ;

le caractere ; termine toutes les lignes d’instructions ;

la commande print va afficher dans cette page HTML l’informationpassee entre parentheses, ici Nous sommes le " suivi de lacommande date, avec un format particulier (d : jour, m : mois, Y :annee avec 4 chiffres, H : heure sur 24 h et i : minutes).

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 83 / 99

Page 84: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Notre deuxieme programme PHP

<html>

<head>

<title>deuxi&egrave;me exemple de

programme PHP</title>

</head>

<body>

<center>

<?php

$texte = "marie delabio";

print(strtoupper($texte));

?>

</center>

</body>

</html>

ici, la valeur de la variable texte est donnee de facon explicite ;

une fonction, strtoupper transformant toutes les minuscules d’unechaıne de caracteres en majuscules, est utilisee ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 84 / 99

Page 85: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Exemple de fichier-action pour l’entree texte

<html>

<head>

<title>Action pour l’entr&eacute;e texte</title>

</head>

<body>

<?php

$nom = $_GET[’nom’] ;

print("Vous vous appelez : $nom");

?>

</body>

</html>

$nom = $_GET[’nom’] permet de recuperer la valeur nom transmiseen mode get ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 85 / 99

Page 86: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Exemple de fichier-action pour l’entree radio

<html>

<head>

<title>Action pour l’entr&eacute;e radio</title>

</head>

<body>

<?php

$filiere = $_GET[’filiere’] ;

print("Vous avez s&eacute;lectionn&eacute;

la fili&egrave;re suivante : $filiere");

?>

</body>

</html>

$filiere = $_GET[’filiere’] permet de recuperer la valeurfiliere transmise en mode get ;

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 86 / 99

Page 87: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Exemple de fichier-action pour l’entree checkbox

<html>

<head>

<title>Action pour l’entr&eacute;e checkbox</title>

</head>

<body>

Liste des cours auxquels vous vous

&ecirc;tes inscrit&nbsp;: <br/>

<table>

<?php

$cours = $_POST[’cours’];

$couleur="#ffffff";

for ($i=0;$i<count($cours);$i++)

{

if ( $couleur == "#ffffff" )

$couleur="#dddddd";

else

$couleur="#ffffff";

print("<tr bgcolor=\"$couleur\">");

print("<td>$cours[$i]</td></tr>\n");

}

?>

</table>

</body>

</html>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 87 / 99

Page 88: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Explication de l’action pour l’entree checkbox

$cours = $_GET[’cours’] recupere la valeur cours transmise enmode post

$couleur="#ffffff"; la couleur est le blancfor ($i=0;$i<count($cours);$i++) boucle parcourant une a une les valeurs

de 0 a nombre(cours) - 1if ( $couleur == "#ffffff" )

$couleur="#dddddd"; si la couleur est le blanc, elle estchangee en gris

else

$couleur="#ffffff"; sinon (elle est grise), elle est changeeen blanc

echo "<tr bgcolor=\"$couleur\">" ;

echo "<td>$cours[$i]</td></tr>\n"; ajoute au fichier HTML une balise ligne(de couleur) dans le tableau

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 88 / 99

Page 89: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Exemple de fichier-action pour le select

<html>

<head>

<title>Action pour le menu select</title>

</head>

<body>

<?php

$couleur = $_GET[’couleur’] ;

print("Votre couleur s&eacute;lectionn&eacute;e est : ");

print("$couleur\n");

?>

</body>

</html>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 89 / 99

Page 90: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan9 Formulaires

PrincipeForme generaleMethodesLes formulaires

10 PHPIntroductionExemplesActions

11 Connexions au SGBDListe des basesRequete simpleRequete amelioree

12 Interrogation de notre baseFormulaireaction

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 90 / 99

Page 91: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Interrogation du Systeme de Gestion de Bases deDonnees : la liste des bases de donnees

<html>

<head>

<title>Liste des bases g&eacute;r&eacute;es</title>

</head>

<body>

Liste des bases g&eacute;r&eacute;es :

<ol>

<?php

# Requete de connexion a l’hote

$connexion=mysql_connect("localhost","","");

# Determiner la liste des bases

$resultat=mysql_list_dbs($connexion);

# Combien y-a-t-il de bases ?

$nbre_bases=mysql_num_rows($resultat);

# Affichage des bases (une par une)

for($i=1;$i<=$nbre_bases;$i++) {

$ligne=mysql_fetch_array($resultat);

print("<li>$ligne[0]</li>\n"); }

# Terminer la connexion

mysql_close($connexion);

?>

</ol>

</body>

</html>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 91 / 99

Page 92: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Explication du code PHP→ $connexion=mysql_connect("localhost","","");

ouverture de la connexion, dans l’ordre, doivent etre indiques le nom du SGBD, le nom de connexion,le mot de passe

→ $resultat=mysql_list_dbs($connexion);

$resultat va recevoir la liste des bases de donnees, il y aura dans $resultat autant de lignes que debases de donnees gerees par le SGBD

→ $nbre_bases=mysql_num_rows($resultat);

$nbre_bases va recevoir le nombre de lignes dans $resultat, c’est-a-dire le nombre de bases dedonnees gerees par le SGBD

→ for($i=1;$i<=$nbre_bases;$i++) {

boucle de traitement : nous allons executer les commandes suivantes autant de fois qu’il y a de basesde donnees

→ $ligne=mysql_fetch_array($resultat);

interieur de boucle : recuperation de la prochaine ligne de resultat

→ print("<li>$ligne[0]</li>\n"); }

interieur de boucle : affichage dans <li> de la ligne recuperee de resultat

→ mysql_close($connexion);

fermeture de la connexion

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 92 / 99

Page 93: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Premiere requete MySQL : recuperation des nomsd’etudiants

<?php

# Etablir la connexion, selectionner la base

$connexion=mysql_connect("localhost","","");

mysql_select_db("base_du_cours");

# Construire la requete

$requete="SELECT etu_nom FROM etudiant ".

"ORDER BY etu_nom LIMIT 5 ;" ;

# Demander l’execution de la requete

$resultat=mysql_query($requete);

# Combien y-a-t-il de lignes ?

$nbre_lignes=mysql_num_rows($resultat);

# Boucle principale

for($i=1;$i<=$nbre_lignes;$i++) {

# Recuperer la ligne puis l’afficher

$ligne=mysql_fetch_object($resultat);

print("$ligne->etu_nom<br/>\n"); }

# Fermeture de la connexion

my_close($connexion);

?>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 93 / 99

Page 94: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Explication du code PHP (hors connexion et deconnexion)

→ mysql_select_db("base_du_cours");

selection de la base de donnees

→ $requete="SELECT etu_nom FROM etudiant ORDER BY etu_nom LIMIT 5 ;";

construction de la requete a soumettre au SGBD

→ $resultat=mysql_query($requete);

$resultat va recevoir le resultat de la requete SQL envoyee au SGBD

→ $nbre_lignes=mysql_num_rows($resultat);

$nbre_lignes va recevoir le nombre de lignes dans $resultat (au max. 5)

→ for($i=1;$i<=$nbre_lignes;$i++) {

boucle de traitement

→ $ligne=mysql_fetch_array($resultat);

interieur de la boucle : recuperation de la prochaine ligne de resultat

→ print("$ligne->etu_nom<br/>\n"); }

interieur de la boucle : affichage du champs etu_nom de ligne puis passage a la ligne

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 94 / 99

Page 95: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Deuxieme requete MySQL : recuperation des nomsd’etudiants avec mise en forme

<?php

$connexion=mysql_connect("localhost","","");

mysql_select_db("base_du_cours");

$requete="SELECT etu_nom FROM etudiant ".

"ORDER BY etu_nom LIMIT 5;" ;

$resultat=mysql_query($requete);

$nbre_lignes=mysql_num_rows($resultat);

$couleur="#ffffff";

for($i=1;$i<=$nbre_lignes;$i++) {

if ( $couleur == "#ffffff" )

$couleur="#dddddd";

else

$couleur="#ffffff";

$ligne=mysql_fetch_object($resultat);

print("<tr bgcolor=\"$couleur\">");

print("<td> $ligne->etu_nom </td></tr>\n"); }

mysql_close($connexion);

?>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 95 / 99

Page 96: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Plan9 Formulaires

PrincipeForme generaleMethodesLes formulaires

10 PHPIntroductionExemplesActions

11 Connexions au SGBDListe des basesRequete simpleRequete amelioree

12 Interrogation de notre baseFormulaireaction

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 96 / 99

Page 97: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Formulaire pour l’interrogation de notre base

<html>

<head>

<title>

Interrogation de la base de donn&eacute;es

</title>

</head>

<body>

<h1>Interrogation de la base de donn&eacute;es</h1>

<form action="connexion5.php" method="get">

Entrer le code fili&egrave;re :

<input type="text" name="code_filiere"/>

<br/>

<input type="submit" value="Entrer"/>

</form>

</body>

</html>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 97 / 99

Page 98: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Action pour l’interrogation de notre base

<?php

$fil_code =$_GET[’code_filiere’];

print("<h1 align=center> &Eacute;tudiants inscrits

dans la fili&egrave;re");

print(" $fil_code </h1><hr width=’50%’>");

# Etablir la connexion

$connexion=mysql_connect("localhost","","");

# Selection de la base adequate

mysql_select_db("base_du_cours");

$requete="SELECT etu_nom,etu_prenom ".

"FROM etudiant,filiere ".

"WHERE etu_fil_id=fil_id ".

"AND fil_code=\"$fil_code\" ".

"ORDER BY etu_nom ;" ;

$resultat = mysql_query($requete) ;

# Combien y-a-t-il de lignes ?

$nbre_lignes = mysql_num_rows($resultat);

print("<center><table border=1>");

print("<tr><td>Nom</td><td>Pr&eacute;nom</td></tr>");

$couleur="#ffffff";

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 98 / 99

Page 99: Conception et Cr eation de Bases de Donn eeslecroq/cours/bd.pdf · 3 Langage SQL Pourquoi? LES langages ... MySQL, Oracle, O 2, ... les m ecanismes g en eriques d’interrogation

Action pour l’interrogation de notre base

for($i=1;$i<=$nbre_lignes;$i++) {

if ( $couleur == "#ffffff" )

$couleur="#dddddd";

else

$couleur="#ffffff";

# Recuperer ligne apres ligne

$ligne = mysql_fetch_object($resultat);

print("<tr bgcolor=\"$couleur\">");

printf("<td> %s </td>\n <td> %s </td>\n</tr>\n",

$ligne->etu_nom,$ligne->etu_prenom);

}

# Construction du tableau centre

print(" </table></center>\n");

# Fermeture de la connexion a la base de donnees

mysql_close($connexion);

?>

T. Lecroq (Universite de Rouen) Conception et Creation de BD Annee 2008–2009 99 / 99