Telechargé par Walid Khalifa

Feuille de révision STI : Bases de données, Développement web, PHP, CSS, JS

publicité
STI
Classe :
Série :
4ème Sciences de l’informatique
Révision N°2 (théorique)
----------------------------------Nom du Prof : Ladhari tijani
S
Exercice 1
30 min
2.5 pts
Dans un contexte de base de données et de développement web et pour chacune des
propositions ci-dessous, répondre par la lettre (V) si la réponse est correcte ou par la
lettre (F) dans le cas contraire.
1) Une relation de type plusieurs à plusieurs entre deux tables A et B se traduit par :
L’ajout de la clé primaire de la table A à la table B
L’ajout de la clé primaire de la table B à la table A et inversement
La création d’une nouvelle table C contenant les clés primaires des tables A et B
2) La clé étrangère
Est unique
Peut prendre la valeur Null
Est obligatoire dans une table
3) En CSS, pour appliquer un effet de flou de 10px sur une image dont l’id est "image",
on utilise la propriété :
#image {filter : grayscale(10px) ;}
#image {filter : blur(10px) ;}
#image {filter : opacity(10px) ;}
4) Soient les instructions suivantes en PHP :
$ch ="Programme" ;
$p = strpos ($ch, "A") ;
La valeur retournée dans $p est : -1
La valeur retournée dans $p est : 5
La valeur retournée dans $p est : false
5) En PHP, pour déterminer le nombre d’éléments d’un tableau $t, on utilise l’instruction :
$n= strlen($t) ;
$n = mysqli_num_rows($t) ;
$n = count($t) ;
1
6) En JAVASCRIPT, pour générer un entier aléatoire entre 0 et 9, on utilise l’instruction :
let n = Math.trunc(Math.random()*10) ;
let n = Math.trunc(Math.random()+9) ;
let n = Math.round(Math.random()*9) ;
7) Soit la partie du code PHP suivant:
$req="SELECT * FROM chomage WHERE CodePay='Ger';";
$res=mysqli_query($cnx,$req) ;
La fonction mysqli_fetech_array($res) permet de retourner un
tableau associatif
tableau numérique
tableau associatif et numérique
8) Soit la requête SQL suivante permettant de créer la table "VILLE" :
CREATE TABLE Ville (CodeV VARCHAR(50) PRIMARY KEY,
NomV VARCHAR(10);
Pour changer la taille du champ "NomV" de 10 à 50 on utilise :
ALTER TABLE Ville ALTER NomV VARCHAR(50);
ALTER TABLE Ville CHANGE NomV VARCHAR(50);
ALTER TABLE Ville MODIFY NomV VARCHAR(50);
9) Soit la table Eleve définit par le schéma suivant Eleve (Id, Nom, Prenom, Tel)
Pour afficher la liste des élèves dans l’ordre croissant des noms et prénoms on utilise
la requête suivante :
SELECT * FROM eleve ORDER BY 2, 3 ASC ;
SELECT * FROM eleve ORDER BY Nom ASC, Prenom ASC ;
SELECT * FROM eleve ORDER BY Nom, Prenom ;
10) Quelle est la fonction principale de la clause GROUP BY dans une requête SQL ?
Filtrer les données en fonction de critères spécifiques.
Grouper les colonnes qui ont le même type.
Grouper les lignes qui ont la même valeur dans une ou plusieurs colonnes.
2
30 min
Exercice 2
2 pts
1) Remplir horizontalement la grille ci-dessous en se référant aux définitions suivantes :
A
B
C
D
E
F
G
….
….
S
….
….
….
….
….
….
….
….
M
….
….
….
L
1
2
….
N
3
4
….
….
C
….
….
….
5
….
A
….
….
….
….
….
….
….
E
6
H
….
Liste des définitions :
1. Une méthode d’envoi qui transmet les données d’un formulaire dans la requête
HTTP.
2. Un évènement qui se déclenche lorsqu’une zone d’entrée devient active.
3. Une méthode JavaScript qui permet de convertir une chaine en une valeur numérique.
4. Un type de données en SQL qui stocke des valeurs numériques avec un nombre
fixe de chiffres après la virgule.
5. Une propriété CSS qui permet de créer de l’espace autour des éléments html et
en dehors de toute bordure.
6. Une clause en SQL utilisée pour modifier la structure d’une table
2) Définir le mot trouvé dans la colonne « F »
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
3
Exercice 3
25 min
2.5 pts
Soit base de données "Gestion_Eleve" qui contient la table Eleve décrite par le
schéma relationnel suivant :
Eleve (nume, np, section, sexe, langue, DateIsc)
Nom de colonne
nume
np
section
sexe
langue
DateInsc
Description
Numéro de l’élève
Nom et prénom de l’élève
Section de l’élève
Sexe de l’élève
Langue étrangère choisie
Date et heure inscription
Type de données
Entier auto-incrémenté
Texte (20)
Texte (15)
Texte (1)
Texte (20)
Date
Soit le formulaire HTML ci-dessous, permettant la saisie des informations relatives à
un élève en classe terminale, afin de s’inscrire à une formation en langues étrangères.
Soit le code HTML suivant correspondant à la page "inscription.html"
<form …>
Nom et prénom : <input type ="text" name ="np">
Section : <select name = "sec">
<option value="EG"> Economie et gestion </option>
<option value="SI"> Sciences informatique </option>
<option value="Math"> Math </option>
</select>
Sexe : <input type="radio" name="s" value="M" > Masculin
<input type="radio" name="s" value="F" > Feminin
Langue : <input type="checkbox" name="ang" value="Anglais"> Anglais
<input type="checkbox" name="all" value="Allemand" >Allemand
...
</form>
4
Travail demandé :
Sachant qu’on veut transmettre les données du formulaire en utilisant une méthode
d’envoi sécurisée, écrire les instructions nécessaires à la récupération des données et
leur insertion dans la table Eleve.
< ?php
// Instruction de connexion au serveur Web et à la base de données
$cnx=…………………………………………………………………………………………………
………………………………………………………………………………………………………..;
// Instruction(s) de récupération des données du formulaire.
$NomPrenom=…………………………………………………..…………………………….…;
$Section= ………………………………………………………………………..………………;
$Sexe =……………………………………………………………………………………...…...;
$Langue="" ;
if (…………………………………………………………)
$langue=$Langue . "Anglais" ;
if (…………………………………………………………)
$langue=$Langue . "Allemand" ;
//Instruction(s) permettant de récupérer la date et l’heure courante :
$d=………………………………………………………………………………………. ;
//Instruction(s) permettant d’insérer les données dans la table Eleve puis afficher le message suivant "inscription réussite"
……………………………………..………………..……………………………………………
…………………………………….……………………………………..……………………….
……………………………………………………………………………………………………
……………………………………………………………………………………………………
……………………………………..………………..……………………………………………
…………………………………….……………………………………..……………………….
……………………………………………………………………………………………………
……………………………………………………………………………………………………
?>
5
Exercice 4
60 min
8 pts
Soit la base de données simplifiée « Gestion_Croisières » permettant à une agence de
voyage de proposer à ses clients différentes croisières maritimes vers plusieurs villes
côtières à travers le monde. Pour cela on propose la représentation textuelle suivante de
cette base de données :
CLIENT (PassClient, NomClient, AdrClt, TelClient)
BATEAU (CodeBat, NomBat, CapBat)
TRAVERSEE (NumTrav, VilleDep, VilleArr, DateTrav, CodeBat#)
RESERVATION (NumRes, DateRes, PassClient#, NumTrav#, NbPass, Montant)
Soit la description des colonnes des tables de cette base :
Nom
PassClient
NomClient
AdrClient
TelClient
CodeBat
NomBat
CapBat
NumTrav
VilleDep
VilleArr
DateTrav
NumRes
DateRes
NbPass
Montant
Description
Numéro passeport d’un client
Nom et prénom d’un client
Adresse d’un client
Téléphone d’un client
Code d’un bateau
Nom d’un bateau
Capacité maximale d’un bateau
Numéro d’une traversée
Ville de départ d’une traversée
Ville d’arrivée d’une traversée
Date prévue d’une traversée
Numéro d’une réservation
Date d’une réservation
Nombre de passagers d’une réservation
Montant à payer par réservation d’une
traversée
Type
Chaine
Chaine
Chaine
Entier
Chaine
Chaine
Entier
Entier
Chaine
Chaine
Date
Entier
Date
Entier
Décimal
Contrainte
Non vide
Non vide
Non vide
Entre 100 et 400
Non vide
Non vide
Non vide
>0
6
Partie 1 : Création et modification de la structure de la base de données :
1) Soient les requêtes SQL présentées ci-dessous permettant de créer les tables BATEAU et TRAVERSEE :
CREATE TABLE BATEAU (
CodeBat Varchar(10) PRIMARY KEY,
NomBat Varchar(50), CapBat Int);
CREATE TABLE TRAVERSEE (
NumTrav Int(10),
VilleDep Varchar(30) NOT NULL,
VilleArr Varchar(30) NOT NULL,
DateTrav Date,
CodeBat Varchar(10));
Ecrire les requêtes SQL nécessaires permettant d’ajouter les contraintes manquantes
aux deux tables BATEAU et TRAVERSEE en s’appuyant sur la représentation textuelle de la base données et à la description des colonnes indiquée ci-dessus :
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
2) Pour tenir au courant les clients des actualités de l’agence, l’administrateur de la base
de données doit ajouter une nouvelle colonne à la table CLIENT intitulée
EmailClient de type chaine et de taille maximale de 50 caractères. Ecrire la requête
SQL correspondante :
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
…………………………………………………………………………………
7
Partie 2 : Manipulation des données :
1) L’agence de voyage a programmé une nouvelle croisière, pour cela on vous demande
d’écrire la requête SQL permettant d’ajouter la ligne suivante à la table TRAVERSEE.
NumTrav
VilleArr
VilleDep
DateTrav
CodeBat
1500
Marseille
Barcelone 15/06/2024
BAT250
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
2) À la suite des augmentations des prix du transport dans le monde, l’agence a informé
tous ses clients ayant effectués des réservations à partir du 01/07/2024 qu’il y aura
une augmentation sur le montant des traversées de 15%. Ecrire la requête SQL correspondante :
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
3) Pour chacune des situations suivantes, mettre une croix  devant la réponse correcte :
a) Soit la requête SQL suivante :
DELETE FROM RESERVATION WHERE PassClient = "Z554422"
AND DateRes = NOW();
En exécutant la requête, Le système :
Supprime toutes les réservations du client ayant le code "Z554422"
Supprime toutes les réservations du client "Z554422" d’aujourd’hui
Supprime toutes les réservations du client "Z554422" de l’année en cours
b) Soit la requête SQL suivante :
INSERT INTO BATEAU VALUES ("BAT120", 450);
Sachant que le bateau ayant le code "BAT120" n’existe pas et en exécutant la
requête, Le système :
Affiche un message d’erreur
Ajoute une ligne dans la table BATEAU avec les valeurs : "BAT120", "", 450
Ajoute une ligne dans la table BATEAU avec les valeurs : "BAT120", NULL, 450
8
4) Ecrire les requêtes SQL permettant de répondre aux questions suivantes :
a) Quelles sont les traversées effectuées par le bateau dont le nom est "Carnival
Dream". On affichera les champs NumTrav, VilleDep, VilleArr et DateTrav.
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
b) Quels sont les clients ayant réservé pour la traversée numéro 2350. On affichera
les champs PassClient, NomClient et TelClient. Le résultat doit être trié par ordre
croissant des noms des clients.
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
c) Quels sont les clients ayant effectués des réservations sur le bateau dont le nom
est "Queen Mary 2". On affichera les champs PassClient et NomClient.
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
9
d) Quel est le nombre total de traversées effectuées par le bateau dont le code est
"BAT450" durant l’année 2024. On affichera le nom du bateau ainsi que le
nombre de traversées.
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
e) On souhaite afficher pour chaque traversée, le nombre total de passagers ainsi
que le montant total.
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
f) Quelles sont les traversées programmées au cours de l’année 2024 et ayant un
nombre total de passagers supérieur à 200. On affichera les champs : NumTrav,
VilleDep et VilleArr.
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
g) Quelles sont les bateaux ayant effectués plus que 5 traversées au cours du premier
trimestre de l’année 2024. On affichera les champs : CodeBat, NomBat et le
nombre de traversées.
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
10
h) Soient les deux tableaux suivants :
CodeBat
BAT125
BAT135
BAT234
BAT458
BAT780
BAT950
Extrait de la table BATEAU
NomBat
CapBat
Carnival Breeze
850
Azamara Journey
740
Costa diadema
1250
Celebrity Edge
950
Renaissance
900
Queen Mary 2
1450
Résultat de la requête
CodeBat
NomBat
BAT234
Costa diadema
BAT458
Celebrity Edge
BAT950
Queen Mary 2
Pour chacune des propositions suivantes, répondre par « Vrai » si la requête permet
d’obtenir le résultat ci-dessus et par « Faux » sinon.
Proposition
Réponse
SELECT CodeBat, NomBat
FROM BATEAU
WHERE CapBat > 900 ;
…………………………
SELECT CodeBat, NomBat
FROM BATEAU
WHERE NomBat LIKE "C%"
AND CapBat > 900 ;
…………………………
SELECT CodeBat, NomBat
FROM BATEAU
WHERE CapBat > (SELECT CapBat
FROM BATEAU
WHERE CodeBat = "BAT780") ;
…………………………
11
Exercice 5
30 min
5 pts
Un établissement scolaire souhaite développer une plateforme autour d’une base de données pour automatiser la gestion des emprunts des livres dans sa bibliothèque. Ci-dessous la description textuelle simplifiée de la base de données "GestionEmprunts" :
Type (CodeType, LibType)
Livre (NumLivre, TitreLivre, CodeType#, NbExpDisp)
Abonne (IdAb, NomAb, PrenAb, ClasseAb)
Emprunt (IdAb#, NumLivre#, DateEmp)
Description des colonnes des tables
Champ
Description
Type Taille
CodeType Code du type d’un livre
Chaîne
5
LibType
Libellé du type d’un livre
Chaîne
30
NumLivre Numéro d’un livre
Chaîne
5
TitreLivre Titre d’un livre
Chaîne 100
NbExpDisp Nombre d’exemplaires disEntier
ponibles
IdAb
Identifiant d’un abonné
Entier
NomAb
Nom d’un abonné
Chaîne
30
PrenAb
Prénom d’un abonné
Chaîne
30
ClasseAb
Classe d’un abonné
Chaîne
30
DateEmp
Date d’emprunt d’un livre
Date
Contrainte
Obligatoire
Obligatoire
Valeur par défaut = 0
Obligatoire
Obligatoire
Obligatoire
1) Pour chacune des propositions suivantes, mettre une croix  devant la réponse correcte :
a) Ajouter la contrainte d’intégrité référentielle entre les tables "Livre" et "Type".
ALTER TABLE Livre FOREIGN KEY (CodeType) Type(CodeType);
ALTER TABLE Livre ADD CONSTRAINT C1 REFERENCES Type (CodeType);
ALTER TABLE Livre ADD FOREIGN KEY (CodeType) REFERENCES
Type (CodeType);
b) Ajouter une contrainte sur le champ "NbExpDisp" de la table "Livre" qui doit
être ≥ 0.
ALTER TABLE Livre MODIFY NbExpDisp INT CHECK (NbExpDisp >=0);
ALTER TABLE Livre CHANGE NbExpDisp CHECK (NbExpDisp >=0);
ALTER TABLE Livre ADD CONSTRAINT C2 CHECK (NbExpDisp >=0);
12
2) Soit le code HTML incomplet de la page "Ajout.html" :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Ajout</title>
<…………….. rel="stylesheet" ………………="messtyles.css">
<script src='controle.js'></script>
</head>
<body>
<form action="……………" method="………." onsubmit="…………………...">
<h2 id="t2">Ajout nouveau livre</h3>
<label for="numlv">Numéro Livre : </label>
<input type="……………." name="numlv" id="numlv"><br>
<label for="">Titre Livre : </label>
<input type="……………" name="titre" id="titre"><br>
<label for="">Type Livre : </label>
<select name="type" id="type">
<option value="0">Choisir le type</option>
<option value="1">Algorithmique</option>
<option value="2">Base de données</option>
<option value="3">Multimédia</option>
<option value="4">Robotique</option>
</select><br>
<label for="nbe">Nombre Exemplaires : </label>
<input type="number" name="nbe" id="nbe" value="0"><br>
<div>
<input type="…………….." name="b1" id="b1" value="Annuler">
<input type="…………….." name="b2" id="b2" value="Ajouter">
</div>
</form>
</body>
</html>
13
N.B. : Ci-après le formulaire de la page "Ajout.html"
Sachant que le clic sur le bouton "Ajouter" fait appel à :
✓ Une fonction JavaScript intitulée "verif"
✓ Un fichier intitulé "Ajout.php"
a) Compléter le code html de la page "ajout.html" en ajoutant :
• La balise HTML manquante à la ligne 6 pour établir un lien avec la feuille de
styles "mesStyles.css".
• Les options adéquates à la balise de la ligne 10.
• Le type adéquat aux balises des lignes 13, 15, 27 et 28.
b) En se référant au code HTML et au formulaire ci-dessus, compléter le tableau
suivant par le code CSS adéquat à chaque mise en forme.
Mise en forme
Le titre :
- Alignement : centré
- Couleur : Marron
- Lettre majuscule au début de chaque
mot
Les boutons :
- Largeur : 100px
- Style : Gras
- Coins arrondis : 10px
Code CSS
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
…………………………………………………
14
3) Ci-après on présente un script incomplet de la fonction "verif"
function verif()
{
type=document.getElementById('type')……………………………
// tâche1
nbe=document.getElementById('nbe').value
if (type == 0)
{
………………("Le choix du type du livre est obligatoire")
// tâche2
return false ;
}
if(…………….(nbe) || Number(nbe)<0 || ………………….. !=-1) // tâche3 + tâche4
{
alert("Le nombre d'exemplaires est un entier >=0")
return false
}
}
Compléter la fonction verif Sachant que :
•
•
•
•
Tâche1 : propriété pour récupérer l’indice de l’option sélectionnée
Tâche2 : une méthode d’affichage
Tâche3 : une fonction pour tester si nbe contient un nombre
Tâche4 :une méthode prédéfinie qui retourne la position du "." dans nbe
4) Afin de créer la page "Ajout.php" , valider chacune des propositions suivantes en
mettant dans la case correspondante la lettre V si elle est correcte ou la lettre F sinon :
a) Soit l’instruction suivante permettant de récupérer la valeur du numéro du livre :
$numlv = $_POST['numlv'] ;
En PHP, la requête qui permet de chercher un livre dans la base de données dont
le numéro est saisi dans le formulaire est :
$req = "select * from livre ;";
$req = "select * from livre where Numlivre = '$numlv';";
$req = "select * from emprunt where Numlivre = '$numlv';";
b) A chaque emprunt, on doit vérifier la disponibilité du livre. La requête SQL est :
$req = "select * from emprunt where NumLivre = '$numlv' ;";
$req = "select * from livre where NumLivre = '$numlv'; and NbExpDisp > 0;";
$req = "select * from emprunt where NumLivre = '$numlv' and
DateEmp = NOW();";
15
Téléchargement