Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

cour.sti2K25

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 83

MINISTERE DE L’EDUCATION

DELEGATION REGIONALE DE SOUSSE


LYCEE Ibn Sina M’SAKEN

Manuel de cours

Modules du cours :
➢ Partie 1 : Acquérir des concepts
Systèmes &
technologies de
fondamentaux de base de
données pour gérer les
données.

l’informatique
➢ Partie 2 : Exploiter des
techniques de développement
pour créer et publier un site
web dynamique.
4ème Sciences de l’informatique

Mr H’mida Mohamed
Classe : 4ème sI 1
Nom et prénom : ……………………

A.S : 2023/2024
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Partie 1 :
Acquérir des concepts

fondamentaux de base de données

pour gérer les données.

❖ Reconnaître les notions fondamentales d’une base de données (BD).


o Définir une BD.
o Reconnaître l’utilité d’une BD.
o Définir un Système de Gestion d’une Base de Données.
o Identifier les fonctionnalités d’un SGBD.

❖ Identifier les concepts fondamentaux d’une BD relationnelles (BDR).


o Découvrir la structure d’une BDR : table, relation, enregistrement, champ.
o Définir les contraintes d'intégrité sur les BDR.
o Evaluer une représentation d’une BD.
o Corriger un schéma relationnel d’une BD afin de répondre aux contraintes d’intégrités
définies sur la BD.

❖ Manipuler la structure d’une base de données relationnelle en mode SQL.


o Utiliser des requêtes pour créer une BD/des tables.
o Utiliser des requêtes pour modifier la structure d’une table.
o Utiliser des requêtes pour supprimer des tables/colonnes/ contraintes.

❖ Manipuler des données d’une base de données relationnelle en mode SQL.


o Utiliser des requêtes pour insérer des données.
o Utiliser des requêtes pour supprimer des lignes.
o Utiliser des requêtes pour mettre à jour des colonnes.

❖ Interroger une base de données relationnelle en mode SQL.


o Exploiter des requêtes mono-table.
o Exploiter des requêtes avec jointures.
o Exploiter des requêtes imbriquées.

2
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Module 1 :
Les notions fondamentales d’une base de données
1. Qu’est-ce qu’une base de données ?
Vidéo 1 : https://www.youtube.com/watch?v=UHuNz-LaOMQ

Une base de données est un ensemble de données stockées


de manière structurée, organisée et avec le moins de
redondance possible.

2. Pourquoi utilise-t-on les bases de données ?

✓ Assurer la qualité des données (structurées, bien


organisées).

✓ Exploitation des données (simplement, efficacement).

3. Qu’est-ce qu’un Système de Gestion Base de Données (SGBD) ?


Vidéo 2 : https://www.youtube.com/watch?v=x9YEqZgRqK8

Un SGBD est un logiciel système qui permet de (Créer, gérer,


stocker et manipuler) nos données dans un support de
stockage.

4. Quelles sont les fonctionnalités d’un Système de Gestion Base de


Données (SGBD) ?
Vidéo 3 : https://www.youtube.com/watch?v=ig3mLq0AhUg
Vidéo 4 : https://www.youtube.com/watch?v=0Ftx5WqcIVk
Vidéo 5 : https://www.youtube.com/watch?v=Gd9pCC1pr7M

3
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Un SGBD doit assurer les fonctionnalités suivantes :


✓ Définition des données : cette fonctionnalité est
assurée par le LDD (Langage de Définition de Données)
qui vise davantage la structure de la base de données
(créer, modifier ou supprimer) la BD, la table ou la
colonne.

✓ Manipulation des données : cette fonctionnalité est


assurée par le LMD (Langage de Manipulation de
Données) qui vise davantage les données de la base
(ajouter, consulter, modifier ou supprimer) des
données.

✓ Intégrité des données : cette fonctionnalité contrôle


les valeurs saisies dans la base de données à l’aide des
contraintes d’intégrités pour être fiable.
✓ Gestion des concurrences d’accès : cette
fonctionnalité assure l’accès multiple en même temps
en consultation et le verrouillage en modification.

✓ Confidentialité : cette fonctionnalité contrôle l’accès à


la base de données à l’aide des mots de passe et les
privilèges d’accès.
✓ Sécurité de fonctionnement : cette fonctionnalité
assure la remise en fonction de la base après une
panne matérielle ou logicielle.

4
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Module 2 :
Les concepts fondamentaux d’une BD relationnelles
(BDR)
1. Qu’est-ce qu’une Base de Données Relationnelle (BDR) :

Une base de données relationnelle est un type de base de


données où les données sont liées à d'autres informations au sein
des bases de données. Les bases de données relationnelles sont
composées d’un ensemble de tables qui peuvent être accessibles et
reconstruites de différentes manières.

2. Structure d’une Base de Données Relationnelle :

Le principe de base de données relationnelle permet de mettre en


avant les relations entre les données. Ces données sont organisées
en table dans des lignes (enregistrements) et colonnes (attributs)
afin d’être accessibles.

5
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

table : une table est un ensemble de données relatives à un même


sujet (entité ou relation) et structurée sous forme d’un tableau.

enregistrement : un enregistrement (dit aussi ligne ou n-uplet) est


une occurrence du sujet représenté par la table. On dit aussi que
c’est un objet du monde réel.

6
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Colonne : une colonne (dite aussi champ ou attribut) correspond à une


propriété élémentaires de l’objet décrit par cette table.
Une colonne est caractérisée par :
✓ Nom : même principe que le nom des variables au
programmation.
✓ Type : soit numérique, chaine, date, booléen, …
✓ Taille : la longueur maximale que peut prendre la colonne.
✓ Indicateur de présence obligatoire : indique si la colonne doit
contenir une valeur ou elle peut être vide (nulle).
✓ Valeur par défaut : permet d’attribuer une valeur par défaut
lorsque aucune valeur n’a été mentionnée.
✓ Valeurs autorisées : dans certain cas les valeurs d’une colonne
sont soumises à certaine régles ( >, <,  [ ], dans { }, …).

7
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Lien : Un lien entre les tables peut être définie à l'aide de clés
étrangères. Une clé étrangère est un champ d'une table (fille)
qui est lié à la clé primaire d'une autre table (mère). Dans
certain cas pour assurer une liaison entre deux tables, nous
somme obligés de créer une table intermédiaire.

3. Les contraintes d'intégrité sur les BDR :

Les contraintes d'intégrité relationnelle se réfèrent


aux conditions qui doivent être présentes pour qu'une
relation soit valide. Il existe de nombreux types de
contraintes d'intégrité. Les contraintes sur le système de
gestion de base de données relationnelles sont
principalement divisées en trois catégories principales :
contrainte de table, contrainte de domaine et
contrainte d'intégrité référentielle.

Remarque : une Base de données ne doit pas contenir :

✓ Des champs calculés : des champs dont leurs valeurs


sont des résultats d’une opération de calcul (exemple :
moyenne générale, montant d’une facture, …).
✓ Des champs composés : des champs qui contiennet des
valeurs qui peuvent être décomposés en valeurs
élémentaires (exemple : nom et prénom, …).

Contrainte de table : indiquent qu'une table doit toujours avoir une


clé primaire. La valeur de l'attribut pour les différents enregistrements
de la table doit être unique.

Contrainte de domaine : limite la plage des valeurs de domaine d'un


attribut. Elle spécifie également l'individualité et si un attribut peut
avoir une valeur nulle. Elle peut également spécifier une valeur par
défaut pour un attribut lorsque aucune valeur n'est fournie.

8
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Contrainte d'intégrité référentielle : indique que les


relations entre les tables doivent toujours être cohérentes. En
d'autres termes, la valeur de clé étrangère doit correspondre à
la clé primaire référencée par la clé étrangère. Tout
changement de champ de clé primaire doit être appliqué à
toutes les clés étrangères, ou toute suppression
d’enregistrement de la table mère entraine une suppression
des enregistrements correspondants dans la table fille.

4. Représentation d’une BDR :

La représentation de la structure d’une BDR est appelée modèle ou


schéma de la base de données, qui peut être représentée selon deux
formalismes qui sont équivalents :

9
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

La représentation graphique : dans cette représentation on trouve


pour chaque table les différents attributs l’un au dessous de l’autre
dont la clé primaire est souligné. La liaison entre deux tables se
présente sous forme de ligne qui relie la clé primaire de la table mère
(côte de 1) et la clé étrangère de la table fille (côté de  )

Categories (IdCategorie, LibCategorie)


