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
Écris tes programmes en Python ou en algorithme et vérifie-les tout de suite, puis ouvre la correction exercice par exercice.
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).
Correction détaillée
La correction de ce devoir est réservée aux abonnés. Elle donne l'analyse, l'algorithme en notation tunisienne, le programme Python vérifié et les erreurs fréquentes de chaque exercice. Avec un compte gratuit, tu peux ouvrir 3 corrections de ton choix.
Connecte-toi d'abord : créer un compte ou me connecter.
Tu as encore 0 correction(s) gratuite(s) à utiliser.
Il te faut un abonnement actif pour les autres corrections. Voir les tarifs ou demander un code sur WhatsApp, Instagram ou Facebook.
Les corrections gratuites de cet appareil ont déjà été utilisées, avec ce compte ou un autre : chaque appareil a droit à 3 corrections gratuites, quel que soit le nombre de comptes. Pour les autres corrections, il faut un abonnement. Voir les tarifs ou écrire sur WhatsApp.
Mission Carthage est en période de test : le site s'ouvre avec un code d'accès. Demande ton code sur WhatsApp, Instagram ou TikTok, puis tape-le sur missioncarthage.tn.
Cette correction n'est pas encore publiée. Reviens bientôt.
Impossible de charger la correction. Vérifie ta connexion et réessaie.
Toutes les corrections jusqu'au devoir de synthèse3 mois pour 20 TND, offre jusqu'au 30 novembre 2026 Envoyer à un parent pour qu'il paieSujet original écrit pour Mission Carthage, dans le format d'un devoir pratique d'informatique (4ème Sciences de l'informatique, technologies du web). Ce n'est pas un sujet officiel.
Tout le programme : Bac Sciences de l'informatique · Revoir le cours · Tous les devoirs