Académique Documents
Professionnel Documents
Culture Documents
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.
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}
} }
<?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 :
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)
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