Produits (idProduit, CodeProduit, Designation, QteStock, QteMin, PrixUnitaire,
IdUnite#, IdCategorie#)
Unites (idUnite, LibUnite)

La représentation textuelle : dans cette représentation on trouve


pour chaque table les différents attributs dont la clé primaire est
souligné. La liaison entre deux tables se présente par le signe (#) de
côte de la clé étrangère.

5. Evaluer et Corriger un schéma relationnel d’une BD afin de répondre


aux contraintes d’intégrités définies sur la BD :

Pour chacune des activités ci-dessous déceler les


anomalies présentes dans les représentations des
bases de données, indiquer la contrainte d’intégité
violée et proposer une correction repondant à cette
contrainte.

10
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Activité 1 : Soit la représentation textuelle ci-dessous de la base de données « location


de voiture » :
Client (CIN, Nom, prénom, Tel)
Véhicule (Imat, Marque, Model, couleur, Prix_jour)
Location (CIN, Imat, DateL, DateR, Montant_Location )
 Compléter le tableau ci-dessous :

Anomalie Contrainte violée Correction

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

 Réécrire la représentation textuelle de la BD après correction :


………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

11
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Activité 2 : Soit la représentation graphique de la base de données « scolarité » :

Personnes Affiliation Organisme


Code_Per  Code_org
Code_Per
Nom 1 Nom
Code_org
Prénom Adresse
Fonction
Tél Fax

Courriel

 Compléter le tableau ci-dessous :

Anomalie Contrainte violée Correction

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

 Réécrire la représentation graphique de la BD après correction :

12
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Activité 3 : un jeune étudiant qui fait son stage dans une bibliothèque municipale, il
est demandé de classer les livres d’une façon automatique. Il a créé une base de données
qui contient cette table :

 En examinant cette table que remarquez-vous ?


………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

 Que proposez-vous pour corriger les anomalies trouvées ?


………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

Représenté votre solution selon les 2 formalismes (graphique & textuelle).

13
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Activité 4 : Soit la représentation graphique de la base de données « scolarité ».


 Donner la représentation textuelle correspondante :
C

Matière Epreuve Notes Candidat


1 CodeCandidat  1 CodeCandidat
CodeMatière CodeEpreuve 1
Intitulé  CodeEpreuve Nom
DateEpreuve
Coefficient Note Prénom
 CodeMatière Adresse
Tél
A

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

………………………………………..………………………………………..…………………………………………………..

 Compléter le tableau ci-dessous :

Liaison Table mère Table fille Clé primaire Clé étrangère

Activité 5 : Soit la représentation textuelle de la base de données « Commercial ».


COMMANDE (numCommande, dateCommande, numClient#)
LIGNECOMMANDE (numCommande#, numProduit#, quantite)
PRODUIT (numProduit, designation, prix)
CLIENT (numClient, nomClient, prenomClient, adresse, telephone, codeCategorie#)
CATEGORIE (codeCategorie, libelleCategorie, remise)
Répondre aux questions ci-dessous :

14
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

 Dans cette BD, Combien a-t-on de relation entre les différentes tables ? ……………..
 Pour chaque relation, indiquer la table mère, la table fille, la clé primaire et la clé
étrangère :
……………………………………………………………………………………………………………………………………..

……………………………………………………………………………………………………………………………………..

……………………………………………………………………………………………………………………………………..

……………………………………………………………………………………………………………………………………..

……………………………………………………………………………………………………………………………………..

 Dans le contexte de base de données, barrer les fausses propositions :


o Le prix d’un produit doit être supérieur à 20 DT. C’est une contrainte de (Table,
domaine, référentielle).
o La remise ne doit pas dépassée 30%. C’est une contrainte de (Table, domaine,
référentielle).
o La colonne numClient de la table COMMANDE se réfère à la table CLIENT. C’est
une contrainte de (Table, domaine, référentielle).
o La colonne codeCatégorie de la table CATEGORIE doit avoir des valeurs uniques.
C’est une contrainte de (Table, domaine, référentielle).
o La valeur de la colonne numProduit de la table LIGNECOMMANDE doit être
unique (Oui / Non).
o La table LIGNECOMMANDE a deux clés primaires (Oui / Non).
o La table LIGNECOMMANDE a deux clés étrangères (Oui / Non).
 Donner la représentation graphique de la BD « commercial » définie ci-dessus :

15
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Activité 6 : On souhaite créer une base de données pour gérer les activités d’une
entreprise. Une première étude a mis en évidence trois tables. Pour chacune des tables,
la clé primaire est soulignée.
EMPLOYE (NumEmp, Nom, Prénom, Adresse, Téléphone, Qualification)
SERVICE (NomService, Résponsable, Téléphone)
PROJET (NomProjet, DateDeb, DateFin, NumEmp#)
En considérant les possibilités offertes par ce schéma, répondre aux questions suivantes
en justifiant vos réponses par rapport à la sémantique intuitive des relations :
1) Un employé peut-il avoir plusieurs qualifications ? (Oui / Non).
………………………………………………………………………………………………………
………………………………………………………………………………………………………
2) Un employé peut-il faire plusieurs projets en même temps ? (Oui / Non).
………………………………………………………………………………………………………
………………………………………………………………………………………………………
3) Une personne peut-elle être responsable de plusieurs services ? (Oui / Non).
………………………………………………………………………………………………………
………………………………………………………………………………………………………
4) Un service peut-il avoir plusieurs responsables ? (Oui / Non).
………………………………………………………………………………………………………
………………………………………………………………………………………………………
Activité 7 : soit la base de données « Gestion de location » représentées par les tables
ci-dessous ainsi que les valeurs saisies dans ces différentes tables.

Table voiture
immatriculation marque model couleur kilométrage Prix
9812 TU 125 Renault kadjar Noir 12 000 100 DT
5487 TU 200 Citroën C5 air cross Bleu 9 000 -105 DT
1593 TU 220 Peugeot 3008 Blanc 53 000 110 DT
1111 TU 234 Geely CoolRay blanc -10 000 150 DT

Table location Table client


immatriculation CIN Date Date retour CIN nom prénom adresse téléphone
location 11111111 Chatti Ahmed Msaken 12345678
9812 TU 125 22222222 20/08/2021 25/05/2021 22222222 Chatti Olfa Sousse 87654321
5487 TU 200 55555555 10/04/2021 12/04/2021 33333333 Bouhlel Ines Msaken 14725836
5487 TU 200 11111111 05/05/2021 01/05/2021 44444444 Soussi Ahmed Sousse 96385274
1593 TU 220 44444444 31/06/2021 10/07/2021 11111111 Gharbi Sami Sfax 13579986
9812 TU 125 22222222 31/06/2021 10/07/2021

16
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

 Pour chaque table de la base, proposer la (les) colonne(s) qui forme(ent) la clé primaire.
Table Voiture …………………………………………………………………………………………………………….
Table Client  ………………………………………………………………………………………………………………
Table Location ……………………………………………………………………………………………………………
 En se référant sur les valeurs des différentes tables, détecter les anomalies, les
contraintes d’intégrités non respecter et donner une contrainte pour corriger cette
anomalie.

Anomalie Contrainte violée Correction

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

……………………………………….. ……………………………………….. ………………………………………..

Activité 8 : soit la représentation textuelle d’une base de données « Emprunt » qui gère
les emprunts des livres d’une bibliothèque d’une faculté.
Etudiant (NumEtd, NomEtd, PrenomEdt, AdresseEtd)
Livre (NumLivre, TitreLivre, NumAuteur, NumEditeur, NumTheme, AnneeEdition)
Auteur (NumAuteur, NomAuteur, AdresseAuteur)
Editeur (NumEditeur, NomEditeur, AdresseEditeur)
Thème (NumTheme, IntituléTheme)
Prêt (NumEtd, NumLivre, DatePret, DateRetour)

17
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

 Qu’est ce qui manque dans cette représentation ?

 ............................................................................................................................. .............................

 Quelle est la contrainte touchée ?

 ................................................................................................................................... .......................

 Dans le tableau ci-dessous indiquer les tables et les champs consernées

Table

Colonne
 Un étudiant peut-il emprunter le même livre plusieurs fois ? (Oui / Non).

Justification  ............................................................................................................................. .....


Si la réponse est non, que proposez-vous pour répondre à cette contrainte ?

 ..........................................................................................................................................................

 réécrire la représentation textuelle de la base après les corrections apporter dans les
questions  et .
............................................................................................................................. .............................

..........................................................................................................................................................

............................................................................................................................. .............................

..........................................................................................................................................................

..........................................................................................................................................................

............................................................................................................................. .............................

..........................................................................................................................................................

 Un livre peut-il appartenir à plusieurs thèmes ? (Oui / Non).

Justification  ........................................................................................................... .......................


Si la réponse est non, quelle proposition choisir pour répondre à cette contrainte ? (1/2)
Proposition 1 Proposition 2
Ajouter la colonne NumTheme de la table Créer une table intermediaire qui contient
livre à la clé primaire le colonnes NumLivre et NumTheme

Livre (NumLivre, NumTheme#, Thématique (NumLivre#, NumTheme#)


TitreLivre, NumAuteur#, NumEditeur#,
AnneeEdition)

Justification  ............................................................................................................................. .....


.......................................................................................................................... .....................................

18
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Activité 9 : soit la représentation textuelle d’une BD « Réservation_séjour » qui gère


les réservations des chambres d’hôtel.
Client (Numéro, nom, prénom)
Hôtel (Nom, Adresse)
Chambre (Numéro, prix, nomhotel)
Réservation (Numéro, Date, numclient, nomhotel, numchambre)
 Préciser pour chaque table la clé primaire.

Table

Clé primaire

 Déceler les liens entre les différentes tables, en remplissant le tableau ci-dessous :
Table mère Table fille Clé primaire Clé étrangère

 Représenter la base de données après avoir répondu aux question  et  :


............................................................................................................................. .................................

...............................................................................................................................................................

.................................................................................................................... ..........................................

............................................................................................................................. ..................................

 A partir de la représentation de la base, répondre aux questions ci-dessous, en


justifiant vos réponses :
 Est-il possible d’avoir des clients homonymes (même nom et prénom) ? (oui/non)
..............................................................................................................................................................

............................................................................................... ................................................................

 Un client peut-il réserver plusieurs chambres à une date donnée ? (oui/non)


.............................................................................................................. ................................................

............................................................................................................................................. ..................

 Est-il possible de réserver une chambre sur plusieurs jours ? (oui/non)


..............................................................................................................................................................

...............................................................................................................................................................

19
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Module 3 :
Manipuler la structure d’une base de données
relationnelle en mode SQL
1. Introduction :
Vidéo 1 (introduction au SQL) : https://www.youtube.com/watch?v=CyyoFvveSkw

Le mode commande consiste à créer les différentes structures de la


base de données à l’aide des commandes du langage SQL. Ce langage
est composé de trois familles de commandes :

………………………………………………………………………………… :
commandes de création, modification et suppression des
différentes structures de la BD.
……………………………………………………………………………….. :
commandes de manipulation de contenu de la BD (modifier,
consulter ou de supprimer des lignes dans les tables de la BD).
……………………………………………………………………………….. :
commandes de contrôle de l’utilisation de la BD (sécurité de la
base, intégrité des données, cohérences des données).

2. Les requêtes pour créer une BD/des tables :


2.1. Requête de création de base de données :

La création d’une base de données en SQL est possible en ligne de


commande. Même si les (SGBD) sont souvent utilisés pour créer
une base, il convient de connaître la commande à utiliser, qui est
très simple.

…………………………………………………………………

2.2. Requête de création de table :

CREATE TABLE nom_table


( Nom_colonne_1 type contrainte,
Nom_colonne_2 type contrainte,
…………………… ……. …………….,
Nom_colonne_n type contrainte ) ;

20
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

……………………………………… : indique le nom de la colonne (même principe que la


nomination des variables).
……………………………………… : indique le type de la colonne qui peut être :
……………………………… : Numérique à n chiffres.
……………………………… : Numérique à n chiffres dont m décimales.
………………………………. : Chaîne de caractères de longueur variable dont la
taille maximale est n.
………………………………. : Date et/ou heure.
………………………………………. : qui indique les conditions (règles) à respecter.
 Les contraintes qui concernent une seule colonne, elle peut être à côté de la colonne :
Contrainte de table :
…………………………… : indique la clé primaire de la table.
Contrainte de domaine :
…………………………… : la colonne n’est pas obligatoire, elle peut être vide.
…………………………… : la colonne est obligatoire, elle doit contenir une valeur.
Cette option est implicite pour une clé primaire.
…………………………… : permet de donner une valeur par défaut si la colonne
est laissée vide, cette option n’est pas indiquée lorsque la colonne est obligatoire (NOT
NULL).
…………………………… : est un mot clé associé à une condition qui doit être
vérifiée pour chaque valeur insérée.
Contrainte d’intégrité référentielle :
………………………………………………………………………………………………………
…………………………………………………… : indique la liaison avec la table mère.
 Les contraintes qui concernent plusieurs colonnes, elle peut être à la fin de la requête
CREATE TABLE :
[CONSTRAINT Nom_contrainte]
PRIMARY KEY (colonne1, colonne2, ...)
| FOREIGN KEY (colonne1, colonne2, ...) REFERENCES nom_table [(colonne1,
colonne2, ...)] [ON DELETE CASCADE] [ON UPDATE CASCADE]
| CHECK (condition)}
………………………….. : est optionnel et sert à attribuer un nom à la contrainte.
………………………….. : spécifie que les colonnes sont utilisées comme clé primaire.

21
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

………………………….. : définit une contrainte d’intégrité référentielle relative à plusieurs


colonnes. Les noms des colonnes sont ceux des colonnes vers lesquelles on se réfère.
………………………….. : est un mot clé associé à une condition qui doit être vérifiée pour
chaque valeur insérée. Elle peut concerner ici plus qu’une colonne.
Activité 1 : Soit la représentation textuelle de la base de données « Commercial » avec
la description des colonnes ainsi que les contraintes.
CATEGORIE (CodeCat, libCat, remise)
PRODUIT (numPr, desPr, prix)
CLIENT (numClt, nomClt, prenClt, adrClt, telClt, CodeCat#)
COMMANDE (numCo, dateCo, numClt#)
LIGNECOMMANDE (numCo#, numPr#, qtite)
Valeur
Nom de Valeur
Description Type Obligatoire par
colonne autorisée
défaut
CodeCat Code catégorie Chaine de 5 Oui
LibCat Libelle catégorie 35 chiffres Oui
Remise Remise accordée 2 chiffres Non 0
numClt Numéro client Chaine de 10 Oui
nomClt Nom client Chaine de 25 Oui
prenClt Prénom client Chaine de 25 Oui
adrClt Adresse client Chaine de 5O Non
telClt Téléphone client Chaine de 8 Oui
numCo Numéro commande Chaine de 20 Oui
dateCo Date commande Chaine de 10 Oui
numPr Numéro produit 5 chiffres Oui
desPr Désignation produit Chaine de 5 Oui
prix Prix produit 10 chiffres 3 décimaux Non 1 >0
qtite Quantité commandée 5 chiffres Non 1 1
Contraintes :

• Toute suppression d’une commande entraine la suppression automatique des


lignes commandes.
• Toute modification d’une clé primaire entraine la même modification des clés
étrangères correspondantes.
Donner les requêtes SQL qui permettent de réaliser les opérations ci-dessous :
 Créer la base de données « Commercial_Nom »
………………………………………………………………………………………………………………

22
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

 Créer les tables CATEGORIE et PRODUIT

……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
 Créer la table CLIENT
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
…………………………………………………….…………………………………………………….
 Créer les tables COMMANDE et LIGNECOMMANDE

……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
3. Les requêtes pour modifier la structure d’une table.
Après avoir créé une table, on peut modifier sa structure suite à une erreur ou
omission :

ALTER TABLE nom_table


[ADD COLUMN (définition_colonne)]
[ADD CONSTRAINT définition_contrainte]
[MODIFY définition_colonne]
[CHANGE ancien_nom_colonne nouveau_nom_colonne
type_donnees]

23
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

…………………………… : Pour ajouter une nouvelle colonne dans une table existante.
…………………………… : Pour ajouter une contrainte d’intégrité à une colonne existante.
……………… : Pour modifier une ou plusieurs caractéristique(s) d’une colonne existante.
…………………………… : Pour renommer (changer le nom) une colonne.
Activité 2 : Donner les requêtes SQL pour répondre aux traitements demandés.
 Changer la clé primaire de la table LIGNECOMMANDE pour être (numCo et numPr).

……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….
……………………………………………………. …………………………………………………….

 Changer le nom de la colonne prix de la table PRODUIT par PU en gardant les mêmes
propriétés.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Changer la propriété de la colonne AdrClt de la table CLIENT pour que la saisie d’une
valeur est obligatoire (la colonne ne doit pas laissée vide).
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Changer la propriété de la colonne telClt de la table CLIENT pour les clients qui n’ont
pas de téléphone et les valeurs doivent être entières ayant la même longueur.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Change le type de la colonne dateCo de la table COMMANDE pour être de type
cohérent.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Changer le type de la colonne remise de la table CATEGORIE pour être de la forme
00.00
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….

24
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

 Changer la taille de la colonne desPr de la table PRODUIT pour qu’elle soit 50.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….

 Changer le type de la colonne LibCat de la table CATEGORIE pour qu’elle soit de


type chaine de même taille.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Ajouter une colonne selon les caractéristiques suivantes :

Nom colonne Nom Table Type Obligatoire Valeur par défaut


CouleurP PRODUIT Chaine 20 Oui Blanc
Tel2 CLIENT 8 chiffres Non
 Ajouter les contraintes suivantes :

Nom colonne Nom contrainte Table Valeur autorisée


CouleurP CD1 PRODUIT Blanc, Rouge, Bleu, Noir
Remise CD2 CATEGORIE Entre 10 et 50

4. Les requêtes pour supprimer des tables/colonnes/ contraintes.


4.1. Suppression de colonne :

ALTER TABLE nom_table


[DROP COLUMN nom_colonne ]

Activité 3 : Donner le commande SQL pour supprimer la colonne tel2 de la table


CLIENT.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
4.2. Suppression/Activation/Désactivation de contrainte :

ALTER TABLE nom_table


[DROP CONSTRAINT nom_contrainte]
[ENABLE nom_contrainte]
[DISABLE nom_contrainte]

25
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

…………………………………… : Pour supprimer une contrainte d’intégrité.


…………………………………… : Pour activer une contrainte d’intégrité.
…………………………………… : pour désactiver une contrainte d’intégrité.
Activité 4 : Donner le commande SQL pour
 Supprimer la contrainte CD1 de la table PRODUIT.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Désactiver la contrainte CD2 de la table CATEGORIE.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Activer la contrainte CD2 de la table CATEGORIE.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
4.3. Suppression de table :

DROP TABLE nom_table

……………………………… : Pour supprimer une table existante de la base de données.


Activité 5 : Donner le commande SQL pour supprimer la table LIGNECOMMANDE de
la base.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
Exercice d’application :
Soit la représentation textuelle d’une BD « Réservation_Nom » qui gère les réservations
des chambres d’hôtel ainsi que le tableau de description des colonnes.
Client (CIN, NomCl, PréCl, TelCl)
Hotel (CodeH, NomH, AdrH, TelH)
Chambre (NumCh, prix, CodeH, Conf)
Reservation (CIN, NumCh, DateEnt, DateSor, MontRes)

Nom Valeur par


Description Type Obligatoire
Colonne défaut
CIN CIN client Numérique 8 Oui
NomCl Nom client Chaine 25 Oui
PréCl Prénom client Chaine 5 Non
TelCl Téléphone client Chaine 8 Non

26
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

CodeH Code hôtel Chaine 10 Oui


NomH Nom hôtel Chaine 30 Oui
AdrH Adresse hôtel Chaine 50 Oui
TelH Téléphone hôtel Numérique 8 Oui
NumCh Numéro chambre Numérique 3 Oui
Prix Prix chambre/nuit Numérique 7 Oui
Conf Confort chambre Chaine 10 Non
DateEnt Date d’entrée Date Oui
DateSor Date de sortie Chaine 10 Non
MontRes Montant réservation Numérique 7 Non

Donner les commandes SQL qui permettent de :


 Créer la base de données.
……………………………………………………………………………………………………………….
 Créer les différentes tables (client, hôtel, chambre, réservation).
Client Hôtel

Chambre Réservation

27
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

 Donner les requêtes SQL permettant de :


➢ Changer le nom et le type de la colonne prix par PrCh de type numérique (7,3) :
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
➢ Supprimer la colonne MontRes :
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
➢ Changer les caractéristiques de la colonne PréCl taille 25 et obligatoire :
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
➢ Changer le type de la colonne DateSor pour être Date :
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Donner les requêtes SQL pour ajouter les contraintes ci-dessous :
Nom de Description
contrainte
Clé primaire de la table Client

PK1

Clé primaire de la table hôtel

PK2

Clé primaire de la table chambre

PK3

Clé primaire de la table réservation

PK4

Clé étrangère dans la table chambre de liaison avec la table hôtel

FK1

28
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Clé étrangère dans la table réservation de liaison avec la table Client

FK2

Clé étrangère dans la table réservation de liaison avec la table Chambre

FK3

Le confort doit être l’une des valeurs (TV, Douche, piscine)

CD1

La date de sortie est strictement supérieure à la date d’entrée

CD2

29
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Module 4 :
Manipuler des données d’une base de données
relationnelle en mode SQL
1. Introduction :
Après avoir finalisé la structure d’une base de données, on passe à la manipulation des
données des différentes tables (insertion, modification et suppression des données).

2. Insertion de données :
2.1. Définition :

L’insertion de données dans une table s’effectue à l’aide de la


commande INSERT INTO. Cette commande permet au choix d’inclure
une seule ligne à la base existante ou plusieurs lignes d’un coup.

2.2. Syntaxe :

(Insertion avec nom de colonne)


INSERT INTO table (nom_colonne_1, nom_colonne_2, ...)
VALUES (valeur 1, valeur 2, ...) ;
Ou bien (insertion sans nom de colonne)
INSERT INTO table
VALUES (valeur 1, valeur 2, ...) ;
Ou bien (insertion plusieurs valeurs en même temps)
INSERT INTO table (nom_colonne_1, nom_colonne_2, ...)
VALUES (valeur 1, valeur 2, ...),
(valeur 1, valeur 2, ...),
(valeur 1, valeur 2, ...) ;
Exemple 1 : (insertion avec nom de colonne)
INSERT INTO client (prénom, nom, ville, Age)
VALUES ('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24) ;

30
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Exemple 2 : (insertion sans nom de colonne)


INSERT INTO client
VALUES ('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24) ;
Exemple 3 : (insertion plusieurs valeurs en même temps)
INSERT INTO client
VALUES ('Rébecca', 'Armand', 'Saint-Didier-des-Bois', 24),
('Marielle', 'Ribeiro', 'Maillères', 27) ;

3. Modification de données :
3.1. Définition :

La commande UPDATE permet d’effectuer des modifications sur des


lignes existantes. Très souvent cette commande est utilisée avec
WHERE pour spécifier sur quelles lignes doivent porter la ou les
modifications.

3.2. Syntaxe :

(Mise à jour d’une seule colonne)


UPDATE table
SET nom_colonne_1 = 'nouvelle valeur'
WHERE condition ;

Ou bien (mise à jour de plusieurs colonnes)


UPDATE table
SET colonne_1 = 'valeur 1', colonne_2 = 'valeur 2', colonne_3 = 'valeur 3'
WHERE condition ;
Imaginons une table “client” qui présente les coordonnées de clients.

id nom rue ville code_postal pays

1 Chantal 12 Avenue du Petit Trianon Puteaux 92800 France


2 Pierre 18 Rue de l'Allier Ponthion 51300 France
3 Romain 3 Chemin du Chiron Trévérien 35190 France
Exemple 1 : (Modifier une colonne) Exemple 2 : (Modifier plusieurs colonnes)
UPDATE client UPDATE client
SET rue = '49 Rue Ameline' SET rue = '49 Rue Ameline',
WHERE id = 2 ville = 'Saint-Eustache-la-Forêt',
code_postal = '76210'
WHERE id = 2

31
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Exemple 3 : (Modifier toutes les valeurs d’une colonne sans la clause WHERE)
UPDATE client
SET pays = 'BELGIQUE'

id nom rue ville code_postal pays

1 Chantal 12 Avenue du Petit Trianon Puteaux 92800 BELGIQUE

2 Pierre 49 Rue Ameline Saint-Eustache-la-Forêt 76210 BELGIQUE

3 Romain 3 Chemin du Chiron Trévérien 35190 BELGIQUE

4. Suppression de données :
4.1. Définition :

La commande DELETE en SQL permet de supprimer des lignes dans


une table. En utilisant cette commande associée à WHERE il est
possible de sélectionner les lignes concernées qui seront supprimées.

4.2. Syntaxe :

(Suppression d’un enregistrement selon un critère)


DELETE FROM table
WHERE condition ;

Ou bien (Suppression de toutes les données d’une table)


DELETE FROM table

Table “utilisateur” :

id nom prenom date_inscription


1 Bazin Daniel 2012-02-13
2 Favre Constantin 2012-04-03
3 Clerc Guillaume 2012-04-12
4 Ricard Rosemonde 2012-06-24
5 Martin Natalie 2012-07-02
Exemple 1 : (supprimer une ligne)
DELETE FROM utilisateur
WHERE id = 1 ;

32
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Exemple 2 : (supprimer plusieurs lignes vérifiant une condition)


DELETE FROM utilisateur
WHERE date_inscription < '2012-04-10' ;
Exemple 3 : (supprimer tous les enregistrement)
DELETE FROM utilisateur ;
Activité 1 : Soit la représentation textuelle de la base de données « Location » ainsi que
la description des colonnes :
CLIENT (Cin, Nom, Prénom, Tel)
VOITURE (Imat, Marque, Model, Km, Prix)
LOCATION (Cin#, Imat#, DateLoc, DateRet)
Tableau de description :

Nom Description Type Oblig. Défaut Contrainte


Cin Cin du client Numérique 8 Oui MAJ Auto
Nom Nom du client Texte 25 Oui
Prénom Prénom du client Texte 25 Oui
Tel Téléphone du client Numérique 8 Non
MAJ Auto
Imat Immatriculation de voiture Texte 11 Oui
SUP Auto
Marque Marque de voiture Texte 30 Oui
Model Model de voiture Texte 30 Oui
Km Kilométrage de voiture Numérique 6 Oui 0 0
Prix Prix de location Numérique (6,3) Non 50 [50 .. 300]
DateLoc Date de location Date Oui
DateRet Date de retour Date Non > DateLoc

Donner les requêtes SQL permettant de :


 Créer la base de données « Location_NOM ».
 Créer les différentes tables en respectant les contraintes mentionnées.
 Remplir les tables ci-dessous par les valeurs correspondantes en précisant si cette
requête est exécutée ou non, la justification et la contrainte violée :
Table Cin Imat DateLoc DateRet
Description Location 11111111 9999 TU 88 2022-10-27

Commande

Exécution : Justification : Contrainte :

Oui / Non

33
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Table Cin Nom Prénom Tel


Description Client 11111111 Chatti

Commande

Exécution : Justification : Contrainte :

Oui / Non

Table Imat Marque Model Km Prix


Description Voiture 9999 TU 88 Renault Kadjar 10000 350

Commande

Exécution : Justification : Contrainte :

Oui / Non

Table Cin Nom Prénom


11111111 Chatti Mohamed
Description Client
11111111 Bouhlel Ahmed

Commande

Exécution : Justification : Contrainte :

Oui / Non

 Remplir les tables ci-dessous par les valeurs correspondantes


Table client :
Cin Nom Prénom Tel
22222222 Chatti Ahmed 99999999
33333333 Ben Aicha Nour 22222222
44444444 Dali Amir 55555555
55555555 Mayel Fares
Table voiture :
Imat Marque Model Km Prix
1234 TU 230 Renault Kadjar 50000 100
5678 TU 231 Peugeot 308 80000 90
9012 TU 232 Kia Sportage 35000 110
1029 TU 229 Citroën C5 Aircross 45000 105

34
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Table Location :
Cin Imat DateLoc DateRet
55555555 9012 TU 232 2022-03-13 2022-03-19
44444444 1234 TU 230 2022-02-25 2022-03-15
22222222 5678 TU 231 2022-05-07 2022-05-31
11111111 1029 TU 229 2022-09-15 2022-10-01
22222222 1234 TU 230 2022-08-17 2022-09-11
 Ajouter le client suivant en respectant le même ordre proposé :
(Nom : Mayel ; Tel : ; Prénom : Ramzi ; Cin : 66666666)
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
Table Cin Imat DateLoc DateRet
Description Location 11111111 5678 TU 231 2022-10-27 2022-10-27

Commande

Exécution : Justification : Contrainte :

Oui / Non

 Supprimer le client dont le nom est Ramzi.


……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Supprimer la voiture dont l’immatriculation est 1234 TU 230.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
Que remarquez-vous :
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Modifier le model de la voiture 308 par 3008.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Modifier la valeur de Cin du client Chatti Ahmed par la nouvelle valeur 77777777.
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….
 Quelle influence sur la table Location ?
……………………………………………………………………………………………………………….
……………………………………………………………………………………………………………….

35
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Module 5 :
Interroger une base de données relationnelle en
mode SQL
1. Introduction :
Après avoir insérer des données dans la base, on peut à tout moment consulter
(chercher) les données d’une ou de plusieurs tables en utilisant la commande SELECT.
La commande ayant les opérateurs suivants :

• SELECT
• FROM
• WHERE
• GROUP BY
• HAVING
• ORDER BY
2. Les requêtes mono-table :

Une requête mono-table est appliquée sur une seule


table de syntaxe :
SELECT [distinct] */nom_colonne(s) [as aléa]
FROM nom_table
WHERE condition ;

(*) : tous les champs de la table


(Distinct) : élimine les répétitions
(Aléa) : remplace le nom de la colonne par le texte « aléa ».
2.1. La clause WHERE :
Ici, la clause WHERE permet de filtrer certains enregistrements qui correspondent
exactement à une condition spécifiée.
Dans la condition on peut utiliser :
1. Les opérateurs de comparaison : =, >, <, >=, <= et <>.
2. L’opérateur BETWEEN pour les intervalles de valeurs, bornes incluses.
3. L’opérateur IN pour les listes de valeurs.
4. L’opérateur IS NULL et IS NOT NULL pour les valeurs indéterminées.
5. L’opérateur LIKE pour filtrer une chaîne de caractères.
6. Les opérateurs logiques : AND, OR et NOT.

36
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

2.2. La clause ORDER BY :


SELECT [DISTINCT] * / liste_Nom_colonne
FROM nom_table
[WHERE condition]
ORDER BY Nom_colonne1 [ASC / DESC] [, Nom_colonne2 [ASC / DESC] …]

La clause ORDER BY permet de trier le résultat de la requête selon une ou plusieurs


colonnes dans l’ordre croissant (ASC) ou décroissant (DESC).
Les colonnes selon lesquelles ont fait le tri doivent figurés dans la liste des colonnes de
SELECT.
2.3. Les fonctions agrégats :
Certaines requêtes ont besoin de faire un certain nombre de calculs sur les lignes
recherchées. Pour cela, SQL offre certaines fonctions standards de calcul appelées
fonctions Agrégat. Ces fonctions ne peuvent être utilisées qu’avec la commande
SELECT et en dehors de la clause WHERE.
Les fonctions de calcul offertes par SQL sont les suivantes :
o La fonction COUNT qui sert à compter le nombre de lignes du résultat obtenu par
la commande SELECT.
o La fonction SUM qui sert à faire la somme des valeurs d’une colonne dont le type
de données est numérique.
o La fonction MIN qui sert à déterminer la valeur minimale d’une colonne.
o La fonction MAX qui sert à déterminer la valeur maximale d’une colonne.
o La fonction AVG qui sert à déterminer la moyenne (average) des valeurs
numériques d’une colonne.
2.4. La clause GROUP BY :
La clause GROUP BY est utilisée pour regrouper les lignes qui ont les mêmes valeurs
dans le résultat.
SELECT colonne1, fonction (colonne2)
FROM table
GROUP BY colonne1 ;
2.5. La clause HAVING :
En fait, cette clause est introduite pour appliquer des fonctions dans la requête avec la
clause WHERE. En SQL, la clause HAVING a été ajoutée car la clause WHERE ne
pouvait pas être appliquée avec des fonctions d'agrégation.
SELECT colonne1, fonction (colonne2)
FROM nom_table
GROUP BY colonne1
HAVING fonction (colonne2) operateur valeur ;

37
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

3. Les requêtes avec jointures :

Certaines requêtes font recours à deux tables ou


plus pour avoir un résultat. On parle de jointure :
SELECT [distinct] */nom_colonne(s) [as aléa]
FROM nom_table1 [alias1], …, nom_tableN [aliasN]
WHERE condition ;

4. Les requêtes imbriquées :


Dans certain cas dans la partie condition on fait recours à une requête SELECT, on
parle de requêtes imbriquées.
Exemple :
SELECT nom, prénom
FROM grimpeur
WHERE pays NOT IN
(SELECT pays
FROM localisation);

38
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Activité 1
Créer une base de données : tables, liens et contraintes

Soit la base de données « Aéroport » formée par les tables ci-dessous :


PILOTE (CodeP, nomP, prénomP, DateNais, nb_heures, TelP, SalaireP)
COMPAGNIE (CodeC, nomC, origine)
AVION (CodeA, type, capacité)
VOL (CodeV, Villedép, Villearr, heuredép, jourdép, heurearr, jourarr, CodeP#,
CodeA#, CodeC#)
Donner les commandes SQL permettant de réaliser les opérations suivantes :
 Créer un document word (texte) où vous allez mettre votre travail.
 Créer la base de données « Aéroport_NOM »
 Créer les tables de la base de données en respectant les contraintes ci-dessous :
Nom de Valeur par Valeur
Type Taille Obligatoire
colonne défaut autorisée
CodeP Chaine 4 Oui
nomP Chaine 20 Oui
prénomP Chaine 20 Oui
DateNais Date Oui
Nb_heures Numérique 4 Non 0 >=0
TelP Numérique 8 Non
SalaireP Numérique 8,3 Non 3000 3000..10000
CodeC Chaine 30 Oui
nomC Chaine 50 Oui
Origine Chaine 50 Oui
CodeV Chaine 5 Oui
Villedép Chaine 30 Oui
Villearr Chaine 30 Oui
heuredép Chaine 5 Oui
jourdép Chaine 8 Oui
heurearr Chaine 5 Non
jourarr Chaine 8 Non
CodeA Chaine 20 Oui
type Chaine 20 Oui Boing ; Airbus
capacité Numérique 3 Non 100 100..400

Toutes les clés étrangères seront mises à jour et supprimées automatiquement lors de
la même opération réalisée sur les clés primaires.

39
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Manipuler les données : Ajouter, Consulter et modifier

 Remplir les tables ci-dessous


Table Pilote
CodeP nomP prénomP DateNais nb_heures TelP SalaireP
P100 Chatti Ahmed 15-02-2000 200 99887766 5000
P120 Mayel Fares 07-09-1995 365 22334455 4500
P130 Dali Amir 30-01-1998 160 55667788 4750
P140 B.Aicha Amen 03-11-1997 130 44556677 4250
P150 Chatti Walid 09-10-1999 280 21212121 5000
Table Avion
CodeA Type Capacité
Carthage Boing 737 150
Nafta Boing 747 200
Elissa Airbus A320 250
Hanibal Airbus A380 200
Table Compagnie
CodeC nomC Origine
Tunisair Compagne aérienne tunisienne Tunisie
Air France Compagnie aérienne française France
Alitalia Compagnie aérienne italienne Italie
Lufthansa Compagnie aérienne allemande Allemagne
Transavia Compagnie aérienne hollandaise Hollande

Table Vol
CodeV Villedép Villearr heuredép jourdép heurearr jourarr CodeP CodeA CodeC

TU250 Tunis Nice 14 : 20 Lundi 16 : 15 P140 Nafta Tunisair

L453 Nfidha Berlin 23 :30 Samedi 01 :10 Dimanche P130 Elissa Luftansa

TU110 Tunis Milan 20 : 00 Jeudi 20 : 40 Jeudi P100 Hannibal Alitalia

H333 Djerba Madrid 10 : 30 Mardi Mardi P120 Carthage AirFrance

Abu
A540 Tunis 08 : 45 Dimanche 15 : 30 Dimanche P150 Nafta Tunisair
dhabi

TU111 Monastir Medina 17 : 45 Jeudi 23 : 15 Jeudi P100 Nafta Tunisair

AF09
EcrireNfidha Istanbul
les requêtes SQL 11
qui: 30 Samedi
permettent de 14
: : 30 Samedi P100 Carthage AirFrance
AF67 Monastir Nice 08 : 20 Lundi 10 : 05 Lundi P150 Hannibal Alitalia

L666 Djerba Paris 23 : 30 Mardi 02 : 15 Mercredi P130 Hannibal Lufthansa

40
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

1) Mettre à jour la table VOL par les valeurs suivantes jour de départ = Vendredi, jour
d’arrivé = samedi, heure de départ = 23 : 30, heure d’arrivé = 01 : 25 du vol dont
la ville de départ = Tunis, la ville d’arrivée = Abu Dhabi et du jour de départ =
Dimanche.
2) L’avion Nafta a été remplacer par AirBus A320 faire cette mise à jour.
3) Afficher les codes des compagnes (CodeC) qui ont réalisés des vol.
4) Reprendre la requête précédente en éliminant les répétitions.

Condition sur les chaines de caractères et tri

5) Afficher les vols (CodeV, Villedep, Villearr) qui décolle de Tunis. Trier dans l’ordre
croissant selon le CodeV.
6) Afficher les pilotes dont le prénom commence par A. trier dans l’ordre décroissant
selon le nom.
7) Afficher les noms et prénoms des pilotes dont le nom se termine par I. trier dans
l’ordre croissant des noms puis décroissant des prénoms.
8) Afficher les prénoms des pilotes dont le prénom contient M.
9) Afficher les prénoms des pilotes dont le 2ème caractère est A.
10) Afficher les vols (code, ville départ et ville arrivé) dont le jour d’arriver est
indéterminé.
11) Afficher les codes des vols dont l’heure d’arrivé est connue.

