Académique Documents
Professionnel Documents
Culture Documents
Création de
Bases de
Données
L. Mouchard
Conception et Création de Bases de Données
(Licence Biologie 2ème année)
L. Mouchard
Année 2004-2005
Contenu du cours du 6 novembre 2004
Conception et
Création de
Bases de
1 Organisation de l’UE
Données
L. Mouchard
2 Concepts génériques
base de données
Organisation
de l’UE est-ce si simple ?
Concepts principe client-serveur
génériques
base de données
est-ce si
3 Langage SQL
simple ?
principe
client-serveur
pourquoi ?
Langage SQL LES langages
pourquoi ?
LES langages
schémas
schémas
Conception et
Création de
Bases de
Données Cours
L. Mouchard
concepts génériques des bases de données ;
Organisation bases du langage structuré de requêtes SQL ;
de l’UE
Travaux dirigés (apprentissage du langage SQL)
Concepts
génériques descriptif approfondi des fonctions SQL ;
base de données
est-ce si exercices de conception de bases de données ;
simple ?
principe normalisation des relations et construction des tables ;
client-serveur
construction des requêtes SQL.
Langage SQL
pourquoi ? Travaux pratiques (pratique du langage SQL)
LES langages
schémas mise en pratique des TD sous MySQL ;
Première base
de données
requêtes et vérifications sous phpMyAdmin ;
conception réalisation pratique d’une base de données « grandeur
insertion dans
une table nature ».
affichage
Qu’est-ce qu’une base de données (relationnelle) ?
Conception et
Création de un SGBD (Système de Gestion de Bases de Données) est un
Bases de
Données
ensemble logiciel (un ensemble de programmes) qui permet :
L. Mouchard le stockage des informations ;
la gestion des entités et des mécanismes souples pour
Organisation représenter les associations (dans le modèle relationnel) ;
de l’UE
l’affichage de tout ou partie de la base de données ;
Concepts
génériques Voici quelques exemples de SGBD : Access (beurk), DBase,
base de données
est-ce si
simple ?
Ingres, Informix, mSQL, MySQL, Oracle, O2 , PostgresQL,
principe
client-serveur
Sybase, ...
Langage SQL le modèle relationnel n’est pas le seul possible : nous pouvons
pourquoi ?
LES langages
considérer les éléments de la base comme des objets, de
schémas
définir les méthodes propres à leur utilisation et aux
Première base
de données interactions entre les objets (équivalentes aux associations
conception
insertion dans
dans le modèle que nous avons ébauché). C’est le cas par
une table
affichage
exemple de la base O2 (qui est Orientée-Objet).
Est-ce si simple ?
Conception et
Création de
Bases de
Données Nous venons de décrire rapidement ce que pourrait être
L. Mouchard une base de données :
Organisation quelques entités (étudiants, enseignants, cours) ;
de l’UE
quelques associations (suivre, donner, noter) entre les
Concepts
génériques
entités ;
base de données
est-ce si
mais suffit-il de mettre des noms en face des entités pour
simple ?
principe que le tour soit joué ?
client-serveur
Langage SQL l’entité cours n’est sans doute pas satisfaisante : cours,
pourquoi ?
LES langages TD ou TP ;
schémas
Première base
l’association noter n’est pas satisfaisante : un enseignant
de données
conception
ne note pas un étudiant mais note : un contrôle continu,
insertion dans
une table un compte-rendu de TP ou un examen final ;
affichage
Pourquoi utiliser une base de données ?
Conception et
Création de Parce que :
Bases de
Données les données sont séparées (chaque entité est représentée
L. Mouchard par une table indépendante des autres données) et donc
Organisation réutilisables ;
de l’UE
Concepts
les données sont spécifiées : les « attributs » d’une entité
génériques sont connus et contraints ;
base de données
est-ce si
simple ? les données sont sécurisées : les transactions concurrentes
principe
client-serveur sur les données sont efficacement gérées ;
Langage SQL
pourquoi ? les mécanismes d’importation/exportation des données
LES langages
schémas existent et permettent d’alimenter efficacement les tables ;
Première base
de données
les mécanismes génériques d’interrogation des données
conception
insertion dans
sont déjà développés, le temps de développement d’une
une table
affichage application est par conséquent réduit ;
possibilités d’interfaçage www...
Modèle client-serveur
serveur
Conception et
Création de
client
1. émission 2. réception
Bases de
requête requête requête
Données
internet 3. traitement
5. réception 4. émission
réponse réponse réponse
L. Mouchard
Organisation
de l’UE
Conception et
Création de
Bases de
Données
L. Mouchard
serveur : c’est le « coeur » du SGBD, il :
Organisation attend les sollications des clients, éventuellement
de l’UE
nombreux, et provenant de divers systèmes d’exploitation ;
Concepts
génériques
effectue les recherches correspondantes dans la base ;
base de données retourne la réponse correspondante au client dans un
est-ce si
simple ? format indépendant du système d’exploitation.
principe
client-serveur
Langage SQL
il est assez facile d’étendre ce modèle pour que plusieurs
pourquoi ? serveurs se répartissent la charge et répondent de façon
LES langages
schémas efficace aux sollicitations des multiples clients (comme les
Première base
de données
moteurs de recherche par exemple).
conception
insertion dans
une table
affichage
Le langage de requêtes SQL (Structured Query
Language) : le pourquoi d’un tel langage
Conception et
Création de
Bases de
Données si l’on souhaite que le client et le serveur se comprennent,
L. Mouchard
quelque soit le système d’exploitation des machines sur
Organisation lesquels ils sont installés, il faut que le langage qui leur
de l’UE
serve à s’échanger requêtes et réponses aux requêtes soit
Concepts
génériques normalisé ;
base de données
est-ce si
simple ?
le langage de requêtes doit être indépendant de la
principe
client-serveur structuration interne des entités ;
Langage SQL
pourquoi ?
les différents systèmes de gestion de bases de données
LES langages
schémas
(Oracle, MySQL, posgresQL, ...) doivent pouvoir échanger
Première base des données aisément : imaginez par exemple que vous
de données
conception soyiez obligés d’utiliser toujours Word pour tous vos
insertion dans
une table textes, ou powerpoint pour toutes vos présentations...
affichage
Le langage de requêtes SQL (Structured Query
Language) : le pourquoi d’un tel langage
Conception et
Création de
Bases de
Données un langage de requêtes structuré SQL (Structured Query
L. Mouchard Language) est un langage conçu pour extraire des
Organisation
information de la base de données. Le premier SQL à la fin
de l’UE des années 70 s’appelait Oracle... c’est à présent une des
Concepts
génériques
grandes entreprises informatiques, comme peuvent l’être
base de données Intel (processeurs), Microsoft (environnements
est-ce si
simple ?
principe
graphiques), Cisco (réseaux Internet) ;
client-serveur
Langage SQL
il a été normalisé (ou agréé par le American National
pourquoi ?
LES langages
Standards Institute) en 1986, 1992 et 1999 ;
schémas
Première base
nous utiliserons pour les TD/TP le SGBD MySQL,
de données conforme à la plus récente des normes préconisées par
conception
insertion dans
une table
l’ANSI, qui est décrit dans un grand nombre d’ouvrages et
affichage de sites www.
Le langage de requêtes SQL (Structured Query
Language) : structuration
Conception et
Création de Le langage de commandes SQL peut être séparé suivant quatre
Bases de
Données catégories :
L. Mouchard
DDL (Data Definition Language) :
Organisation
de l’UE
langage de manipulation des tables représentant les entités
(exemples : commandes alter, create, drop)
Concepts
génériques
base de données DML (Data Manipulation Language) :
est-ce si
simple ? langage de manipulation des données présentées dans les tables
principe
client-serveur (exemples : delete, insert, load data, update)
Langage SQL
pourquoi ?
DQL (Data Query Language) :
LES langages
schémas
langage de requêtes (d’interrogation) sur les données (exemple :
Première base
select avec toutes les clauses)
de données
conception DCL (Data Control Language) :
insertion dans
une table langage de contrôle d’accès aux données (exemples : alter
affichage
password, grant, revoke, commit, rollback)
Les schémas
Conception et
Création de
Il est possible de considérer quatre niveaux de ce que nous
Bases de
Données
nommerons des schémas :
L. Mouchard externe 1 externe 2 externe 3 différentes vues
Organisation
conceptuel entités/relations
de l’UE
Conception et
Création de le schéma interne est la façon dont sont organisés les index
Bases de
Données et tous les éléments associés indirectement aux données,
L. Mouchard permettant une optimisation des ressources de stockage et de
meilleurs performance lors de l’accès aux données ;
Organisation
de l’UE le schéma physique correspond au schéma de stockage des
Concepts tables et bases en fonction du matériel (disques durs,
génériques
base de données mémoire, ...) et du système d’exploitation. Ce schéma ne
est-ce si
simple ? concerne que l’administrateur.
principe
client-serveur
Langage SQL
Ces deux derniers niveaux moins faciles d’accès, nous ne
pourquoi ? parlerons par la suite que succintement du scéma interne.
LES langages
schémas
Première base
de données
conception
insertion dans
une table
affichage
Conception d’une première base de données
Conception et
Création de
Bases de
Données
L. Mouchard Nous allons concevoir une petite base de données toute simple.
Organisation Elle va contenir les noms, prénoms et filières des étudiants
de l’UE
inscrits pour cette option, c’est celle que nous avons utilisé en
Concepts
génériques TP. Elle consiste en une seule table, que nous nommerons
base de données
est-ce si
etudiant, qui contient (pour l’instant) quatre attributs typés :
simple ?
principe
client-serveur
le prénom : une chaı̂ne de caractères d’au plus 30 lettres ;
Langage SQL
pourquoi ?
le nom : une chaı̂ne de caractères d’au plus 30 lettres ;
LES langages
schémas la qualite : au choix ’Melle’,’Mme ou ’M.’ ;
Première base
de données
la filière : une chaı̂ne de caractère de 6 caractères ;
conception
insertion dans
une table
affichage
Code SQL correspondant à la création de la base
de données baselaurent
Conception et
Création de création de la base de données par une requête SQL (déjà fait
Bases de
Données pour vous en TP)
L. Mouchard Syntaxe : create database nom base
nom base est constitué de lettres, et chiffres et du caractère
Organisation
de l’UE
souligné , il peut comporter jusqu’à 30 lettres et doit être unique.
Concepts
create database baselaurent ;
génériques Vous devez créer une base de données par projet que vous
base de données
est-ce si développez même s’il est possible théoriquement de regrouper des
simple ?
principe
client-serveur
tables sans aucun rapport les unes avec les autres dans une même
Langage SQL
base (vous disposez d’une seule base de données à votre nom
pourquoi ? pour les TP)
LES langages
schémas utilisation de la base nouvellement créée :
Première base use baselaurent ;
de données
conception
insertion dans
une table
affichage
Code SQL correspondant à la création de la table
etudiant
Conception et
Création de création de la table
Bases de
Données Syntaxe : create table nom table(liste de déclarations
L. Mouchard d’attributs)
les règles de construction de nom table sont identiques à
Organisation
de l’UE
nom base...
Concepts
create table etudiant(
génériques prenom varchar(30),
base de données
est-ce si nom varchar(30),
simple ?
principe
client-serveur
qualite enum(’Melle’,’Mme’,’M.’) not null,
Langage SQL
filiere varchar(6) default ’svm321’) ;
pourquoi ?
LES langages
schémas
etudiant
Première base nom VARCHAR (30)
Première base
de données Certains champs ici (champs Key et Extra) ne sont pas utilisées
conception
insertion dans
une table
pour l’instant, le reste est compréhensible.
affichage
Les types des attributs
Conception et
Création de
Bases de
Données Une déclaration d’attribut est de la forme
L. Mouchard
nom attribut type d attribut [contraintes]
Organisation les types des attributs pouvant être :
de l’UE
Concepts
des chaı̂nes de caractères : char(longueur),
génériques
base de données
varchar(longueur), tinytext, text, mediumtext,
est-ce si
simple ?
longtext, ...
principe
client-serveur des numériques : tinyint, smallint, int, mediumint,
Langage SQL
pourquoi ?
int, bigint, float, double, real, ...
LES langages
schémas des dates : timestamp, date, time, datetime, year,
Première base
de données
...
conception
insertion dans ensemblistes : enum(valeurs), set(valeurs)
une table
affichage
Les contraintes sur les attributs
Conception et
Création de
Bases de Certaines contraintes peuvent être ajoutées lors de la
Données
déclaration des attributs, elles sont de plusieurs ordres :
L. Mouchard
contraintes de domaine (valeurs prises par un attribut not
Organisation
de l’UE null - pour l’attribut qualite, default pour l’attribut
Concepts filiere, unique). Ces contraintes peuvent être implicites,
génériques
base de données comme pour la valeur par défaut de l’attribut qualite ;
est-ce si
simple ?
principe contraintes d’intégrité d’entité (précise la clé primaire de
client-serveur
Langage SQL
chaque table : nous en reparlerons plus tard primary
pourquoi ? key)
LES langages
schémas
contraintes d’intégrité référentielle (assure de la cohérence
Première base
de données entre clés primaires et clés étrangères correspondantes :
conception
insertion dans nous en reparlerons plus tard foreign key,
une table
affichage references)
Insertion d’éléments dans une table
Conception et
Création de
Bases de
Données
Nous avons plusieurs possibilités :
L. Mouchard
insertion simple totale :
Organisation Syntaxe : insert into nom table values(liste complète des valeurs) ;
de l’UE insert into etudiant values(’Margaux’,’Delabio’,’Melle’,’svm321’) ;
Concepts insertion simple partielle :
génériques Syntaxe : insert into ident table(liste attributs) values(liste de valeurs) ;
base de données
est-ce si insert into etudiant(prenom) values(’Myriam’) ;
simple ?
principe insertion multiple (totale ou partielle) :
client-serveur
Syntaxe : insert into ident table(liste attributs) values(plusieurs listes de
Langage SQL valeurs) ;
pourquoi ?
LES langages
insert into etudiant(prenom) values(’Hélène’),(’Laurent’) ;
schémas insertion à partir des données d’un fichier :
Première base Syntaxe : load data infile nom fichier into table nom table ;
de données load data infile ’fic liste etudiants’ into table etudiant ;
conception
insertion dans
une table
affichage
Affichage (simplifié) des éléments d’une table
Conception et
Création de
Bases de
Données
L. Mouchard Pour vérifier que les éléments ont bien été ajoutés à la table, il
Organisation nous faut affiche le contenu de cette table :
de l’UE
Syntaxe : select liste attributs from nom table ;
Concepts
génériques select * from etudiant ; (affichage de tous les attributs)
base de données
est-ce si
simple ?
principe
prenom nom qualite filiere
client-serveur
Margaux Delabio Melle svm321
Langage SQL
pourquoi ? Myriam null Melle svm321
LES langages
schémas Hélène null Melle svm321
Première base
de données
Laurent null Melle svm321
conception
insertion dans
une table
affichage
Affichage (simplifié) des éléments d’une table
Conception et
Création de
Bases de
Données select prenom from etudiant ; select nom from etudiant ;
L. Mouchard prenom nom
Organisation Margaux Delabio
de l’UE
Myriam null
Concepts
génériques Hélène null
base de données
est-ce si
Laurent null
simple ?
principe
client-serveur select prenom as ’Prénom’, filiere as ’Filière’ from etudiant ;
Langage SQL Prénom Filière
pourquoi ?
LES langages Margaux svm321
schémas
Première base
Myriam svm321
de données
conception
Hélène svm321
insertion dans
une table
Laurent svm321
affichage
Affichage avec clause restrictive des éléments d’une
table
Conception et
Création de
Bases de
Données
Nous pouvons souhaiter n’afficher qu’une partie des
L. Mouchard
informations disponibles dans une table, pour cela nous
utiliserons le mot clé where suivi d’une clause de restriction :
Organisation
de l’UE Syntaxe : select liste attributs from nom table where
Concepts clause restrictive ;
génériques
base de données select * from etudiant where nom<>’null’ ;
est-ce si
simple ? prenom nom qualite filiere
principe
client-serveur Margaux Delabio Melle svm321
Langage SQL
pourquoi ?
LES langages
select prenom as ’Prénom’, filiere as ’Filière’ from etudiant
schémas
where prenom like ’M%’ ;
Première base
de données Prénom Filière
conception
insertion dans
Margaux svm321
une table
affichage Myriam svm321
Contenu du cours du 13 novembre 2004
Conception et
Création de
Bases de
Données 5 Association 1,n
L. Mouchard table filiere
Association
clé primaire
1,n peuplement
table filiere
clé primaire nouvelle table etudiant
peuplement
nouvelle table
etudiant
clé étrangère
clé étrangère
requête
requête conjointe
conjointe
Association
n,n 6 Association n,n
table cours
table etu cou
table cours
peuplement
requête table etu cou
conjointe
peuplement
requête conjointe
Création de la table filiere
Conception et
Création de En fait, on s’aperçoit bien vite que le code (sur six caractères)
Bases de
Données de la filière n’est pas explicite, et que l’on souhaiterait avoir,
L. Mouchard pour chaque étudiant plus d’informations sur la filière dans
Association laquelle il est inscrit. Nous allons créer une entité spécifique,
1,n
table filiere
nommée filière regroupant les informations qui lui sont
clé primaire
peuplement
associées, nous établirons ensuite une association entre ces
nouvelle table
etudiant deux entités. L’entité filière sera représentée par une table
clé étrangère
requête filiere contenant :
conjointe
Conception et
Création de
Bases de Nous allons à présent « étoffer » notre table en ajoutant un
Données
attribut particulier qui va nous permettre d’identifier de façon
L. Mouchard
non-ambigüe une entrée dans la table filiere : c’est une clé
Association
1,n
primaire, comme un numéro de sécu ou un numéro d’étudiant.
table filiere Nous pourrions utiliser le code de l’université, mais nous allons
clé primaire
peuplement
nouvelle table
plutôt utiliser un entier, qui aura comme propriété d’être
etudiant
clé étrangère
auto increment not null.
requête
conjointe
Conception et
Création de
Bases de
Données
L. Mouchard
Voici ce qu’en dit MySQL :
Association
1,n
table filiere
clé primaire
Field Type Null Key Default Extra
peuplement fil id int(3) pri null auto increment
nouvelle table fil code char(6) yes null
etudiant
clé étrangère fil intitule varchar(30) yes null
requête
conjointe fil parcours enum(’l’,’m’,’d’) yes null
Association
fil annee int(1) yes null
n,n
table cours
table etu cou On peut noter la colonne Key et Extra où fil id est indiqué
peuplement
requête comme pri et auto increment
conjointe
Peuplement de la table filiere
Conception et
Création de
Bases de
Données Nous allons à présent « peupler » notre table filiere.
L. Mouchard
insert into filiere(fil code, fil intitule, fil parcours, fil annee)
Association values(’svm321’,’Biochimie’,’l’,2),
1,n
(’svm322’,’Biologie Cellulaire et Physiologie’,’l’,2),
table filiere
clé primaire (’svm323’,’Biologie Générale et Sciences de la Terre’,’l’,2),
peuplement (’svm324’,’Biologie des Organismes’,’l’,3),
nouvelle table
etudiant (’svm325’,’Biologie des Organes’,’l’,2)) ;
clé étrangère
requête
conjointe
Nous avons entré les attributs fil code, fil intitule, fil parcours
Association
n,n et fil annee mais pas l’attribut fil id, qui rappelons-le était
table cours
table etu cou auto increment et not null. Cela veut dire que le
peuplement
requête système va attribuer une valeur si elle n’est pas fournie, pour la
conjointe
première entrée, ce sera 1, puis cette valeur sera
auto-incrémentée pour chaque nouvelle entrée.
Peuplement de la table filiere
Conception et
Création de
Bases de
Données fil id fil code fil intitule fil parcours fil annee
L. Mouchard 1 svm321 Biochimie l 2
2 svm322 Biologie Cellulaire et Physiologie l 2
Association 3 svm323 Biologie Générale et Sciences ... l 2
1,n 4 svm324 Biologie des Organismes l 3
table filiere
clé primaire
5 svm325 Biologie des Organes l 2
peuplement
nouvelle table
etudiant
clé étrangère
Essayons d’ajouter une ligne avec une clé primaire déjà attribuée :
requête insert into filiere values(3,’svm331’,’Filière imaginaire’,’l’,1) ;
conjointe
error 1062 : Duplicate entry ’3’ for key 1
Association
n,n
L’entrée 3 ne peut être utilisée deux fois (déjà attribuée).
table cours
table etu cou
peuplement Corrigeons l’erreur sur l’attribut fil annee correspondant à fil id=4 :
requête
conjointe update filiere set fil annee=2 where fil id=4 ;
Conception et Nous devons modifier la table etudiant pour lui ajouter un attribut clé
Création de
Bases de primaire, renommer les attributs pour les préfixer avec etu et retirer
Données
l’attribut filiere pour l’instant.
L. Mouchard
Conception et
Création de
Nous pouvons représenter à présent les deux entités et
Bases de
Données
l’association entre ces deux entités :
n 0
L. Mouchard etudiant inscrit en filiere
etu_id INT NOT NULL AUTO_INCREMENT fil_id INT NOT NULL AUTO_INCREMENT
etu_prenom VARCHAR (3O) fil_code CHAR (6)
Association etu_nom VARCHAR (3O) fil_intitule VARCHAR (4O)
1,n etu_qualite ENUM (’Melle’,’Mme’,’M.’) fil_parcours ENUM (’l’,’m’,’d’)
table filiere fil_annee INT (1)
clé primaire
peuplement
nouvelle table
etudiant
L’association entre les deux entités est indiquée avec sa cardinalité :
clé étrangère
requête
conjointe
c’est le nombre d’une entité qui peut être mis en association
Association
avec l’autre ;
n,n
table cours plusieurs étudiants (n du coté de la table etudiant) peuvent être
table etu cou
peuplement
inscrits dans la même filière
requête
conjointe mais un étudiant ne peut être inscrit dans plusieurs filières...
remarquons qu’une filière peut ne pas ouvrir par manque
d’étudiants, donc la cardinalité minimale peut être 0 (du coté de
la table filiere) !
Ajout de la clé étrangère dans la table etudiant
Conception et
Création de
Bases de
Données
L. Mouchard
Nous allons à présent établir l’association 0,n entre les entités
étudiant et filière, nous allons pour cela créer dans la table
Association
1,n etudiant une référence vers la clé primaire de la table filiere, ce
table filiere
clé primaire que nous allons appeler une clé étrangère (si la cardinalité de
peuplement
nouvelle table la relation avait été n, n nous aurions dû procéder
etudiant
clé étrangère différemment, comme nous le verrons plus tard ) :
requête
conjointe
n 0
Association etudiant inscrit en filiere
n,n etu_id INT NOT NULL AUTO_INCREMENT fil_id INT NOT NULL AUTO_INCREMENT
table cours
etu_fil_id INT NOT NULL fil_code CHAR (6)
peuplement
etu_nom VARCHAR (3O) fil_parcours ENUM (’licence’,’master’,’doctorat’)
etu_qualite ENUM (’Melle’,’Mme’,’M.’) fil_annee INT (1)
requête
conjointe
Ajout de la clé étrangère dans la table etudiant
Conception et
Création de
Bases de
Données
L. Mouchard
insert into etudiant(etu prenom,etu nom,etu qualite,etu fil id)
Association values(’Margaux’, ’Delabio’, ’Melle’, 1),
1,n
table filiere (’Myriam’, ’Delageno’, ’Mme’, 2),
clé primaire
peuplement
(’Laurent’, ’Delaproteo’, ’M.’, 1) ;
nouvelle table
etudiant
select ∗ from etudiant ;
clé étrangère
requête
conjointe etu id etu fil id etu prenom etu nom etu qualite
Association
n,n
1 1 Margaux Delabio Melle
table cours 2 2 Myriam Delageno Mme
table etu cou
peuplement 3 1 Laurent Delaproteo M.
requête
conjointe
Utilisation des deux tables simultanément
Conception et
Création de Nous pouvons à présent utiliser conjointement les tables
Bases de
Données etudiant et filiere de la façon suivante :
L. Mouchard
select etu prenom,etu nom,etu qualite,fil intitule
Association from etudiant,filiere
1,n where etudiant.etu fil id = filiere.fil id ;
table filiere
clé primaire
peuplement etu prenom etu nom etu qualite fil intitule
nouvelle table
etudiant Margaux Delabio Melle Biochimie
clé étrangère Myriam Delageno Mme Biologie Cellulaire et Physiologie
requête
conjointe Laurent Delaproteo M. Biochimie
Association
n,n l’utilisation conjointe des tables est réalisée par « from
table cours
table etu cou etudiant,filiere » ;
peuplement
requête
conjointe l’association entre les deux entités est réalisée par la clause «
where etudiant.etu fil id = filiere.fil id ; » qui précise
explicitement comment les entrées des deux tables sont mises en
correspondance ;
Utilisation des deux tables simultanément
Conception et
Création de
Bases de
Données Afficher en ordre alphabétique les prénoms, noms et filières des
L. Mouchard étudiants :
Association
select etu prenom as ’Prénom’,
1,n etu nom as ’Nom’,
table filiere
clé primaire fil intitule as ’Filière’
peuplement
nouvelle table
etudiant
from etudiant,filiere
clé étrangère
requête
where etudiant.etu fil id = filiere.fil id
conjointe
order by etu prenom ;
Association
n,n
table cours
table etu cou
Prénom Nom Filière
peuplement
requête Laurent Delaproteo Biochimie
conjointe
Margaux Delabio Biochimie
Myriam Delageno Biologie Cellulaire et Physiologie
Création de la table cours
Conception et
Création de
Bases de Nous allons à présent créer une table cours dans laquelle seront
Données
stockées toutes les informations relatives aux cours. Elle
L. Mouchard
contiendra au minimum les attributs suivants :
Association
1,n
table filiere create table filiere(
clé primaire
peuplement cou id int(3) auto increment not null,
nouvelle table
etudiant cou intitule varchar(40),
clé étrangère
requête
cou page www varchar(40),
conjointe
primary key (cou id)) ;
Association
n,n
table cours
table etu cou
Nous aurions pu ajouter des attributs supplémentaires comme
peuplement
requête
le semestre, le nombre d’heures de cours, TD et TP, mais
conjointe
l’enseignant ne peut être ajouté, dans la mesure où plusieurs
enseignants peuvent se partager les cours, TD et TP. Il est
donc nécessaire de penser entité enseignant.
Association n,n
Conception et
Création de
Nous souhaitons à présent établir l’association entre les entités
Bases de
Données
cours et étudiant, les tables correspondantes sont :
n n
L. Mouchard etudiant suit cours
etu_id INT NOT NULL AUTO_INCREMENT cou_id INT NOT NULL AUTO_INCREMENT
etu_fil_id INT NOT NULL cou_intitule VARCHAR (4O)
Association etu_prenom VARCHAR (3O) cou_page_www VARCHAR (4O)
Association
alors qu’un étudiant peut suivre plusieurs cours ;
n,n
table cours
une clé étrangère dans la table cours ne pourrait faire
table etu cou
peuplement
référence qu’à une seule clé primaire de la table etudiant
requête
conjointe alors qu’un cours peut être suivi par plusieurs etudiants ;
nous allons utiliser une table supplémentaire qui va faire le
relai entre les tables des deux entités, cette table s’appelle
une table de jointure.
Association n,n
Conception et
Création de
Bases de La table que nous allons créer ne va contenir que peu
Données
d’informations, uniquement celles qui permettent l’association :
L. Mouchard
une référence à une entrée de la table etudiant et une entrée de
Association
1,n
la table cours, nous allons passer de deux entités et d’une
table filiere
clé primaire
association n,n entre ces entités à :
peuplement
nouvelle table trois entités (étudiant, cours et étu cou) ;
etudiant
clé étrangère
requête deux associations : une association 1,n entre les entités
conjointe
Association
étudiant et étu cou et une association n,0 entre les entités
n,n étu cou et cours.
table cours
table etu cou
peuplement etudiant 1 n etu_cou 0 cours
requête etu_id INT NOT NULL AUTO_INCREMENT etu_id INT NOT NULL cou_id INT NOT NULL AUTO_INCREMENT
conjointe etu_fil_id INT NOT NULL cou_id INT NOT NULL cou_intitule VARCHAR (4O)
etu_prenom VARCHAR (3O) n cou_page_www VARCHAR (4O)
etu_nom VARCHAR (3O)
etu_qualite ENUM (’Melle’,’Mme’,’M.’)
Création de la table etu cou
Conception et
Création de
Bases de
Données
L. Mouchard Nous allons à présent créer une table etu cou dans laquelle
Association
seront stockées les deux clés étrangères :
1,n
table filiere
clé primaire create table etu cou(
peuplement
nouvelle table etu id int(3) not null,
etudiant
clé étrangère cou intitule int(3) not null,
requête
conjointe foreign key(etu id) references etudiant(etu id),
Association foreign key(cou id) references cours(cou id)) ;
n,n
table cours
table etu cou
peuplement Nous allons ajouter par la suite des attributs : les numéros du
requête
conjointe groupe de TD et de TP par exemple
Peuplement des tables etudiant et etu cou
Conception et
Création de
Bases de
Nous pouvons à présent utiliser conjointement les tables
Données etudiant et cours de la façon suivante :
L. Mouchard
Conception et
Création de
Bases de
Données 7 Architecture trois tiers
L. Mouchard aperçu
Architecture
trois tiers
trois tiers langages à balises
aperçu
trois tiers
langages à
balises 8 HTML
HTML
paragraphes
paragraphes
entêtes
caractères
entêtes
listes
tableaux
caractères
image
hyperlien
listes
tableaux
image
hyperlien
Architecture trois tiers :
HTML, PHP/Python/Perl (ou autre) et MySQL
client (ordinateur personnel)
Conception et
Création de
Bases de
Données
L. Mouchard
Architecture
trois tiers Navigateur web
aperçu
trois tiers
langages à
balises Envoi de la page Réseau Demande de la page web
web de résultat
HTML
paragraphes
entêtes Programme
caractères HTML PHP, Python, Perl
listes
Récupération de la
tableaux Page web de saisie Récupération Envoi de
requête SQL
des paramètres la requête SQL Exécution de la
image
Construction de la requête SQL
hyperlien requête SQL
Base de
Réseau
Données
Récupération du
résultat de la Résultat de la
requête SQL Envoi du requête SQL
résultat de la
Construction de la requête SQL
Page web de résultat page web de résultat
serveur SGBD
serveur web
Les trois tiers :
Conception et
Création de 1 HTML - Hyper Text Markup Language
Bases de
Données Le langage HTML est un langage à balise utilisé pour la
L. Mouchard présentation des pages web, la construction des
Architecture
formulaires à partir desquels seront transmises les données.
trois tiers
aperçu
2 PHP - PHP Hypertext Preprocessor
trois tiers
langages à Le langage PHP est utilisé pour récupérer les données
balises
HTML
transmises à partir du formulaire, construire la requête
paragraphes
entêtes
SQL, la transmettre au serveur. Il permet également de
caractères
listes
récupérer le résultat de la requête, une fois effectuée par le
tableaux
image
SGBD, puis de construire la page HTML présentant les
hyperlien
résultats.
3 SGBD - Système de Gestion de Bases de Données
Le langage MySQL (dans notre cas) est utilisé pour
exécuter la requête, le serveur retourne alors au
programme appelant le résultat de la requête.
D’autres possibilités ?
Conception et
Création de
PHP n’est pas le seul langage permettant de faire le lien entre
Bases de
Données
la page web et le SGBD :
L. Mouchard
Python est une alternative extrémement intéressante, c’est
un langage facile à apprendre, puissant et extensible : il
Architecture
trois tiers dispose d’un module permettant l’interrogation d’un
aperçu
trois tiers SGBD distant (il est étudié en première année de licence
langages à
balises du parcours Biologie) ;
HTML Perl est très utilisé, il dispose d’un ensemble de modules
paragraphes
entêtes
caractères
pour l’interrogation d’un SGBD distant et la construction
listes
tableaux
de pages HTML ;
image
hyperlien
ces deux langages possédent de nombreuses
fonctionnalités pour le traitement de données, des
mécanismes souples de gestion de listes, particulièrement
utiles pour traiter les résultats d’une requête SQL ;
plus généralement, les langages qui s’appuient sur la CGI
(Common Gateway Interface)
L’introduction à MySQL, HTML et PHP
Conception et
Création de MySQL est indispensable (lui ou un autre SGBD) à
Bases de
Données l’interrogation des données contenues dans la base, il a été
L. Mouchard appris pour pouvoir construire les requêtes qui seront
Architecture
transmises au SGBD. Il a été présenté lors des deux cours
trois tiers
aperçu
précédents ;
trois tiers
langages à HTML est le langage de présentation des pages web, il
balises
HTML
faut l’apprendre pour pouvoir par la suite afficher sur une
paragraphes
entêtes
page web les résultats des requêtes transmises au serveur.
caractères
listes
C’est l’objet du cours d’aujourd’hui.
tableaux
image PHP est un langage qui va « se glisser » dans le code
hyperlien
HTML et va permettre l’interaction avec le SGBD. Il faut
comprendre quelques-uns de ses mécanismes pour
permettre la transmission de la requête au SGBD, mais
également la construction de la page web de résultats. Il
sera présenté lors du prochain cours ;
Quelques généralités sur les langages à balises
Conception et Les langages à balises (ou marqueurs) sont des langages de description
Création de
Bases de structurelle, ils rendent explicite la façon dont le document est
Données
construit :
L. Mouchard
<lettre>
Architecture <entete>
trois tiers
<lieu>Mont Saint Aignan</lieu>
aperçu
trois tiers <date>le 17 novembre 2004</date>
langages à </entete>
balises
<ouverture> Madame, </ouverture>
HTML <corps> Je suis très heureux de votre lettre </corps>
paragraphes <fermeture>Cordialement,</fermeture>
entêtes
caractères
<signature>Votre obligé</signature>
listes </lettre>
tableaux
image
hyperlien Quelques langages à balises : SGML (Std Generalized Markup
Language, depuis les années 1960), XML (eXtensible Markup
Language, 1998), TEXet LATEX 2ε , ...
Chaque langage dispose de ses propres balises, ainsi parfois que
de mécanismes permettant d’en définir de nouvelles.
Le langage HTML
Conception et
Création de HTML est utilisé pour décrire les pages web ;
Bases de
Données développé à la fin des années 1980 par Tim Berners-Lee alors
L. Mouchard qu’il travaillait au CERN pour mettre en commun des
documents de travail ;
Architecture
trois tiers des versions successives, des mécanismes de feuilles de styles,
aperçu
trois tiers ...
langages à
balises voici un exemple de code HTML :
HTML
paragraphes
entêtes
<html>
caractères
listes
<head>
tableaux <title>Mon titre</title>
image
hyperlien </head>
<body>
<center>Mon texte centré</center>
</body>
</html>
Le langage HTML :
l’entête <head> ... </head>
Conception et
Création de
Bases de
Données
L’entête <head> contient essentiellement les informations
L. Mouchard
relatives à la page :
Architecture
trois tiers
aperçu <title>Mon titre</title>
trois tiers
langages à le titre qui apparaı̂tra sur la barre de titre ;
balises
HTML
<meta name=author content="Laurent Mouchard">
paragraphes
entêtes
le nom de l’auteur de la page ;
caractères
<meta http-equiv="content-type" content="text/html;charset=iso-8859-15">
¿ par exemple) ;
listes
tableaux
image
l’encodage utilisé (caractères accentués avec
hyperlien
<link rel="stylesheet" href="ficstyle.css">
l’utilisation d’un fichier de style (fonctionnalité non présentée
dans ce cours).
Le langage HTML :
le corps <body> ... </body>
Conception et
Création de
Bases de
Données
C’est cette partie du fichier HTML qui va être affichée par
L. Mouchard
votre navigateur. Elle contient des balises pour :
Architecture
trois tiers les paragraphes ;
aperçu
trois tiers les entêtes (titres) ;
langages à
balises
les listes ;
HTML
paragraphes
entêtes
la construction de tableaux ;
caractères
listes la gestion des images ;
tableaux
image
hyperlien
la création de liens vers d’autres documents ;
la mise en place de formulaires ;
...
Le balisage HTML : les paragraphes <p> </p> et
les ruptures <br/>
Conception et
Création de
Bases de
Données
un paragraphe est balisé par <p>, et est par défaut justifié
L. Mouchard à gauche ;
Architecture
une rupture de paragraphe (passage à la ligne) est balisé
trois tiers
aperçu
par <br/> ;
trois tiers
langages à pour modifier ce comportement, il faut ajouter un attribut
balises
HTML
à la balise <p> comme ci-dessous ;
paragraphes
entêtes
caractères <p>un paragraphe normal sera...</p>
listes
tableaux <p align="left"> un paragraphe justifié à ga...</p>
image
hyperlien <p align="center">un paragraphe centré</p>
L. Mouchard
<h1>Ent^
ete de niveau 1</h1>
Architecture
trois tiers <h2>Ent^
ete de niveau 2</h2>
aperçu
trois tiers <h2 align="center">Ent^
ete centrée de niveau 2</h2>
langages à
balises <h3>Ent^
ete de niveau 3</h3>
HTML
<h4>Ent^
ete de niveau 4</h4>
paragraphes
entêtes
<h4>Ent^
ete de niveau 4 justifiée à droite</h4>
caractères
listes
tableaux <h5>Ent^
ete de niveau 5</h5>
image
hyperlien <h6>Ent^
ete de niveau 6</h6>
Le balisage HTML :
les caractères et leur mise en forme
Conception et En HTML, les caractères ne sont pas des balises mais des codes
Création de
Bases de réservés construits en indiquant dans l’ordre :
Données
l’esperluette & ;
L. Mouchard
le caractère ;
Architecture le modificateur (grave, acute, circ, cedil, uml) ;
trois tiers
aperçu le point-virgule.
trois tiers
langages à Ce sont :
balises
L. Mouchard
<dl>
<dt>HTML </dt>
Architecture <dd>langage...</dd>
trois tiers <dt>PHP </dt>
aperçu <dd>langage...</dd>
trois tiers <dt>MySQL</dt>
langages à <dd>système...</dd>
balises </dl>
HTML
paragraphes
entêtes
caractères
<dl>
listes <dd>HTML</dd>
tableaux <dd>langage...</dd>
image <dd>PHP</dd>
hyperlien <dd>langage...</dd>
<dd>MySQL</dd>
<dd>système...</dd>
</dl>
Le balisage HTML : les tableaux <table> <tr>
<td> </td> </tr> </table>
<table width="100%" border=1>
Conception et
<tr>
Création de <td>haut gauche</td>
Bases de <td align="left">haut droite</td>
Données </tr>
<tr>
L. Mouchard
<td align="center">bas gauche</td>
<td align="right">bas droite</td>
Architecture </tr>
trois tiers </table>
aperçu
<table border=1 ncols=2>
trois tiers
<tr>
langages à
balises <td colspan=2 align="center">haut</td>
</tr>
HTML <tr>
paragraphes <td>bas gauche</td>
entêtes <td>bas droite</td>
caractères </tr>
listes </table>
tableaux
image <table border=1>
hyperlien <tr>
<td rowspan=2 valign="center">gauche</td>
<td>haut droite</td>
</tr>
<tr>
<td>bas droite</td>
</tr>
</table>
Le balisage HTML : les tableaux
<table> <tr> <td> </td> </tr> </table>
<table frame="vsides">
Conception et <tr>
Création de <td rowspan="2" valign="top">gauche</td>
Bases de <td colspan="2" align="right">haut droite</td>
Données </tr>
<tr>
L. Mouchard <td>bas milieu</td>
<td style="background-color: rgb(192, 192, 192);">
bas droite</td>
Architecture </tr>
trois tiers </table>
aperçu
trois tiers <table frame="hsides" rules="rows">
langages à <tr>
balises <td rowspan="2" valign="center">gauche</td>
<td colspan="2" align="center">haut droite</td>
HTML </tr>
paragraphes <tr>
entêtes <td bgcolor="ff00ff">bas milieu</td>
caractères <td>bas droite</td>
listes </tr>
tableaux </table>
image
hyperlien <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>
Le balisage HTML : les tableaux
<table> <tr> <td> </td> </tr> </table>
Conception et <table cellspacing=0
Création de frame="hsides"
Bases de rules="rows">
Données <tr bgcolor="lightgrey">
<td>Delabio</td><td>Margaux</td>
L. Mouchard </tr>
<tr>
<td>Delageno</td><td>Myriam</td>
Architecture </tr>
trois tiers <tr bgcolor="lightgrey">
aperçu <td>Delaproteo</td><td>Laurent</td>
trois tiers </tr>
langages à <tr>
balises <td>Dumetabolo</td><td>Marie</td>
</tr>
HTML </table>
paragraphes
entêtes
caractères <br/>
listes
tableaux <table border=1>
image <tr>
hyperlien <td background="chutes_niagara.jpg">
un petit texte pour la<br>
cellule avec image<br>
pas très lisible n’est-ce pas ?</td>
<td>rien d’autre</td>
</tr>
</table>
Le balisage HTML : l’insertion d’une image
<img src=”...”/>
Conception et
Création de
Bases de
Données
L. Mouchard
Architecture
trois tiers
aperçu Une petite image :
trois tiers <img src="chutes_niagara.jpg"/>
langages à
balises
HTML
<br/>
paragraphes
entêtes
caractères
listes
tableaux Une image étirée en hauteur :
image <img alt="Chutes du Niagara"
hyperlien src="chutes_niagara.jpg"
align="middle"
height="240"
width="120"/>
Le balisage HTML : l’insertion d’un hyperlien
<a href=”...”>...</a>
Conception et
Création de
Bases de
Données
<a href="Cours/Ba_Do/index.html">
L. Mouchard Lien
</a>
vers les pages de cours.
Architecture
trois tiers <br/>
aperçu
trois tiers Un lien vers
langages à
balises <a href="mailto:Laurent.Mouchard@univ-rouen.fr">
mon mél
HTML </a>
paragraphes
entêtes <br/>
caractères
listes Une image avec un lien autour :
tableaux <a href="http://www.niagara.com">
image <img src="chutes_niagara.jpg"
hyperlien alt="Niagara"
height="40">
</a>
Contenu du cours du 4 décembre 2004
Conception et 9 Formulaires
Création de
Bases de principe
Données
forme générale
L. Mouchard
méthodes
Formulaires les formulaires
principe
forme générale
méthodes
10 PHP
les formulaires
introduction
PHP
introduction exemples
exemples
actions actions
Connexions
au SGBD
11 Connexions au SGBD
liste des bases liste des bases
requête simple
requête
améliorée
requête simple
Interrogation requête améliorée
de notre base
formulaire
12 Interrogation de notre base
action
formulaire
action
Principe des formulaires
L. Mouchard
Interrogation
de notre base
Construction de la
formulaire
Page web de résultat page web de résultat
action
serveur web
Le balisage HTML : les formulaires
<form action=”...” method=”...”> </form>
Conception et
Création de <form action="..." method="..">
Bases de ...
Données
L. Mouchard
<input type=submit>
</form>
Formulaires
principe
forme générale
<form déclaration du formulaire ;
méthodes
les formulaires
action="..." fichier-action à exécuter après validation
PHP
du formulaire ;
introduction method="..."> méthode de transfert des informations vers
exemples
actions le fichier-action ;
Connexions ... suit alors la construction elle-même du for-
au SGBD
liste des bases
mulaire ;
requête simple
requête
<input type=submit> construit le bouton de transfert des infor-
améliorée
mations ;
Interrogation
de notre base
</form> fin du formulaire.
formulaire
action Nous allons apprendre à construire divers formulaires et par la suite
comprendre comment les fichiers-actions peuvent être construits.
Les méthodes pour les formulaires
Conception et
Création de
Bases de
Données la méthode get va transmettre les données au serveur en
L. Mouchard les ajoutant à la fin de l’adresse du fichier-action, après un
Formulaires
?, lorsque les données sont peu nombreuses et assez
principe petites en taille :
forme générale
méthodes
les formulaires
PHP
introduction
exemples
actions
la méthode post va transmettre les données au serveur
Connexions
au SGBD indépendemment de l’adresse du fichier-action, ce lorsque
liste des bases
requête simple le nombre ou la taille des données transmises entre le
requête
améliorée formulaire et le fichier-action est importante ;
Interrogation
de notre base
formulaire
Ces deux méthodes ne sont pas spécifiques à PHP mais sont
action rattachées à la partie CGI (Common Gateway Interface).
Formulaire contenant une entrée texte simple :
<input type=”text”>
Conception et
Création de
Bases de Formulaire avec l’entrée text<br/>
Données <form action="action_input_text.php"
method="get">
L. Mouchard Entrer votre nom :
<input type="text"
name="nom"/>
Formulaires
<br/>
principe
<input type="submit"
forme générale
value="Entrer"/>
méthodes
les formulaires
</form>
PHP
introduction
exemples le nom du fichier-action est action_input_text.php
actions
Conception et
Création de PHP = (Personal Home Page ou) PHP Hypertext
Bases de
Données Preprocessor : langage facilitant la génération de code
L. Mouchard HTML
Formulaires PHP peut aisément :
principe
forme générale
analyser les données transmises depuis un formulaire ;
méthodes
les formulaires
effectuer une requête SQL vers un serveur distant ;
PHP
mettre en forme la page web présentant le résultat de la
introduction requête ;
exemples
actions
PHP est facile à programmer, il dispose d’un grand
Connexions
au SGBD nombre de modules spécifiques additionnels ;
liste des bases
requête simple beaucoup de documentations pour PHP/MySQL sont
requête
améliorée disponibles sur le réseau ;
Interrogation
de notre base PHP fonctionne indifféremment sur PC (Windows et
formulaire
action Linux), Mac (Mac OS X) et stations de travail ;
PHP est gratuit, ces codes sources sont disponibles.
Notre premier programme PHP
Conception et <html>
Création de <head>
Bases de <title>premier exemple de
Données programme PHP</title>
</head>
L. Mouchard <body>
<?php
print("Nous sommes le ",
Formulaires date("d m Y, H:i"));
principe ?>
forme générale </body>
méthodes </html>
les formulaires
PHP
introduction
le nom du fichier doit se terminer par .php ;
exemples
actions
le programme PHP est inséré au milieu du code HTML ;
Connexions le programme PHP est délimité par <?php et ?> ;
au SGBD
liste des bases le caractère ; termine toutes les lignes d’instructions ;
requête simple
requête la commande print va afficher dans cette page HTML
améliorée
Interrogation
l’information passée entre parenthèses, ici
de notre base
formulaire
Nous sommes le " suivi de la commande date, avec un
action format particulier (d : jour, m : mois, Y : année avec 4
chiffres, H : heure sur 24 h et i : minutes).
Notre deuxième programme PHP
Conception et
Création de
Bases de <html>
Données <head>
<title>deuxième exemple de
L. Mouchard programme PHP</title>
</head>
<body>
Formulaires <center>
principe <?php
forme générale $texte = "margaux delabio";
méthodes print(strtoupper($texte));
les formulaires ?>
PHP </center>
</body>
introduction
exemples
</html>
actions
Connexions
au SGBD
ici, la valeur de la variable texte est donnée de façon
liste des bases explicite ;
requête simple
requête
améliorée une fonction, strtoupper transformant toutes les
Interrogation minuscules d’une chaı̂ne de caractères en majuscules, est
de notre base
formulaire utilisée ;
action
Exemple de fichier-action pour l’entrée texte
Conception et
Création de
Bases de
Données
L. Mouchard <html>
<head>
Formulaires <title>Action pour l’entrée texte</title>
principe </head>
forme générale <body>
méthodes <?php
les formulaires $nom = $_GET[’nom’] ;
print("Vous vous appelez : $nom");
PHP ?>
introduction </body>
exemples </html>
actions
Connexions
au SGBD
liste des bases $nom = $_GET[’nom’] permet de récupérer la valeur nom transmise
requête simple
requête
en mode get ;
améliorée
Interrogation
de notre base
formulaire
action
Exemple de fichier-action pour l’entrée radio
Conception et
Création de
Bases de
Données
L. Mouchard <html>
<head>
<title>Action pour l’entrée radio</title>
Formulaires </head>
principe <body>
forme générale <?php
méthodes
$filiere = $_GET[’filiere’] ;
les formulaires
print("Vous avez sélectionné
PHP la filière suivante : $filiere");
introduction ?>
exemples </body>
actions </html>
Connexions
au SGBD
liste des bases
requête simple
$filiere = $_GET[’filiere’] permet de récupérer la valeur
requête
améliorée
filiere transmise en mode get ;
Interrogation
de notre base
formulaire
action
Exemple de fichier-action pour l’entrée checkbox
Conception et
Création de
Bases de <html>
Données <head>
<title>Action pour l’entrée checkbox</title>
L. Mouchard </head>
<body>
Formulaires Liste des cours auxquels vous vous
principe
etes inscrit : <br/>
^
forme générale <table>
méthodes <?php
les formulaires $cours = $_POST[’cours’];
$couleur="#ffffff";
PHP for ($i=0;$i<count($cours);$i++)
introduction {
exemples if ( $couleur == "#ffffff" )
actions $couleur="#dddddd";
else
Connexions
$couleur="#ffffff";
au SGBD
print("<tr bgcolor=\"$couleur\">");
liste des bases
print("<td>$cours[$i]</td></tr>\n");
requête simple
}
requête
améliorée ?>
</table>
Interrogation </body>
de notre base </html>
formulaire
action
Explication de l’action pour l’entrée checkbox
Conception et
Création de
Bases de
Données
Conception et
Création de
Bases de
Données
L. Mouchard
<html>
Formulaires
<head>
principe
<title>Action pour le menu select</title>
forme générale
</head>
méthodes
les formulaires
<body>
<?php
PHP $couleur = $_GET[’couleur’] ;
introduction print("Votre couleur sélectionnée est : ");
exemples print("$couleur\n");
actions ?>
</body>
Connexions </html>
au SGBD
liste des bases
requête simple
requête
améliorée
Interrogation
de notre base
formulaire
action
Interrogation du Système de Gestion de Bases de
Données : la liste des bases de données
Conception et
Création de <html>
Bases de <head>
Données <title>Liste des bases gérées</title>
</head>
L. Mouchard <body>
Liste des bases gérées :
Formulaires <ol>
<?php
principe
# Requ^
ete de connexion à l’hote
forme générale
méthodes
$connexion=mysql_connect("localhost","lm","FM5");
les formulaires
# Déterminer la liste des bases
PHP $resultat=mysql_list_dbs($connexion);
introduction
exemples # Combien y-a-t-il de bases ?
actions $nbre_bases=mysql_num_rows($resultat);
Connexions # Affichage des bases (une par une)
au SGBD for($i=1;$i<=$nbre_bases;$i++) {
liste des bases $ligne=mysql_fetch_array($resultat);
requête simple print("<li>$ligne[0]</li>\n"); }
requête
améliorée # Terminer la connexion
mysql_close($connexion);
Interrogation ?>
de notre base </ol>
formulaire </body>
action </html>
Explication du code PHP
Conception et → $connexion=mysql_connect("localhost","lm","FM5");
Création de ouverture de la connexion, dans l’ordre, doivent être indiqués le nom du SGBD, le nom
Bases de de connexion, le mot de passe
Données
L. Mouchard → $resultat=mysql_list_dbs($connexion);
$resultat va recevoir la liste des bases de données, il y aura dans $resultat autant
Formulaires de lignes que de bases de données gérées par le SGBD
principe
forme générale → $nbre_bases=mysql_num_rows($resultat);
méthodes $nbre_bases va recevoir le nombre de lignes dans $resultat, c’est à dire le nombre de
les formulaires
bases de données gérées par le SGBD
PHP
introduction → for($i=1;$i<=$nbre_bases;$i++) {
exemples
actions
boucle de traitement : nous allons exécuter les commandes suivantes autant de fois
qu’il y a des bases de données
Connexions
au SGBD
liste des bases
→ $ligne=mysql_fetch_array($resultat);
requête simple intérieur de boucle : récupération de la prochaine ligne de resultat
requête
améliorée
→ print("<li>$ligne[0]</li>\n"); }
Interrogation intérieur de boucle : affichage dans <li> de la ligne récupérée de resultat
de notre base
formulaire
action
→ mysql_close($connexion);
fermeture de la connexion
Première requête MySQL : récupération des noms
d’étudiants
Conception et
Création de
Bases de <?php
Données # Établir la connexion, sélectionner la base
$connexion=mysql_connect("localhost","lm","FM5");
L. Mouchard mysql_select_db("baselaurent");
PHP → $nbre_lignes=mysql_num_rows($resultat);
introduction
exemples
$nbre_lignes va recevoir le nombre de lignes dans $resultat (au max. 5)
actions
Connexions → for($i=1;$i<=$nbre_lignes;$i++) {
au SGBD boucle de traitement
liste des bases
requête simple
requête → $ligne=mysql_fetch_array($resultat);
améliorée
intérieur de la boucle : récupération de la prochaine ligne de resultat
Interrogation
de notre base
→ print("$ligne->etu_nom<br/>\n"); }
formulaire
action intérieur de la boucle : affichage du champs etu_nom de ligne puis
passage à la ligne
Deuxième requête MySQL : récupération des noms
d’étudiants avec mise en forme
Conception et
Création de <?php
Bases de $connexion=mysql_connect("localhost","lm","FM5");
Données mysql_select_db("baselaurent");
L. Mouchard
$requete="SELECT etu_nom FROM etudiant ".
"ORDER BY etu_nom LIMIT 5;" ;
Formulaires
principe $resultat=mysql_query($requete);
forme générale
méthodes $nbre_lignes=mysql_num_rows($resultat);
les formulaires
$couleur="#ffffff";
PHP
introduction for($i=1;$i<=$nbre_lignes;$i++) {
exemples
actions
if ( $couleur == "#ffffff" )
Connexions $couleur="#dddddd";
au SGBD else
liste des bases $couleur="#ffffff";
requête simple
requête $ligne=mysql_fetch_object($resultat);
améliorée print("<tr bgcolor=\"$couleur\">");
print("<td> $ligne->etu_nom </td></tr>\n"); }
Interrogation
de notre base
mysql_close($connexion);
formulaire
?>
action
Formulaire pour l’interrogation de notre base
Conception et
Création de
Bases de
Données
L. Mouchard <html>
<head>
Formulaires <title>
Interrogation de la base de données
principe
</title>
forme générale
méthodes
</head>
les formulaires
<body>
PHP <h1>Interrogation de la base de données</h1>
introduction <form action="connexion5.php" method="get">
exemples Entrer le code filière :
actions <input type="text" name="code_filiere"/>
<br/>
Connexions <input type="submit" value="Entrer"/>
au SGBD </form>
liste des bases </body>
requête simple </html>
requête
améliorée
Interrogation
de notre base
formulaire
action
Action pour l’interrogation de notre base
Conception et
Création de <?php
Bases de $fil_code =$_GET[’code_filiere’];
Données
print("<h1 align=center> Étudiants inscrits
L. Mouchard
dans la filière");
print(" $fil_code </h1><hr width=’50%’>");
Formulaires
principe # Etablir la connexion
forme générale $connexion=mysql_connect("localhost","lm","FM5");
méthodes
les formulaires # Sélection de la base adéquate
mysql_select_db("baselaurent");
PHP
introduction $requete="SELECT etu_nom,etu_prenom ".
exemples
"FROM etudiant,filiere ".
actions
"WHERE etu_fil_id=fil_id ".
Connexions "AND fil_code=\"$fil_code\" ".
au SGBD "ORDER BY etu_nom ;" ;
liste des bases $resultat = mysql_query($requete) ;
requête simple
requête # Combien y-a-t-il de lignes ?
améliorée $nbre_lignes = mysql_num_rows($resultat);
Interrogation
print("<center><table border=1>");
de notre base
print("<tr><td>Nom</td><td>Prénom</td></tr>");
formulaire
$couleur="#ffffff";
action
Action pour l’interrogation de notre base
Conception et
Création de
Bases de
Données for($i=1;$i<=$nbre_lignes;$i++) {