Aucun document en dehors de ceux remis aux candidats par les examinateurs n’est autorisé.

Partie I : Programmation web /10pts

Une entreprise de la place souhaite mettre sur pied une application web dynamique de gestion de son magasin. Souhaitant faire une programmation modulaire, elle vous confie le module sur la recherche des informations sur un article. L’interface de cette page se présente comme l’indique l’extrait de la figure ci-dessous. 

recherche article

Afin de vous faciliter le travail, le code PHP ci-dessous vous est proposé :

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
4 <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5 <title>Rechercher un article dans le magasin</title>
6 </head>
7 <body>
8 <form action= "<?php echo \(_SERVER['PHP_SELF']?>" method="post" enctype="application/x-
www-form-urlencoded">
9 <fieldset><legend><b>Rechercher un article en magasin</b></legend>
10 Mot-cl&#233;: </td><td><input type="text" name="motcle" size="40" maxlength="40"
value="<?php \)_POST['motcle']?>"/>
11 Dans la cat&#233;gorie : <select name="categorie">
12 <option value="tous">Tous</option>
13 <option value="informatique">Informatique</option>
14 <option value="divers">Divers</option>
15 </select>
16 Trier par : <select name="tri">
17 <option value="prix">Prix</option>
18 <option value="categorie">Cat&#233;gorie</option>
19 <option value="id_article">Code</option>
20 </select>
21 En ordre: Croissant<input type="radio" name="ordre" value="ASC" checked="checked"/>
22 D&#233;croissant<input type="radio" name="ordre" value="DESC" />
23 Envoyer</td><td><input type="submit" name="" value="OK"/>
24 </fieldset>
25 </form>
26 <?php
27 if(!empty(\(_POST['motcle'])) {
28 \)idcom =new mysqli ("localhost","root","", "magasin");
29 \(motcle=(\)_POST['motcle']);
30 \(categorie=(\)_POST['categorie']);
31 \(ordre=(\)_POST['ordre']);
32 \(tri=(\)_POST['tri']);
33 //Requête SQL
34 \(reqcategorie=(\)_POST['categorie']=="tous")?"":"AND categorie='\(categorie'";
35 \)requete="SELECT id_article AS 'Code article',designation AS 'Description',prix,
36 categorie AS 'Cat&#233;gorie' FROM article WHERE lower(designation)
37 LIKE'%\(motcle%'".\)reqcategorie."ORDER BY \(tri \)ordre";
38 \(result=\)idcom–>query(\(requete);
39 if(!\)result) {
40 echo "Lecture impossible";
41 }
42 else{
43 \(nbcol=\)result–>field_count;
44 \(nbart=\)result–>num_rows;
45 \(titres=\)result–>fetch_fields();
46 echo "<h3> Il y a \(nbart articles correspondant au mot-cl&#233; : \)motcle</h3>";
47 //Affichage des titres du tableau
48 echo "<table border=\"1\"> <tr>";
49 foreach(\(titres as \)nomcol=>\(val) {
50 echo "<th>", \)titres[\(nomcol]–>name ,"</th>";
51 }
52 echo "</tr>";
53 //Affichage des valeurs du tableau
54 for(\)i=0;\(i<\)nbart;\(i++) {
55 \)ligne=\(result–>fetch_row();
56 echo "<tr>";
57 for(\)j=0;\(j<\)nbcol;\(j++) {
58 echo "<td>",\)ligne[\(j],"</td>";
59 }
60 echo "</tr>";
61 }
62 echo "</table>";
63 \)result–>close();
64 \(idcom–>close();
65 }
66 }
67 ?>
68 </body>
69 </html>

En vous servant du code ci-dessus et de vos connaissances en programmation web, répondre aux questions suivantes :

I/ Programmation HTML et JavaScript /3pts

1. Définir l’expression : Service web. (0.5pt)
2. Écrire le code HTML qui permet d’insérer le contenu du formulaire (ligne 10 à 23) dans un tableau de 5 lignes et 2 colonnes. (1.5pt)
3. Écrire le code JavaScript qui permet, après un clic sur le bouton OK, de tester si le champ de saisie Mot-clé est bien renseigné par une chaine de caractère et d’afficher le message « Saisissez un mot-clé valide » dans le cas où aucune valeur n’est entrée ou qu’elle soit erronée. (1pt)

II/ Programmation PHP /7pts

1. Nommer deux exemples d’environnement intégré de développement web. (0.5pt)
3. Décrire la procédure permettant de démarrer et d’arrêter d’un service web. (0.5pt)
4. Déterminer le format à utiliser pour enregistrer ce code. Justifier votre réponse. (0.5pt)
5. Identifier dans ce code :
5.1. Les numéros correspondants au début et à la fin du code PHP. (0.5pt)
5.2. Une variable de type booléen. (0.5pt)
6. Donner le rôle de la variable : \)_POST[‘motcle’]. (0.5pt)
7. Donner respectivement le rôle de la ligne 38 et la ligne 64. (0.5pt)
8. Donner le rôle de field_count, num_rows et fetch_fields() dans ce code. (1.5pt)
9. Écrire la requête qui crée la base de données manipulée dans ce code. (0.5pt)
10. Réécrire le bout de code allant de la ligne 54 à la ligne 61 en utilisant exclusivement la boucle while(). (1.5pt)

Partie II : Programmation procédurale en C /10pts

Soit le programme C ci-dessous qui permet de produire partiellement une facture

1: #include <stdio.h>
2: #include <stdlib.h>
3: #define Max 4
4: struct produit {
5: char designation[20];
6: int qantite ;
7: float prix;
8: float montant;
9: };
10: struct produit list[Max];
11: int i;
12: int main() {
13: for (i = 0; i < Max; i++) {
14: printf("\nEntrez le nom du produit : ");
15: scanf("%20s", list[i].designation);
16: printf("Entrez la quantité souhaitée: ");
17: scanf("%10s", list[i].quantite);
18: printf("Entrez le prix unitaire du produit : ");
19: scanf("%10s", list[i].prix);
20: list[i].montant= list[i].quantite* list[i].prix ;
21: }
22: printf("\n\n");
23: for (i = 0; i < Max; i++) {
24: printf("\nLes produits de la facture sont : %s %d %f = %f FCFA\n", list[i].designation,
list[i].quantite, list[i].prix, list[i].montant);
25: }
26: return 0;
27: }

En vous servant du code ci-dessus et de vos connaissances en programmation C, répondre aux questions suivantes :
1. Définir le terme Programme. (0.5pt)
2. Décrire les deux bibliothèques utilisées dans ce code. (1pt)
3. Donner le rôle de :
3.1. La ligne 3. (0.5pt)
3.2. La ligne 10. (0.5pt)
3.3. La ligne 22. (0.5pt)
4. Exécuter pas à pas ce programme pour les valeurs suivantes : (2.5pts)
list[0]= [Ordinateur, 5, 250000]
list[1]= [Disque dur externe, 20, 40000]
list[2]= [Souris optique, 12, 12000]
list[3]= [Anti-virus, 5, 25000]
5. Définir le prototype de la fonction somme() qui permettra de calculer le montant total des de la facture. (2.5pts)
6. Indiquer à quel niveau sera placé la déclaration de la fonction somme() définie précédemment. (0.5pt)
7. Donner la différence entre une variable globale et une variable locale. (0.5pts)
8. Réécrire le bout de code allant de la ligne 23 à la ligne 25 en utilisant la boucle while(). (1pt)

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

close