Condition sur les valeurs numériques et les fonctions Agrégats

12) Afficher les pilotes (nom et prénom) dont le salaire est supérieur ou égal à 4500.
13) Afficher les pilotes (Code, nom, prénom et téléphone) dont le salaire est entre 4400
et 4800 trié par ordre alphabétique des noms.
14) Afficher la somme des salaires mensuels des pilotes. (Salaire Mensuel)
15) Afficher le nombre dans avion dont la capacité est supérieure à 150. (Nombre
d’avion).
16) Afficher la moyenne des salaires des pilotes. (Moyenne des salaires).
17) Afficher la plus grande capacité des avions. (Plus grande capacité).
18) Afficher le plus petit salaire. (Salaire minimum).

Condition sur les types date et tri

19) Afficher le pilote (nom et prénom) le moins âgé.


20) Afficher le pilote (nom et prénom) le plus âgé.
21) Afficher les pilotes nés après l’année 1997.
22) Afficher les pilotes nés avant l’année 1999.
23) Afficher les pilotes nés entre l’année 1996 et 2000.
24) Afficher les pilotes du moins âgés vers le plus âgé.
25) Afficher les pilotes du plus âgés vers le moins âgé.

41
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Requête avec groupement (GROUP BY)

26) Afficher les vols (code, ville départ et ville arrivé) grouper par ville de départ.
27) Afficher les vols (code, ville départ et ville arrivé) par code compagnie.
28) Afficher le vols (ville départ, ville arrivé, heure départ et jour de départ) par code
avion.

