Mission Carthage Français

الرئيسية › الامتحانات › باكالوريا علوم الإعلامية

Devoir pratique STI n°7 : le site de la bibliothèque, vérifier un livre en JavaScript, lister et ajouter des livres en PHP et MySQL

باكالوريا علوم الإعلامية، الثلاثي الثاني. المدّة: ساعة. على 20 نقطة.

اكتب البرامج متاعك بـ Python ولا بالـ algorithme وثبّت فيهم في بلاصتهم، وبعد حلّ الإصلاح تمرين بتمرين.

Le travail se fait sur ordinateur, avec un serveur local (XAMPP) : chaque fichier est enregistré sous le nom donné, dans le même dossier. Les deux exercices construisent le site de la bibliothèque : la page ajout.html vérifie un nouveau livre avec le fichier controle.js de l'exercice 1, puis l'envoie à la page ajout.php de l'exercice 2 ; ses liens mènent à la liste livres.php. Barème sur 20 points.

الموضوع مكتوب بالفرنسي، كيما في القسم.

Exercice 1 : vérifier le livre en JavaScript (8 pts)

Avant d'envoyer le formulaire d'ajout d'un livre de la page ajout.html (donnée à l'exercice 2), sa fonction verifier() (onsubmit) vérifie les champs avec deux fonctions JavaScript, à écrire dans le fichier controle.js (sans expression régulière) :

  • 1) Écrire la fonction titreValide(t) qui renvoie true si le titre t, sans les espaces du début et de la fin (trim), n'est pas vide et a au plus 60 caractères ; sinon false (4 pts).
  • 2) Écrire la fonction anneeValide(a) qui reçoit le texte saisi et renvoie true s'il est formé d'exactement 4 chiffres et que l'année est comprise entre 1800 et 2026 ; sinon false (4 pts).

Exemples : titreValide(" Agar ") donne true, titreValide(" ") donne false, anneeValide("1955") donne true, anneeValide("19a5") donne false.

Exercice 2 : les pages PHP de la bibliothèque (12 pts)

La bibliothèque garde ses livres dans la base MySQL biblio, créée par le fichier base.sql. La connexion à la base est dans connexion.php, que chaque page inclut avec require. La page ajout.html, reliée à controle.js (exercice 1), envoie un nouveau livre à ajout.php avec la méthode POST ; ses deux liens ouvrent livres.php.

CREATE DATABASE biblio;
USE biblio;
CREATE TABLE auteur (
  id INT PRIMARY KEY,
  nom VARCHAR(40) NOT NULL
);
CREATE TABLE livre (
  id INT AUTO_INCREMENT PRIMARY KEY,
  titre VARCHAR(60) NOT NULL,
  annee INT NOT NULL,
  genre VARCHAR(20) NOT NULL,
  id_auteur INT NOT NULL,
  FOREIGN KEY (id_auteur) REFERENCES auteur(id)
);
INSERT INTO auteur VALUES (1, 'Abou el Kacem Chebbi'), (2, 'Victor Hugo'), (3, 'Albert Memmi');
INSERT INTO livre (titre, annee, genre, id_auteur) VALUES
  ('Les Chants de la vie', 1955, 'Poésie', 1),
  ('Les Misérables', 1862, 'Roman', 2),
  ('La Statue de sel', 1953, 'Roman', 3),
  ('Les Contemplations', 1856, 'Poésie', 2),
  ('Agar', 1955, 'Roman', 3);
<?php
$cnx = mysqli_connect("localhost", "root", "", "biblio");
?>
<p><a href="livres.php?genre=Roman">Nos romans</a> - <a href="livres.php?genre=Poésie">Notre poésie</a></p>
<form action="ajout.php" method="post" onsubmit="return verifier()">
  <input type="text" name="titre" id="titre">
  <input type="text" name="annee" id="annee">
  <input type="text" name="genre" id="genre">
  <input type="number" name="id_auteur" id="id_auteur">
  <input type="submit" value="Ajouter">
</form>
<script>
  function verifier() {
    if (!titreValide(document.getElementById("titre").value)) {
      alert("Titre invalide");
      return false;
    }
    if (!anneeValide(document.getElementById("annee").value)) {
      alert("Année invalide");
      return false;
    }
    return true;
  }
</script>
<script src="controle.js"></script>
  • 1) Écrire la page livres.php qui reçoit un genre par la méthode GET (paramètre genre). Si le genre manque ou est vide, elle affiche « Genre non indiqué ». Sinon elle affiche le titre « Genre : Roman » (avec le genre reçu), puis un tableau HTML du titre et du nom de l'auteur des livres de ce genre, par ordre alphabétique du titre, puis leur nombre sous la forme « 3 livre(s) » ; si aucun livre n'a ce genre, « Aucun livre » remplace le tableau et le nombre (6 pts).
  • 2) Écrire la page ajout.php. Si l'année reçue n'est pas un nombre entier entre 1800 et 2026, elle affiche « Année invalide » ; sinon, si aucun auteur n'a l'identifiant reçu, elle affiche « Auteur inconnu » ; sinon elle ajoute le livre et affiche « Livre ajouté (n°6) » avec le numéro donné par la base (6 pts).

Exemple : avec la base donnée, livres.php?genre=Poésie affiche Genre : Poésie, les lignes Les Chants de la vie Abou el Kacem Chebbi et Les Contemplations Victor Hugo, puis 2 livre(s).

الإصلاح المفصّل

الإصلاح متاع الامتحان هذا للمشتركين. فيه التحليل، والـ algorithme بالنوطاسيون التونسية، والبرنامج Python المجرّب، والغلطات اللي ترجع برشا في كل تمرين. بحساب بلاش، تنجم تحلّ 3 إصلاحات تختارهم إنت.

كل الإصلاحات حتى الفرض التأليفي3 أشهر بـ 20 د، العرض حتى 30 نوفمبر 2026 ابعثها لبابا ولّا ماما يخلّصو

موضوع أصلي كتبناه لـ Mission Carthage، على نفس الشكل متاع امتحانات القسم. الأستاذ متاعك يبقى هو المرجع.

البرنامج الكل: باكالوريا علوم الإعلامية · عاود اقرا الكور · الامتحانات الكل