Vous êtes sur la page 1sur 4

Lycée Khaireddine Bacha Classe : 4 SI 1-2

ARIANA Matière : Système et Technologie de l’Information


***
Date : 28-02-2022 Durée : 2 h Coef :3
Devoir de Synthèse N°2
Enseignantes : Mme Hanen Kassas & Mme Mariem Ben Miloud

Nom :………………………………………Prénom :……………………………….Note :………/20

Exercice N°1 (5points)


Pour chacune des propositions ci-dessous, répondre par la lettre (V) si la proposition est correcte
ou par la lettre (F) dans le cas contraire.

1. PHP, est un langage utilisé principalement dans :


F le développement Front_End

v le développement web dynamique

F le développement web statique

F la gestion des bases de données

2. En PHP, la syntaxe de la structure "echo" est :
v echo("message");

F echo message;

v echo ‘message’;

v echo "<b> message </b></br>";

3. JavaScript est un script :
F côté serveur

v côté client

F qui nécessite principalement, un serveur web.

v interprété par le navigateur

4. En SQL, dans une requête de sélection, on peut utiliser le mot clé :
v ORDER BY

v DISTINCT

F ALTER

F UNIQUE

5. En SQL, une fonction d’agrégat permet de :
v ’effectuer une opération sur un ensemble d’enregistrements

F filtrer un ensemble d’enregistrements selon un critère.

F trier le résultat dans un ordre déterminé.

v donner un seul résultat à partir d’un ensemble de données.

Page 1 sur 4
Exercice N°2 (10 points)
Un pays en cours de développement veut lancer une consultation nationale électronique portant sur les
axes sociaux et économiques afin d’améliorer la qualité de vie de ses citoyens. Après une étude
approfondie, un site web "Avis.tn" est en cours de construction.
Tous les contrôles de saisie sont développés dans un fichier externe nommé " Script" et qui contient la
fonction "verifier()".
Après la validation des données, le formulaire est envoyé vers un fichier PHP nommé "Ajout" pour insérer
les informations du citoyen dans la table correspondante d’une base de données.

Partie HTML (3 points)

1. Soit la partie de script HTML suivante : (6*0.5)

<form method="GET" name="g” action="Ajout.php" onsubmit="return verifier()">

a. Compléter les pointillés par les informations adéquates.

b. Quel est le rôle de cette balise ?


Permet d’envoyer les données saisies dans les éléments du formulaire "g" vers le ficher
"Ajout.php" en utilisant la méthode d’envoi par URL GET, et après la validation avec la fonction
verifier().
c. Expliquer la différence entre la méthode d’envoi du formulaire POST et la méthode GET :
GET : envoie les données dans la barre d’adresse, non sécurisé, limité à 255 caractères.
POST : envoie les données en arrière-plan, plus sécurisée, envoie les données "volumineux".
2. Donner la balise qu’on doit ajouter dans la page HTML pour assurer la liaison avec le fichier "Script".
<script src= "Script.js"></script>
3. On veut ajouter les gouvernorats Sousse et Monastir à la liste nommée "gov ".
Donner les balises HTML à ajouter.
<option value="sousse"> Sousse</option>
<option value="monastir"> Monastir </option>
Partie javascript :(3 points) (6*0.5)

Soit la fonction valide (ch1, ch2) une fonction JavaScript qui permet de valider que chaque élément de
ch1 existe dans la chaine ch2 :

Exemple :

valide(ch1,"0123456789") permet de vérifier que ch1 est composée que des chiffres.
pour ch1= "71111000"  valide(ch1,"0123456789") retourne True
pour ch1= "711h1000"  valide(ch1,"0123456789") retourne False

1. Compléter le script suivant qui permet de vérifier que le champ nomprénom d’un citoyen est formé
de deux chaines alphabétiques séparées par un espace " ".

Page 2 sur 4
function verifier(){
let nompre=document.getElementById("np").value
pos =nompre.indexOf(" ")
if(pos==-1){
alert ("Veuillez vérifier votre nom et prénom espace manquant!")
return false }
else {
nom = nompre.subString(0,pos)
prenom = nompre.subString(pos+1,nompre.length)
if( !valide(nom.toUpperCase(),"ABCDEFGHIJKLMNOPQRSTUVWXYZ") )
{alert ("Veuillez vérifier votre nom !")
return false}
elseif( !valide(prenom.toUpperCase(),"ABCDEFGHIJKLMNOPQRSTUVWXYZ") )
{alert ("Veuillez vérifier votre prénom!")
Return false}
} }