Requête avec les fonctions Agrégats dans WHERE (HAVING)

29) Afficher les pilotes (nom, prénom et téléphone) ayant le plus bas salaire.
30) Afficher les pilotes (nom, prénom et salaire) ayant le plus haut salaire.
31) Afficher le pilotes (nom, prénom, nombre d’heure et la moyenne des nombre heure
(Moyenne des heures de vol)) ayant un nombre d’heure supérieur à la moyenne des
nombres d’heure.

Requête avec jointure (plusieurs tables)

32) Afficher le pilote (nom et prénom) qui a piloté le vol de code "TU250".
33) Afficher les codes des avions qui sont piloté par le pilote né le "09-10-1999".
34) Afficher l’origine de l’avion de code "Hannibal".
35) Afficher l’origine des compagnies des vols réalisés par le pilote "Chatti Ahmed".
36) Afficher les jours de départ du pilote "Chatti walid".
37) Afficher les pilotes (nom et prénom) qui ont un vol qui départ le "Jeudi".

Requête imbriquée

38) Afficher les pilotes qui n’ont pas réaliser des vol.
39) Afficher les compagnies qui n’ont pas réaliser des vols.

42
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Annexe
SQL V2 (Contexte Général) : https://www.youtube.com/watch?v=Wq0yMQw2EtY
SQL V3 (CREATE / Les Types de Données / Les Contraintes SQL / DROP) :
https://www.youtube.com/watch?v=9qNXA7UVRQg
SQL V4 (INSERT / UPDATE / DELETE) :
https://www.youtube.com/watch?v=PJrlGiMqngE
SQL V5 (SELECT / DISTINCT / WHERE) :
https://www.youtube.com/watch?v=yv6slK6eXs4
SQL V6 ((Partie 1): Les Opérateurs de Comparaison et Les Opérateurs Logiques) :
https://www.youtube.com/watch?v=vN9WOpimPG0&list=PLN9kfJtyH31JG6yeO4x6i2
-QDjPOyJNn9&index=6
SQL V6 ((Partie 2): Les Opérateurs IN - BETWEEN - LIKE - IS NULL / IS NOT NULL) :
https://www.youtube.com/watch?v=ORlCif2oztQ&list=PLN9kfJtyH31JG6yeO4x6i2-
QDjPOyJNn9&index=7
SQL V7 (Les Fonctions d'agrégation (SUM, COUNT, ...) - L' alias AS) :
https://www.youtube.com/watch?v=vblBgNREaM4&list=PLN9kfJtyH31JG6yeO4x6i2-
QDjPOyJNn9&index=8
SQL V8 (GROUP BY / HAVING):
https://www.youtube.com/watch?v=LzVyZEFhQ1w&list=PLN9kfJtyH31JG6yeO4x6i2-
QDjPOyJNn9&index=9
SQL V9 (Order By):
https://www.youtube.com/watch?v=d58UngiIl0U&list=PLN9kfJtyH31JG6yeO4x6i2-
QDjPOyJNn9&index=10
SQL V12 (Alter) :
https://www.youtube.com/watch?v=yKrd7p0Ykos&list=PLN9kfJtyH31JG6yeO4x6i2-
QDjPOyJNn9&index=13
SQL V15 (jointure) :
https://www.youtube.com/watch?v=AEOrcYjJ574&list=PLN9kfJtyH31JG6yeO4x6i2-
QDjPOyJNn9&index=16
SQL V22 (Exercices Corrigées - Les Jointures) :
https://www.youtube.com/watch?v=Cswhk5Sh55c&list=PLN9kfJtyH31JG6yeO4x6i2-
QDjPOyJNn9&index=23

43
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Partie 2 :
Exploiter des techniques de
développement pour créer et
publier un site web dynamique.

❖ Créer un site web interactif.


o Créer des documents web en utilisant HTML5 :
✓ La structure générale d’un document web ;
✓ L’intégration d’un document web dans un autre en utilisant l’élément <iframe> ;
✓ L’ajout d’éléments (listes, tableau, image, lien hypertexte et formulaire) dans un
document web ;
✓ L’utilisation de divers types de champs dans un formulaire :
▪ Champ de saisie de type : texte, date, heure, email, téléphone, mot de passe,
bouton radio, case à cocher, intervalle, numérique et bouton d’envoi/
annulation ;
▪ Zone de saisie multilignes ;
▪ Listes déroulantes (<select> et <datalist>) ;
✓ Le déclanchement des évènements (onclick, onsubmit, onload, onchange, onblur,
onfocus).
✓ La validation d’un document Web (HTML5).
o Appliquer des styles CSS3 dans un site web (Les styles doivent être stockés dans des
feuilles de style externes).
✓ Mettre en forme un document web.
• L’utilisation d’une feuille de style et d’une règle CSS ;
• La création d’un document web en respectant la disposition HTML5 ;
• La mise en forme d’un(e) texte, arrière-plan, image, liste, tableau, formulaire,
boite, et lien ;
• L’application d’un effet de transition ;
• La validation d’un document Web (CSS3).
✓ Ajouter un effet de transformation à un élément.
o Manipuler le langage de script JavaScript (JS) (Le script JS doit être stocké dans un
fichier externe) :
✓ Exploiter JS pour assurer l’interactivité d’une page web.
• L’utilisation des variables (déclaration et portée) ;
• L’utilisation des objets String, Number, Date et Math ;
• L’utilisation des instructions d’affichage (innerHTML, write et alert) ;
• L’utilisation des instructions d’entrée en utilisant l’invite (prompt) et les champs
d’un formulaire ;
• La récupération des données d’un formulaire en utilisant la méthode
getElementById ;
• L’exploitation des structures de contrôle (if, for et do … while) ;
• L’utilisation des fonctions (déclaration et appel)
✓ Exploiter les structures de contrôle switch et while.

44
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

❖ Créer un site Web dynamique.


o Reconnaître le principe de fonctionnement d’un site web dynamique.
o Exploiter l’environnement de travail.
o Manipuler le langage de script PHP :
✓ Identifier la structure d’un script PHP.
✓ Utiliser des variables de type entier, réel, booléen, chaîne de caractères et tableau
(indicé et associatif).
✓ Utiliser une méthode d’affichage (echo).
✓ Utiliser les structures de contrôle (if, for, while et do…while).
✓ Importer le contenu d’un fichier php dans un autre en utilisant l’instruction require.
o Mettre en œuvre la transmission de données entre des pages web.
✓ Reconnaître le principe de transmission de données entre des pages web.
✓ Définir une variable superglobale.
✓ Transmettre des données via une URL ($_GET).
✓ Transmettre des données via un formulaire ($_POST).
o Assurer l’interaction avec une BD :
✓ Se connecter à un serveur.
✓ Sélectionner une base.
✓ Ecrire des requêtes pour interroger et mettre à jour des données d’une base de
données (SELECT, INSERT, DELETE et UPDATE).
✓ Exploiter le résultat d’une requête.

45
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Module 1 :
Créer un site web interactif
1. Créer des documents web en utilisant HTML5 :
La structure générale d’un document web :
Pour un document web on trouve plusieurs structures chacun son choix :

<!DOCTYPE html>
<html lang="fr">
<head>
<!--Encodage des caractères-->
<meta charset='utf-8'>
<!--Actualiser le document toutes les 30 secondes-->
<meta http-equiv='refresh' content='30'>
<!--Définissez une description de votre page Web-->
<meta name="description" content="Cours HTML et CSS">
<!--Définissez des mots-clés pour les moteurs de recherche-->
<meta name="keywords" content="html,css">
<!--Définir l'auteur d'une page-->
<meta name="author" content="H’mida Med">
<!--Configuration de la fenêtre d'affichage-->
<meta name='viewport' content='width=device-width, initial-scale=1'>
<!--Définir un titre pour la page-->
<title>Page Title</title>
<!--charger un lien vers un fichier css nommé main-->
<link rel='stylesheet' type='text/css' media='screen' href='main.css'>
<!--charger un lien vers un fichier javascipt nommé main-->
<script src='main.js'></script>
</head>
<body>
<!-- Le contenu de la page -->
</body>
</html>

46
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Rappel des balises HTML5

Balise Exemple Résultat


<p> <p> Bonjour </p> Bonjour
Paragraphe <p> Hello </p> Hello
<hn> <h1>Bonjour</h1> Bonjour
Titre de niv. 1 à 6 <h4>Bonjour</h4> Bonjour
<em>
<em>Bonjour</em> Bonjour
Italique
<strong>
<strong>Bonjour</strong> Bonjour
Gras
<mark>
<mark> Bonjour </mark> Bonjour
Surbrillance
<ul> <ul>
Liste non ord <li>Fraises</li> • Fraise
<li> <li>Framboises</li> • Framboise
Elément de liste </ul>
<ol> <ol>
Liste ordonnée <li>Fraises</li> 1. Fraise
<li> <li>Framboises</li> 2. Framboise
Elément de liste </ol>

<a> <a href="menu.html" target="index.html"


Lien hypertexte title="cliquer ici">MENU </a>

<img> <img src="photos\nature.jpg" alt="photo de


Image nature" title="belle photo"/>

<audio> <audio src="son.mp3" controls autoplay loop>


Son </audio>

<vidéo> <video src="sintel.webm" controls


Vidéo ou film poster="sintel.jpg"></video>

<figure> <figure>
Figure <img src="animal.jpg"
<figcaption> <figcaption>Eléphan</figcaption>
Titre de figure </figure>
<table>
<table border="1">
Tableau
<caption>Client</caption>
<tr>
<tr> <th>Nom</th> <th>Age</th>
Ligne du tableau
</tr>
<th>
<tr> <td>ali</td> < td>33</td>
Cellule entête
</tr>
<td>
<tr> <td>Sonia</td> <td>26 </td>
Cellule donnée
</tr>
<caption>
</table>
Titre du tableau

47
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

<form> <form name="f" method="post"> </form> Post : envoyer les données par http
Formulaire <form name="f" method="get"> </form> Get : envoyer les données par URL
<input type="text" name="pseudo"
placeholder ="Ex: Zazor" size="30"
maxlength="10">
<input type="password">

<input type="tel" placeholder="216666333">


<input type="number" min="100" max="999
>
<input type="color" >
<input type="image" alt="Login"
src="login.png">
<input type="email" >

<input type="button" value "envoie" >

<input type="time" >


<input>
Saisie <input type="date" >
<input type="checkbox" name="frites" />
Frites <br/>
<input type="checkbox" name="steak" />
Steak haché <br/>
<input type="radio" name="repas" /> Frites
<br/>
<input type="radio" name=" repas " /> Steak
haché <br/>
<input type="range" name="volume" min="0"
max="11">
<input type="reset" value="Reset">

<input type="submit" value="Submit">


<input type="url"
name="url"placeholder="https://example.com"
size="30" >
<input list="browsers" >
Input <datalist id="browsers">
Datalist <option value="Edge">
Option <option value="Firefox">
Liste déroulante <option value="Chrome">
</datalist>
textarea <textarea name="story" rows="5"
Texte multiligne cols="33"><texteara>

48
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

<select name="pays" >


<select> <option value="it">Italie</option>
<option> <option value="tn">Tunisie</option>
Liste déroulante <option value="ca">Canada</option>
</select>
<fieldset>
Zone de <fieldset>
formulaire <legend> Vos coordonnées </legend>
<legend> </fieldset>
Légende de zone
<hr>
Ligne <hr>
horizontale
<details>
<details>
ce cours est généal.
Zone détails
</details>
<details>
< details>
<summary>Cilquer ici</summary>
<summary>
Ce cours est génial.
Entête de détails
</details>
<cite> <cite>Celui qui sait commander trouve
Citation toujours ceux qui doivent obéir</cite>
<address>
<adresse>
Lycée IBN SINA 4070 M’saken Lycée IBN SINA 4070 M’saken
Adresse
</address>
Onblur
Onclik
Onfocus
Oninput <input type="button" value="Calculer"
Onload onclick="factorielle()"> En cliquant sur Calculer, on appelle
Onmouseover la fonction factorielle.
Onsubmit
Evénement

Activité récapitulative : Activité 1


2. Appliquer des styles CSS3 dans un site web :
Pour appliquer des mises en forme dans le document HTML on a 3 cas, le 1er on applique
la mise en forme au sein de la balise concernée, le 2ème on utilise la balise <style> dans
la partie <head> et le 3ème qui est le plus conseillé consiste à d’utiliser un fichier externe
CSS qui contient les mises en forme et prévoir un lien avec le document HTML pour
appliquer ces mises en forme sur les documents Web.
Rappel des Codes CSS3 :
On applique la couleur rouge à la police du paragraphe :
1er cas : <p style= "color : red ;" > </p> 3ème cas : Fichier.CSS
2ème cas : <head> P{
<style>
color : red ;
p { color : red;}
</style> }
</head>

49
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Syntaxe :
balise1
{
propriete1 : valeur1;
propriete2 : valeur2;
}
balise2
{
propriete1 : valeur1;
propriete2 : valeur2;
propriete3 : valeur3;
}
balise3
{
propriete1 : valeur1;
}

Appliquer un style Exemple en CSS


Appliquer un style a une seule balise h1{ }
Sélectionner plusieurs balises au même temps h1, em{ }
Une balise contenue dans une autre h3 em { }
Utiliser l'attribut class HTML CSS
➔ on peut utiliser classe plusieurs fois dans <h1 class="cl"> </h1> .cl { }
html <p class="cl"> </p>
Utiliser l'attribut id HTML CSS
➔ on utilise id une seule fois dans html <img id="im"> #im { }

* sélectionner toutes les balises * { }


Les unités en CSS
Les unités absolues :