Partie : Gestion des données (2 points)

1. Ecrire le code SQL qui permet de créer la base "BD_AVIS" : (0.5)


CREATE DATA BASE "BD_AVIS" ;
2. Ecrire le code SQL qui permet de créer la table CITOYEN (num, npre, ville) sachant que :"num" est
une clé primaire de type chaine et de taille 10, "npre"et une chaine de 30 caractères, le champ ville
est de type chaine et de taille 20 et que tous les champs sont obligatoires. (1.5)

CREATE TABLE CITOYEN (


num VARCHAR(10) PRIMARY KEY,
npre VARCHAR(30) NOTNULL,
ville VARCHAR(20) NOTNULL ) ;

Partie PHP :(2 points)(02.5*8)

Soit le code suivant dans le fichier "Ajout.php" :


1. Compléter le script ci-dessous qui permet d’insérer les données du citoyen dans la table
CITOYEN de la base de données "BD_AVIS" à partir du formulaire insertion.html.

<?php
mysql_connect("localhost ou 127.0.0.1","root");
mysql_select_db("BD_AVIS");
$num= $_GET["T1"];
$npre= $_GET["T2"];
$ville= $_GET[T3"];
$res1=mysql_query("select * from citoyen where num= '$num')");
if(mysql_num_rows($res1)!= 0) echo "citoyen déjà existant" ;
else
{$res2=mysql_query("insert into citoyen values('$num','$npre','$ville')");
if($res2)
echo "citoyen ajouté avec succès" ;
else
echo "problème d’insertion";
} ?>

Page 3 sur 4
Exercice N°3 : (5points)
Soit la représentation textuelle de la base "Gestion_series" suivante :

Série (titre_série, genre, age_min, pays)


Episode (titre_série#, saison, numéro, résumé)
Acteur (no_acteur, nom, prénom, date_nais, pays_origine)
Rôle (série#, saison#, noact#, description_rôle)

Règle1 : La table Série contient des informations sur des séries télévisées avec le titre de chaque série,
son genre (comédie, action, animation), l’âge minimum des spectateurs et son pays d’origine.
Règle2 : Les épisodes d’une série sont diffusés pendant une ou plusieurs années (saisons) et chaque
saison contient des épisodes numérotés à partir de 1 (table Episode) avec un résumé par épisode.
Règle 3 : La base contient également des informations sur les acteurs (Acteur).
Règle 4 : La table Rôle contient pour chaque saison d’une série, le rôle joué par chaque acteur.

1. En tenant compte des règles citées, indiquer dans la représentation textuelle ci-dessus les
clés primaires 0.5 et les clés étrangères 0.5 des tables EPISODE et ROLE (sans ajouter aucun
champ).

2. Dégager une contrainte de domaines à partir des règles citées, puis l’ajouter en SQL :
C1
genre (comédie, action, animation) OU des épisodes numérotés à partir de 1 OU
Contrainte
age>0 OU date_nais> now()(0.5)

Alter table …… add Constraint C1 check……. (0.5)


SQL

3. Si on veut ajouter la possibilité que le même acteur peut jouer dans plusieurs rôles dans la même
série, quelle modification doit-on apporter à la structure de la base ? 0.5
Ajouter le champ description_role dans la clé primaire ou bien ajouter un champ
"code_role" et le déclarer clé primaire ou bien ajouter une table Intermédiaire.
4. Ecrire les requêtes SQL permettant d’afficher :
a. Les différents genres (sans doublons) des séries existantes :
SELECT DISTINCT GENRE FROM SERIE; 0.5
b. La liste des acteurs (nom et prénom) de la série "Friends" saison 2004 triés par ordre
alphabétiques décroissant. (1)
SELECT nom, prenom
FROM SERIE S, ROLE R, ACTEUR A
WHERE S.titre_série= R.série AND
A.no_acteur=R.noact AND
R.série="Friends" AND R.saison=2004
ORDER BY (nom) DESC ;
c. Le nombre des séries destinés aux spectateurs entre 12 et 16 ans. (0.5)
SELECT COUNT(*) FROM série WHERE age_min BETWEEN 12 AND 16 ;
d. L’âge moyenne des séries : (0.5)
SELECT AVG(age_min) FROM Série ;

Page 4 sur 4

Vous aimerez peut-être aussi