Exemple
Les unités absolues en CSS
L’élément box aura la même
px Les pixels .box { dimension (150 x 150 pixels),
width : 150 px ; quelle que soit la taille de
in Les pouces
l’écran.
cm Les centimètres height : 150 px ;

mm Les millimètres

pc Les picas

pt Les points

50
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Les unités relatives :


Les unités relatives en CSS
Ou cadratin, unité proportionnelle à la taille de la police de l’élément parent ou du
em
document
rem L’unité rem fait toujours référence à la taille de la police de l’élément racine.
ex Cette unité est relative à la hauteur de la police actuelle en minuscule.
ch Cette unité est elle aussi peu utilisée, elle est relative à la largeur du caractère “0”.
% Relatives à la dimension du conteneur parent.
xx-small, x-small, small, medium, large,x- large,xx- large
Par défaut, 1 em = 16 px si aucune taille de police n’est définie.
Exemple
.box { Le pourcentage fera référence à la largeur calculée de
l'élément parent de la boîte. Ici l’élément box prend 50% de la
width : 50%;
taille de son élément conteneur.
Height: 50%;
} Les propriétés de CSS3

Propriété Exemple Affichage


font-size font-size: 14px; Bonjour
font-family: Impact, "Arial Black", Bonjour
font-family
Arial;
font-style font-style: italic; Bonjour
font-style: normal; Bonjour
font-weight: bold; Bonjour
font-weight font-weight: bolder; Bonjour
font-weight: lighter; Bonjour
text-decoration: blink; (clignotte)
text-decoration: underline; Bonjour
text-decoration Bonjour
text-decoration: line-through;
text-decoration: none; Bonjour
text-align:center; Bonjour
text-align:left; Bonjour
text-align Bonjour
text-align:rigth;
text-align:justify; Bonjour
text-transform: capitalize; Bonjour (1ère lettre en majuscule)
text-transform text-transform: uppercase; BONJOUR
text-transform: lowercase; bonjour
Coler:red; Bonjour
color:#000FFF; Bonjour
color
color:rgb(122, 214, 128); Bonjour

background-image:
background-image
url("neige.png");

51
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

background-color background-color: blue;

background-repeat:repeat;

background-repeat:repeat-x;

background-repeat
background-repeat:repeat-y;

background-repeat:no-repeat;

background-size:cover;

background-size

background-size: 200px 100px;


background-repeat: no-repeat;

filter: blur(5px);

filter filter: grayscale(80%);

filter:invert(75%);

table-layout table-layout: auto;

border-collapse: border-collapse: collapse;

52
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

border-collapse: separate;

Width width: 150px;


height height:50px;

border-color: red;

border-color
border-color: red yellow blue
green;

border-radius: 30px;

border-radius border-radius: 25% 10%;

border-radius: 10% / 50%;

border-style border-style: dotted;

border-width: thick;
thick:large thin:mince
medium : moyen
border-width
border-width: 0 4px 8px 12px;

Position position: static;

(par défaut)
Définit la façon dont
un élément est position: fixed;
positionné dans un
document. position: relative;
Les propriétés top: 20px; left: 40px;
✓ top, (Décalé, par rapport à lui-même)

53
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

✓ right, position: absolute;


✓ bottom top: 20px; left: 40px;
✓ left Il est positionné par rapport à son
déterminent ancêtre le plus proche, aucun
l'emplacement final de espace n'est créé pour l'élément sur
l'élément positionné la page
position: sticky;
top: 100px;
la boîte est décalée par rapport à
son ancêtre de défilement le plus
proche
padding: 1em;

/* On applique la même valeur aux


quatre côtés */

Padding padding: 10% 0;

/* vertical | horizontal */
Ou bien :
✓ padding-right
✓ padding-top padding: 10px 50px 20px;
✓ padding-bottom
✓ padding-left /* haut | horizontal | bas */

padding: 10px 50px 30px 0;

/* haut | droit | bas |gauche */

Margin
Ou bien : margin: 10px 50px 20px 0;
✓ margin-right
✓ margin -top /* haut | droit | bas |gauche */
✓ margin -bottom Meme propriété que padding
✓ margin -left
text-shadow: red 1px 0 10px;
text-shadow /* color | offset-x | offset-y | blur-
radius */

box-shadow box-shadow: 10px 5px 5px red;

box-shadow: 3px 3px red,


box-shadow
-1em 0 .4em olive;

overflow overflow: visible;

54
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

overflow: hidden;

overflow: scroll;

overflow: auto;

opacity opacity: 0.33;

list-style-type: circle;

list-style-type list-style-type: upper-roman;

list-style-type:lower-alpha;

list-style-position: inside;
list-style-position
list-style-position: outside;

list-style-image list-style-image: url("rocket.svg");

a:hover (Quand la
souris est sur le lien)
a
a:active (au moment
{color: red;}
du clic)
a:hover
a:visited (après avoir
{color: green;}
visité le lien)
a:link (lien non visité)

: rotate(45deg);

transform transform: skew(15deg, 15deg);

Transform:translate(-50%,-50%)

55
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

HTML
<img src=" chat.jpg" id="chat" />
CSS
Transition #chat
{width: 250px;
height: 250px;
border-radius: 20% 0% 20% 0%;
transition-property: all;
transition-duration: 2s;
transition-delay: 1s;
}
#chat:hover
{border-radius: 0% 20% 0% 20%;
opacity: 0.2;}

56
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Le déclanchement des évènements HTML et des


script Javascript :
Onclick :
Définition et utilisation :
L'événement onclick se produit lorsque l'utilisateur clique sur un élément HTML.
Exemple :
Saisir le code HYML suivant :
<body>
<h1> Evénements HTML </h1>
<h2> L'événement onclick</h2>
<p> L'événement onclick déclenche une fonction lorsqu'un élément est cliqué.</p>
<p> Cliquez pour déclencher une fonction qui affichera " Salut tout le monde ": </p>
<button onclick="myFunction()">Clicquer ici</button>
<p id="demo"></p>
<script>
function myFunction()
{ document.getElementById("demo").innerHTML = "Salut tout le monde"; }
</script>
</body>

Onsubmit :
Définition et utilisation :
L'événement onsubmit se produit lorsqu'un formulaire est soumis.
Exemple :
Saisir le code HYML suivant :
<body>
<h1>Evénements HTML </h1>
<h2> L'événement onsubmit </h2>
<p> Lorsque vous soumettez le formulaire, une fonction est déclenchée qui alerte du
texte.</p>
<form action="/action_page.php" onsubmit="myFunction()">
Entrer votre nom : <input type="text" name="fname">
<input type="submit" value="Envoyer">
</form>
<script>
onfocus :
function myFunction()
{ alert("Le formulaire a été envoyé"); }
</script>
</body>

onload :
Définition et utilisation :
L'événement onload se produit lorsqu'un objet a été chargé.

57
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

onload est le plus souvent utilisé dans l'élément <body> pour exécuter un script une
fois qu'une page Web a complètement chargé tout le contenu (y compris les images, les
fichiers de script, les fichiers CSS, etc.).
L'événement onload peut être utilisé pour vérifier le type et la version du navigateur du
visiteur, et charger la version appropriée de la page Web en fonction des informations.
L'événement onload peut également être utilisé pour traiter les cookies (voir "Plus
d'exemples" ci-dessous).
Exemple :
Saisir le code HYML suivant :
<body onload="myFunction()">
<h1>Hello World!</h1>
<script>
function myFunction()
{ alert("Page chargée"); }
</script>
</body>

Onchange :
Définition et utilisation :
L'événement onchange se produit lorsque la valeur d'un élément a été modifiée.
Pour les boutons radio et les cases à cocher, l'événement onchange se produit lorsque
l'état coché a été modifié.
Conseil : cet événement est similaire à l'événement oninput. La différence est que
l'événement oninput se produit immédiatement après la modification de la valeur d'un
élément, tandis que onchange se produit lorsque l'élément perd le focus, après que le
contenu a été modifié. L'autre différence est que l'événement onchange fonctionne
également sur les éléments <select>.
Exemple 1 :
Saisir le code HYML suivant :

<body>
<p> Modifiez le texte dans le champ de saisie, puis cliquez en dehors du champ
pour déclencher l'événement onchange.</p>
Entrer un texte : <input type="text" name="txt" value="Hello"
onchange="myFunction(this.value)">
<script>
function myFunction(val) {
alert("La valeur d'entrée a changé. La nouvelle valeur est : " + val);
}
</script>
</body>

58
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Exemple 2 :
Saisir le code HYML suivant :
<body>
<p> Sélectionnez une nouvelle voiture dans la liste.</p>
<select id="mySelect" onchange="myFunction()">
<option value="Audi">Audi</option>
<option value="BMW">BMW</option>
<option value="Mercedes">Mercedes</option>
<option value="Volvo">Volvo</option>
</select>
<p> Lorsque vous sélectionnez une nouvelle voiture, une fonction est déclenchée qui
affiche la valeur de la voiture sélectionnée.</p>
<p id="demo"></p>
<script>
function myFunction() {
var x = document.getElementById("mySelect").value;
document.getElementById("demo").innerHTML = "You selected: " + x;
}
</script>
</body>

onblur :
Définition et utilisation :
✓ L'événement onblur se produit lorsqu'un élément perd le focus.
✓ L'événement onblur est souvent utilisé sur les champs de saisie.
✓ L'événement onblur est souvent utilisé avec la validation de formulaire (lorsque
l'utilisateur quitte un champ de formulaire).
Exemple :
Saisir le code HYML suivant :

<body>
<h1>Evénements HTML </h1>
<h2> L'événement blur </h2>
Entrer votre nom : <input type="text" id="fname" onblur="myFunction()">
<p> Lorsque vous quittez le champ de saisie, une fonction est déclenchée qui
transforme le texte saisi en majuscule.</p>
<script>
function myFunction() {
var x = document.getElementById("fname");
x.value = x.value.toUpperCase();
}
onfocus
</script> :
</body>

Les fonctions prédéfinies : (Voir annexe Javascript)

59
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Les structures de contrôle conditionnelles :


Définition et utilisation :
Les instructions conditionnelles sont utilisées pour effectuer différentes actions en
fonction de différentes conditions.
Très souvent, lorsque vous écrivez du code, vous souhaitez effectuer différentes actions
pour différentes décisions.
Vous pouvez utiliser des instructions conditionnelles dans votre code pour ce faire.
En JavaScript, nous avons les instructions conditionnelles suivantes :
• Utiliser if pour spécifier un bloc de code à exécuter, si une condition spécifiée est
vraie.
• else sert à spécifier un bloc de code à exécuter, si la même condition est fausse.
• else if permet de spécifier une nouvelle condition à tester, si la première condition
est fausse.
• Utilisez switch pour spécifier de nombreux blocs de code alternatifs à exécuter.

Structure de contrôle conditionnelle réduite :


Syntaxe : Exemple : Faites un message d'accueil "Bonne journée" si
if (condition) l'heure est inférieure à 18h00
{ <body>
bloc d’instruction ; <h2>JavaScript if</h2>
}
<p> Affichez "Bonne journée !" si l'heure est inférieure à 18h00 </p>
<p id="demo"> Bonsoir !</p>
<script>
if (new Date().getHours() < 18) {
document.getElementById("demo").innerHTML = " Bonne journée!"; }
</script>
</body>

Structure de contrôle conditionnelle complète :


Syntaxe : Exemple :
if (condition) Si l'heure est inférieure à 18h, créez un message d'accueil
{ "Bonne journée", sinon "Bonsoir". Saisir le code HYML suivant :
bloc d’instruction 1;
<body>
}
<h2>JavaScript if .. else</h2>
else
{ <p> Une salutation basée sur le temps :</p>
bloc d’instruction 2; <p id="demo"></p>
} <script>
const hour = new Date().getHours();
let greeting;
if (hour < 18) { greeting = "Bonne journée"; }
else { greeting = "Bonsoir"; }
document.getElementById("demo").innerHTML = greeting;
</script>
</body>

60
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Structure de contrôle conditionnelle généralisée :


Syntaxe : Exemple : S'il est moins de 10h00, créez un message d'accueil
if (condition 1) "Bonjour", sinon, mais il est moins de 20h00, créez un message
{ d'accueil " Bonne journée ", sinon un "Bonsoir":
bloc d’instruction 1;
<body>
}
<h2>JavaScript if .. else if … else </h2>
else if (condition 2)
{ <p> Une salutation basée sur le temps :</p>
bloc d’instruction 2; <p id="demo"></p>
} <script>
…… const time = new Date().getHours();
else let greeting;
{ if (time < 10) { greeting = " Bonjour ";}
bloc d’instruction n; else if (time < 20) { greeting = " Bonne journée ";}
} else { greeting = " Bonsoir "; }
document.getElementById("demo").innerHTML = greeting;
</script>
</body>
Structure de contrôle conditionnelle à choix multiple :
Syntaxe :
switch (condition) Remarque : Si vous omettez l'instruction
{ break, le cas suivant sera exécuté même si
case v1 : bloc d’instruction 1 ; break ; l'évaluation ne correspond pas au cas.
case v2 : bloc d’instruction 2 ; break ;
…… Le mot clé default spécifie le code à exécuter
default : bloc d’instruction n ; s'il n'y a pas de correspondance de cas.
}
Exemple 1 :
La méthode getDay() renvoie le jour de la semaine sous la forme d'un nombre compris
entre 0 et 6. (dimanche=0, lundi=1, mardi=2 ..)
Cet exemple utilise le numéro du jour de la semaine pour afficher le nom du jour :
<body>
<h2>JavaScript switch</h2>
<p id="demo"></p>
<script>
let jour;
switch (new Date().getDay()) {
case 0: case 4:
jour = "Dimanche"; break; jour = "Jeudi"; break;
case 1: case 5:
jour = "Lundi"; break; jour = "Vendredi"; break;
case 2: case 6:
jour = "Mardi"; break; jour = " Samedi ";
case 3: }
jour = "Mercredi"; break;
document.getElementById("demo").innerHTML = "Aujourd’hui c’est : " + jour;
</script>
</body>

61
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Exemple 2 :
La méthode getDay() renvoie le jour de la semaine sous la forme d'un nombre compris
entre 0 et 6.
Si aujourd'hui n'est ni samedi (6) ni dimanche (0), écrivez un message par défaut :

<body>
<h2>JavaScript switch</h2>
<p id="demo"></p>
<script>
let text;
switch (new Date().getDay()) {
case 6:
text = " Aujourd'hui c'est samedi ";
break;
case 0:
text = " Aujourd'hui c’est dimanche ";
break;
default:
text = "Dans l'attente du week-end ";
}
document.getElementById("demo").innerHTML = text;
</script>
</body>

Les structures de contrôle itératives :


Définition et utilisation :
Les boucles peuvent exécuter un bloc de code plusieurs fois.
Différents types de boucles :
JavaScript prend en charge différents types de boucles :
• for : boucle plusieurs fois sur un bloc de code
• while : parcourt un bloc de code alors qu'une condition spécifiée est vraie
• do/while : boucle également à travers un bloc de code alors qu'une condition
spécifiée est vraie
Structure de contrôle itérative for (Pour) :
Syntaxe :

for (expression 1; expression 2; expression 3)


{
// bloc de code à exécuter
}

L'expression 1 est exécutée (une fois) avant l'exécution du bloc de code.


L'expression 2 définit la condition d'exécution du bloc de code.
L'expression 3 est exécutée (à chaque fois) après l'exécution du bloc de code.

62
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Exemple :
<body> Dans l'exemple ci-contre, vous
<h2> la boucle JavaScript pour </h2> pouvez lire :
<p id="demo"></p> L'expression 1 : définit une
<script> variable avant le début de la
let text = ""; boucle (soit i = 0).
for (let i = 0; i < 5; i++) L'expression 2 : définit la
{ condition d'exécution de la
text += " Le nombre est " + i + "<br>"; boucle (i doit être inférieur à 5).
}
L'expression 3 : augmente
document.getElementById("demo").innerHTML = text; une valeur (i++) chaque fois
</script> que le bloc de code dans la
</body> boucle a été exécuté.

Structure de contrôle itérative while (Tant que) :


Définition et utilisation :
La boucle while parcourt un bloc de code tant qu'une condition spécifiée est vraie.
Syntaxe :
while (condition) {
// bloc de code à exécuter
}
Exemple :

<body>
<h2> Boucle JavaScript tant que </h2>
<p id="demo"></p>
<script>
let text = "";
let i = 0;
while (i < 10) {
text += "<br> Le nombre est " + i;
i++;
}
document.getElementById("demo").innerHTML = text;
</script>
</body>

Si vous oubliez d'augmenter la variable utilisée dans la condition, la boucle ne se


terminera jamais. Cela plantera votre navigateur.

Structure de contrôle itérative do/while :


Définition et utilisation :
La boucle do while est une variante de la boucle while. Cette boucle exécutera le bloc
de code une fois, avant de vérifier si la condition est vraie, puis elle répétera la boucle
tant que la condition est vraie.

63
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Syntaxe :
do {
// bloc de code à exécuter
}
while (condition)
Exemple :

<body>
<h2>La boucle JavaScript Do While </h2>
<p id="demo"></p>
<script>
let text = ""
let i = 0;
do {
text += "<br> Le nombre est " " + i;
i++;
}
while (i < 10);
document.getElementById("demo").innerHTML = text;
</script>
</body>

Les fonctions :
Définition et utilisation :
Une fonction JavaScript est un bloc de code conçu pour effectuer une tâche particulière.
Une fonction JavaScript est exécutée lorsque "quelque chose" l'invoque (l'appelle).
Exemple : Fonction pour calculer le produit de p1 et p2

<body>
<h2> Fonctions JavaScript </h2>
<p> Cet exemple appelle une fonction qui effectue un calcul et renvoie le résultat :</p>
<p id="demo"></p>
<script>
function myFunction(p1, p2) {
return p1 * p2;
}
document.getElementById("demo").innerHTML = myFunction(4, 3);
</script>
</body>

64
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Syntaxe de la fonction JavaScript :


Une fonction JavaScript est définie avec le mot-clé function, suivi d'un nom, suivi de
parenthèses ().
Les noms de fonction peuvent contenir des lettres, des chiffres, des traits de
soulignement et des signes dollar (mêmes règles que les variables).
Les parenthèses peuvent inclure des noms de paramètres séparés par des virgules :
( paramètre1, paramètre2, ... )
Le code à exécuter, par la fonction, est placé entre accolades : { }

function nom (parametre1, parametre2, parametre3) {


// code to be executed
}
Les paramètres de la fonction sont répertoriés entre parenthèses () dans la définition
Les arguments de la fonction sont les valeurs reçues par la fonction lorsqu'elle est
appelée.
A l'intérieur de la fonction, les arguments (les paramètres) se comportent comme des
variables locales.
Appel de fonction :
Le code à l'intérieur de la fonction s'exécutera lorsque "quelque chose" invoque (appelle)
la fonction :
• Lorsqu'un événement se produit (lorsqu'un utilisateur clique sur un bouton)
• Lorsqu'il est invoqué (appelé) à partir du code JavaScript
• Automatiquement (auto-invoqué)
Vous en apprendrez beaucoup plus sur l'invocation de fonction plus tard dans ce
didacticiel.
Retour de fonction :
Lorsque JavaScript atteint une instruction return, la fonction s'arrête.
Si la fonction a été appelée à partir d'une instruction, JavaScript "reviendra" pour
exécuter le code après l'instruction d'appel.
Les fonctions calculent souvent une valeur de retour. La valeur de retour est "renvoyée"
à "l'appelant" :
<body>
<h2>JavaScript Functions</h2>
<p> Cet exemple appelle une fonction qui effectue un calcul et renvoie le résultat:</p>
<p id="demo"></p>
<script>
var x = myFunction(4, 3);
document.getElementById("demo").innerHTML = x;
function myFunction(a, b) {
return a * b;
}
</script>
</body>

65
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Pourquoi Fonctions ?
Vous pouvez réutiliser le code : définissez le code une fois et réutilisez-le plusieurs fois.
Vous pouvez utiliser le même code plusieurs fois avec des arguments différents, pour
produire des résultats différents.
Fonctions utilisées comme valeurs variables :
Les fonctions peuvent être utilisées de la même manière que vous utilisez des variables,
dans tous les types de formules, d'affectations et de calculs.
Variables locales :
Les variables déclarées dans une fonction JavaScript deviennent LOCALES à la
fonction.
Les variables locales ne sont accessibles qu'à partir de la fonction.

66
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

La validation des données dans un formulaire :


TP 1 :
1) Créer une page web nommée « TP1.html » contenant le formulaire suivant :

2) Créer un fichier « TP1.js » contenant le script ci-dessous, puis assurer la liaison avec
le fichier HTML :
function valider()
{ var zoneSaisie = document.getElementById("donnée").value ;
alert("La zone de saisie contient : " + zoneSaisie) ;
}

3) Modifier la fonction de valider () pour afficher un message d’erreur lorsque le champ


est vide, et afficher le contenu du champ lorsqu’il ne l’est pas.
TP 2 :
Pour valider les champs du formulaire ci-dessous, charger les fichiers « TP2.html » et
« TP2.css »

Créer un fichier « TP2.js »


pour vérifier les champs
suivant en appuyant sur le
bouton ENVOYER selon les
conditions suivantes :
Partie 1 vos coordonnées :
Nom : doit être non vide, ne
dépasse pas les 15
caractères et formé par des
lettres alphabétiques.
Prénom : même condition
que le nom.
Date de naissance : non
vide.
Mail : non vide, un seul "@",
un seul "." après le "@".
Site : non vide, commence
par "https://www.".
Mtdps : 8 caractères.
Code : non vide.
Genre : un sélectionner.
Pays : un sélectionner.

67
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Partie 2 vos formations :


Formation : Au moins une formation qui doit être cocher.
Vos besoins : non vide.
Partie 3 Envoyer Nous Votre Photo :
Fichier : Sélectionner au moins un fichier.

TP 3 :

Créer un fichier HTML, intitulé Tp3, contenant le formulaire suivant :


Le clic sur le bouton “Envoyer” de type submit fait l’appel à une fonction “Verif ()”
écrite en JavaScript et qui permet de vérifier les conditions suivantes :
• Le niveau Secondaire est sélectionné par défaut.
• Les champs obligatoires doivent être non vides.
• Les Noms doivent être en majuscule, en cas d’un nom ou prénom composé seul
le premier mot est considéré comme nom.
• Les Prénoms doivent commencer par majuscule et le reste des caractères en
minuscule.
• Le champ CIN ne contient que 8 chiffres de 0 à 9.
• L’adresse e-mail (n’utiliser pas le type “mail”) doit comporter le caractère
arobase (@) et un point (.).
• Un module de formation doit être choisi.

68
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Module 2 :
Créer un site web dynamique
1. Reconnaître le principe de fonctionnement d’un site web
dynamique.
Rappel d’un site web statique :
Une page Web statique est une page Web dont la machine (le serveur Web, l’ordinateur)
sur laquelle celle-ci est stockée, ne fait aucun effort pour la créer lorsque celle-ci est
demandée par la machine qui veut l’affichée à travers son navigateur Web.
On dit alors que le serveur reste statique pour la création de la page Internet (il ne fait
rien pour créer la page Web).
Les pages statiques impliquent donc que celles-ci doivent déjà exister sur
la machine (le serveur Web, l’ordinateur), avant que l’on en face la demande d’affichage.
Ces pages web dites statiques en générale sont créées par un Webmaster. La page Web
statique a aussi une autre particularité, l’intégralité du code qui la compose va être
interprété, compris directement par le navigateur, on dit que le code de la page
programmée est équivalent au code de la page affichée (page programmée = page
affichée).
Les pages dites statiques portent en générale l’extension .html ou .htm.

Rmq : les sites Internet fait intégralement de pages web statiques sont de nos jours
très rares dû à l’évolution et des besoins des utilisateurs et du Web.

69
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Définition d’un site web dynamique :


Une page Web dynamique, est une page Web qui n’existe pas en tant que telle sur
la machine (le serveur Web) mais qui est créée seulement lors de sa demande par
la machine, l’ordinateur qui veut l’affichée à travers son navigateur web.
On dit alors que le serveur créé dynamiquement la page Internet à la demande (il met
tout en œuvre pour créer la page Web).
Pour créer la page Web dynamique, bien souvent le serveur Web (l’ordinateur) utilise
toute une mécanique de construction pour pouvoir créer la page. Exemples (si le langage
PHP est choisi) : Pour construire la page Web on peut recourir à l’utilisations de
plusieurs scripts PHP, mais aussi recourir à l’utilisation d’une base de données dans
laquelle est stockée les données, …
Contrairement à une page Web statique, la page Web créée dynamiquement ne
contiendra donc pas toutes les caractéristiques techniques (langages de
programmations, …) qui ont servi à sa création. La page Web créée ne contiendra donc
que les caractéristiques (langages de programmation + texte) que le navigateur
Web sera capable d’interpréter (comprendre) pour que celle-ci puisse être affichée par
celui-ci. On dit aussi que ces pages Web sont sécurisées car les données, informations
qu’elles contiennent ne sont que celles que l’on veut transmettre lors de leur affichage
au travers du navigateur.
Les pages dites dynamiques portent bien souvent l’extension .PHP, .ASPX, etc.

Rmq : Pour comprendre facilement pourquoi à ton besoin de créer des pages
Web seulement lors de leur demande (leur appelle), il est simple de le comprendre avec
la demande d’afficher une page d’un produit telle une voiture en fonction d’un choix
d’options sélectionnés telles que la couleur, le choix du moteur, … On dit que
l’internaute, en fonction des « paramètres » (sélections réalisées, …) fait générer au
serveur Web la page Web.
Rappel important : Les pages dynamiques sont dites pages sécurisées car on ne peut
jamais (à partir du navigateur) voir le(s) code(s) de construction de la page Internet,
mais seulement le code source de la page Internet générée (code source visible
depuis le navigateur).

70
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

2. Environnement de travail :
Pour créer un site web dynamique on a besoin des logicielles qui permettent la gestion
des pages web, les base de données et la relation client serveur. Pour notre cours on va
utiliser le logiciel XAMPP-Lite.
Apache : il permet au serveur de distribuer des pages
web, il ne connait que le HTML.
PHP : PHP est comme un plugin d’Apache. Il a besoin
d’Apache pour fonctionner, pour travailler sur des
pages PHP. Apache + PHP = serveur PHP.
MySQL : Logiciel pour gérer les bases de données.
PHPmyAdmin : il permet de gérer les bases de
données.

71
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

3. Manipulation du langage de script PHP :


Syntaxe de base du PHP :
Pour que le script soit interprété par le serveur, 4 conditions sont nécessaires :
• Le fichier contenant le code doit avoir l'extension telle ".php"
• Le code PHP contenu dans le code HTML doit être délimité par des balises du type
< ? php et ? >
• Le fichier php doit être enregistré dans le répertoire : "www"
• Le fichier php ne sera exécuté qu'à travers son adresse web (utiliser l'option web local).
A NE PAS FAIRE :
aller dans le répertoire www puis dans le répertoire correspondant à votre projet et
double cliquer sur votre page d'exemple ; Vous obtiendrez à coup sûr une page d'erreur.
Structure de données du PHP :
Les constantes :
• Pour définir une constante, on fait appel à la fonction define () :
Syntaxe :
define (nom_constante, valeur_constante, insensible_à_la_casse) ;
Le nom de la constante est sensible à la casse.
La valeur de la constante. En PHP 5, doit être une valeur scalaire (entier, nombre
décimal, chaîne de caractères, booléen, ou null) En PHP 7, les valeurs tableau sont
aussi autorisé.
Exemple 1 :
define ("CONSTANT", "Bonjour le monde.");
echo CONSTANT; // affiche "Bonjour le monde."
echo Constant; // affiche "Constant" et émet une alerte
Exemple 2 :
define("GREETING", "Salut toi.", true);
echo GREETING; // affiche "Salut toi."
echo Greeting; // affiche "Salut toi."
Exemple 3 : Fonctionne depuis PHP 7
define('ANIMALS', array('chien','chat','oiseaux'));
echo ANIMALS[1]; // affiche "chat"
• L'opérateur "." permet la concaténation des contenus des objets.
Les variables :
• Php n'impose pas de déclaration explicite des variables avant de les utiliser.
• Pour déclarer une variable, il suffit de la précéder par le signe $ et lui affecter une
valeur.
• Pour manipuler les variables, on distingue les fonctions suivantes :

72
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

isset (nom_variable) — Détermine si une variable est déclarée et est différente de null.
Exemple :
$var = '';
if (isset($var)) // Ceci est vrai
settype (nom_variable, type) — Affecte un type à une variable.
Type peut être : ("boolean" ou "bool", "integer" ou "int", "float" ou "double", "string",
"array", "null")
Exemple :
$foo = "5bar"; // chaîne
$bar = true; // booléen
settype($foo, "integer"); // $foo vaut maintenant 5 (integer)
settype($bar, "string"); // $bar vaut maintenant "1" (string)
Gettype (nom_variable) — Retourne le type de la variable
Exemple :
$foo = "5bar"; // chaîne
echo gettype($foo ); // string
Les opérateurs arithmétiques :
Les opérateurs de calcul permettent de modifier mathématiquement la valeur d'une
variable.
Exemple :
Opérateur Dénomination Effet Exemple Résultat (x=7)
+ Addition Ajoute deux valeurs $x + 3 10
- Soustraction Soustrait deux valeurs $x - 3 4
* Multiplication Multiplie deux valeurs $x * 3 21
/ Division Divise deux valeurs $x / 3 2.333333
Affecte une valeur à une
= Affectation $x = 3 Met 3 dans $x
variable
% Modulo Reste de la division entière $x % 3 1

Les opérateurs de comparaison :


Opérateur Dénomination Effet Résultat
== Egalité $x == 3 Retourne 1 si $x est égal à 3, sinon 0
< Inférieur strict $x < 3 Retourne 1 si $x est inférieur à 3, sinon 0
Retourne 1 si $x est inférieur ou égale à 3,
<= Inférieur ou égale $x <= 3
sinon 0
> Supérieur strict $x > 3 Retourne 1 si $x est supérieur à 3, sinon 0
Retourne 1 si $x est supérieur ou égal à 3,
>= Supérieur ou égale $x >= 3
sinon 0
!= Différent $x ! = 3 Retourne 1 si $x est différent de 3, sinon 0

73
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Les opérateurs logiques :


Opérateur Dénomination Effet Syntaxe
Un des conditions est
|| ou OR Ou logique ((codition1)|| (codition2))
réalisée
Toutes les conditions
&& ou AND Et logique ((codition1) && (codition2))
sont réalisées
Une condition est
XOR Ou Exclusif ((codition1) XOR (codition2))
réalisée
Inverse l’état de la
! Non logique ( ! condition)
variable booléenne

Les entrées/sorties :
✓ Pour entrer des données à une page php vous pouvez :
o Récupérer les données depuis un formulaire on utilisant les tableaux prédéfinis
$_GET['nom_objet'] ou $_POST['nom_objet'] suivant la méthode utilise lors de la
déclaration du formulaire.
o Récupérer les données à travers les paramètres envoyés vers la première page
http://adr_url/nom_fichier.php?var1=val1 & var2=val2...
✓ Pour afficher le contenu d'une variable ou un message, on peut utiliser la méthode
"echo", ou utiliser un objet d'un formulaire :
<input type= "text" name="np" value="< ?php echo($np) ; ?>">
Les structures de contrôle :
Structures conditionnelles :
if … else switch
if (condition) switch (variable)
{ code à exécuter ; } { case valeur1 : liste d’instruction ; break ;
elseif (condition) case valeur2 : liste d’instruction ; break ;
{ code à exécuter ; } ----------------
else case valeurn : liste d’instruction ; break ;
{ code à exécuter ; } default : liste d’instruction ; break ;
}
Exemple : Exemple :
<?php <?php
$t = date("H"); $favcolor = "red";
if ($t < "10") switch ($favcolor) {
case "red":
{echo " bonne matinée!";} echo "Your favorite color is red!"; break;
elseif ($t < "20") case "blue":
{echo "bonjour!";} echo "Your favorite color is blue!";break;
case "green":
else
echo "Your favorite color is green!";break;
{echo "bonne nuit!";} default:
?> echo "Your favorite color is neither red,
blue, nor green!";
}
?>

74
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Structures itératives :
For
for (init compteur ; condition compteur ; incrémenter compteur)
{
Liste d'instructions
}
Exemple :
<?php
for ($x = 0; $x <= 100; $x+=10)
{ echo "The number is: $x <br>"; }
?>
While Do … while
while (condition est vrai) do
{ {
Liste d'instructions Liste d'instructions
} } while (condition est vrai)
Exemple : Exemple :
<?php <?php
$x = 1; $x = 1;

while($x <= 5) { do {
echo "The number is: $x <br>"; echo "The number is: $x <br>";
$x++; $x++;
} } while ($x <= 5);
?> ?>

Les fonctions mathématiques :


abs (nb) : renvoie la valeur absolue (positive) d'un nombre.
Exemple :
<?php
echo(abs(-6.7) . "<br>"); // retourne 6.7
echo(abs(-3) . "<br>"); // retourne 3
?>
rand () ou rand (min , max) : génère un entier aléatoire.
Exemple :
<?php
echo(rand() . "<br>"); // retourne 765439807
echo(rand() . "<br>"); // retourne 12344

75
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

echo(rand(10,100)); // retourne 67
?>

round(nb) : arrondit le nombre nb à virgule flottante.


Exemple :
<?php
echo(round(0.60) . "<br>"); // retourne 1
echo(round(0.50) . "<br>"); // retourne 1
echo(round(0.49) . "<br>"); // retourne 0
echo(round(-4.40) . "<br>"); // retourne -4
echo(round(-4.60)); // retourne -5
?>
sqrt (nb) : renvoie la racine carrée du nombre nb.
Exemple :
<?php
echo(sqrt(0) . "<br>"); // retourne 0
echo(sqrt(1) . "<br>"); // retourne 1
echo(sqrt(9) . "<br>"); // retourne 3
echo(sqrt(0.64) . "<br>"); // retourne 0.8
echo(sqrt(-9)); // retourne NAN
?>
Les fonctions sur type chaine :
"." : pour concaténer deux chaines. Une chaine est une suite de caractères entre "" ou ''
chr (ASCII) : renvoie un caractère à partir de la valeur ASCII spécifiée.
Exemple :
<?php
echo chr(65) . "<br>"; // retourne "A"
?>
ord (ch) : renvoie la valeur ASCII du premier caractère d'une chaîne.
Exemple :
<?php
echo ord("A")."<br>"; // retourne 65
echo ord("Ahmed")."<br>"; // retourne 65
?>
strpos(Source, ch, [start] ) : trouve la position de la première occurrence de chaîne ch à
l'intérieur de la chaîne Source en commençant de la position start (optionnel, par défaut
0). Cette fonction est sensible à la casse.
Exemple :

76
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

<?php
echo strpos("I love php, I love php too!","php"); // retourne 7
?>

strtoupper (ch) convertit la chaîne ch en majuscule.


Exemple :
<?php
echo strtoupper("Hello WORLD!"); // retourne "HELLO WORLD!"
?>
strtolower (ch) convertit la chaîne ch en minuscule.
Exemple :
<?php
echo strtolower("Hello WORLD."); // retourne "hello world."
?>
strcmp (ch1, ch2) compare deux chaînes, elle est sensible à la casse.
Si elle retourne : 0 les deux chaines sont égales
> 0 ch1 est supérieur à ch2.
< 0 ch1 est inférieur à ch 2.
Exemple :
<?php
echo strcmp("Hello world!","Hello world!"); // 0  les deux chaines sont égales
echo strcmp("Hello world!","Hello"); // 7  ch1 est supérieure à ch2
echo strcmp("Hello world!","Hello world! All!"); // -5  ch1 est inférieure à ch2
?>
substr (source, début, [taille]) : copy la sous chaîne de $source à partir de la position
$début et de longueur $taille.
Si début est positif en commence du début sachant que le 1er caractère a l’indice 0.
Si taille est omise en copie jusqu’à la fin.
Si début est négatif en commence de la fin.
Exemple 1 :
<?php
$rest = substr("abcdef", -1); // retourne "f"
$rest = substr("abcdef", -2); // retourne "ef"
$rest = substr("abcdef", -3, 1); // retourne "d"
?>
Exemple 2 :

77
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

<?php
$rest = substr("abcdef", 0, -1); // retourne "abcde"
$rest = substr("abcdef", 2, -1); // retourne "cde"
$rest = substr("abcdef", 4, -4); // retourne ""
$rest = substr("abcdef", -3, -1); // retourne "de"
?>

strlen (source) : retourne la taille de la chaine source.


Exemple :
<?php
$str = 'abcdef';
echo strlen($str); // 6
$str = ' ab cd ';
echo strlen($str); // 7
?>
Str_replace (ch1, ch2, source) : retourne une chaine dont on remplace ch1 par ch2 qui
se trouve dans la chaine source
Exemple :
<?php
$bodytag = str_replace("%body%", "black", "<body text='%body%'>");
// Génère : <body text='black'>
?>
Trim (source) : Supprime les espaces en début et fin de chaîne.
Implode (séparateur, tableau) : Rassemble les éléments d'un tableau en une chaîne
séparer par séparateur.
Exemple :
<?php
$array = ['lastname', 'email', 'phone'];
var_dump(implode(",", $array)); // string(20) "lastname,email,phone"
// Chaîne vide lors de l'emploi d'un tableau vide :
var_dump(implode('hello', [])); // string(0) ""
// Le séparateur est optionnel :
var_dump(implode(['a', 'b', 'c'])); // string(3) "abc"
?>
explode (séparateur, chaine) : découpe une chaîne de caractères en segments séparer
par séparateur dans un tableau.
Exemple 1 :
<?php
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6";
$pieces = explode(" ", $pizza);
echo $pieces[0]; // piece1
echo $pieces[1]; // piece2
?>
Exemple 2 :

78
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

<?php
/* Une chaîne qui ne contient pas de délimiteur va retourner un tableau contenant qu'un
seul élément représentant la chaîne originale */
$input1 = "hello";
$input2 = "hello,there";
$input3 = ',';
var_dump( explode( ',', $input1 ) ); //[0] => string(5) "hello"
var_dump( explode( ',', $input2 ) ); //[0] => string(5) "hello"
[1] => string(5) "there"
var_dump( explode( ',', $input3 ) ); //[0] => string(0) ""
[1] => string(0) ""
?>
Les fonctions sur type date :
date() : récupère la date système sous forme de chaine.
Exemple :
<?php
// Aujourd'hui, le 10 Mars 2001, 5:16:18 pm,
$today = date("l"); // Monday
$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
?>
Time() : retourne l’heure système en seconde depuis (1er janvier 1970 00:00:00 GMT).
Exemple :
<?php
echo 'Aujourd'hui : '. time(); // Aujourd'hui : 1660338149
?>
strtotime ("date") : analyse une date/heure textuelle en anglais en un horodatage Unix
(le nombre de secondes depuis le 1er janvier 1970 00:00:00 GMT).
Exemple :
<?php
echo (strtotime("now") . "<br>"); //1589972726
echo (strtotime("3 October 2005") . "<br>"); //1128297600
echo (strtotime("+5 hours") . "<br>"); //1589990726
echo (strtotime("+1 week") . "<br>"); //1590577526
echo (strtotime("+1 week 3 days 7 hours 5 seconds") . "<br>");//1590861931
echo (strtotime("next Monday") . "<br>"); //1590364800
echo (strtotime("last Sunday")); //1589673600
?>

4. PHP et MySQL :
Connexion :
Connexion au serveur et à la base :

<?php
$mysqli = new mysqli("localhost", "user",79"password", "nom_base");
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

Exemple :

<?php
$conx = new mysqli ("localhost", "root", "", "BD123456");
...
?>

Créer une requête :

<?php
$nom_requete = " requête SQL" ;
?>

Exemple :

<?php
$req = "SELECT * FROM client WHERE id = 1" ;
?>

Exécuter une requête :

<?php

$nom_resultat = $mysqli -> query($nom_requete) ;
?>

Exemple :

<?php

$res = $conx -> query($req) ;
?>

Compter le nombre d’entrées (Enregistrements ou lignes) :


Demander à mysql de compter le nombre d'entrées dans une table.
Exemple :

80
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

<?php
$mysqli = new mysqli("localhost", "root", "password", "BD");
$result = $mysqli -> query ("SELECT Code, Name FROM Country ");

/* Détermine le nombre de lignes du résultats */

$nbre = $result->num_rows;
echo ("Il y a " . $nbre . " lignes. " );
...
?>

Afficher les résultats d’une requête :


- fetch_array( ) : Retourne une ligne de résultat MySQL sous la forme d'un tableau
associatif, d'un tableau indexé, ou les deux :

<?php
$mysqli = new mysqli("localhost", "root", "password", "BD");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID ";
$result = $mysqli->query($query);
/* Tableau numérique */
$tab = $result->fetch_array(MYSQLI_NUM);
echo("<br/>", $tab [0], $tab[1]);
/* Tableau associatif */
$tab = $result->fetch_array(MYSQLI_ASSOC);
echo("<br/>", $tab["Name"], $tab["CountryCode"]);
/* Tableau associatif et numérique */
$tab = $result->fetch_array() ;
echo("<br/>", $tab[0], $tab["CountryCode"]);
/* Tableau associatif et numérique utiliser boucle while ; tant qu’il y a
des résultat ou de lignes on affiche*/
while ($tab = $result->fetch_array()){
echo("<br/>", $tab[0], $tab["CountryCode"]);
}
?>

- fetch_row( ): Retourne une ligne de résultat MySQL sous la forme d'un tableau.

81
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

<?php
$mysqli = new mysqli("localhost", "root", "password", "BD");
$query = "SELECT Name, CountryCode FROM City ORDER BY ID DESC";
$result = $mysqli->query($query);
/* Récupère un tableau d'objets */
while ($row = $result->fetch_row())
{ echo($row[0]. "<br>". $row[1]); }
?>

Fermer la Connexion :

<?php

$mysqli -> close() ;
?>

Exemple :

<?php

$conx -> close() ;
?>

82
Manuel de systèmes & technologies de l’informatique
4ème Sciences de l’informatique Prof : H’MIDA Med

83

Vous aimerez peut-être aussi