Mission Carthage العربية
اقرا الصفحة هذي بالتونسي

Accueil › Devoirs › Bac SI

Devoir pratique STI n°10 : la boutique Info Matériel, vérifier une commande en JavaScript, l'enregistrer en PHP et MySQL

Bac Sciences de l'informatique, 3ème trimestre. Durée : 1 heure. Sur 20 points.

É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 la commande en ligne de la boutique Info Matériel : la page commande.html affiche le prix et vérifie la commande avec le fichier commande.js de l'exercice 1, puis l'envoie à la page commande.php de l'exercice 2. Barème sur 20 points.

Exercice 1 : vérifier la commande dans le navigateur (8 pts)

La boutique de matériel informatique Info Matériel prend les commandes en ligne avec la page commande.html suivante, reliée au fichier commande.js. Ses fonctions afficherPrix() (quand le produit ou la quantité change) et verifier() (avant l'envoi) sont données dans la page ; elles utilisent deux fonctions JavaScript, à écrire dans commande.js.

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>Commander</title>
</head>
<body>
  <h1>Info Matériel : commander</h1>
  <form action="commande.php" method="post" onsubmit="return verifier()">
    <label for="client">Client</label>
    <select id="client" name="client">
      <option value="1">Amel</option>
      <option value="2">Bilel</option>
      <option value="3">Chiraz</option>
      <option value="4">Dhia</option>
    </select>
    <label for="produit">Produit</label>
    <select id="produit" name="produit" onchange="afficherPrix()">
      <option value="1">Clavier</option>
      <option value="2">Souris</option>
      <option value="3">Casque</option>
      <option value="4">Clé USB</option>
    </select>
    <label for="qte">Quantité</label>
    <input type="number" id="qte" name="qte" value="1" onchange="afficherPrix()">
    <input type="submit" value="Commander">
  </form>
  <p id="prix"></p>
  <p id="message"></p>
  <p><a href="clients.php">Clients sans commande</a></p>
  <script>
    var prix = [35, 15, 60, 20];
    var stocks = [10, 4, 0, 25];
    function afficherPrix() {
      var i = document.getElementById("produit").selectedIndex;
      var q = Number(document.getElementById("qte").value);
      document.getElementById("prix").innerHTML = "Prix : " + prixTotal(prix[i], q) + " DT";
    }
    function verifier() {
      var i = document.getElementById("produit").selectedIndex;
      var r = verifierCommande(Number(document.getElementById("qte").value), stocks[i]);
      document.getElementById("message").innerHTML = r;
      return r == "OK";
    }
  </script>
  <script src="commande.js"></script>
</body>
</html>

Exemples : verifierCommande(3, 10) donne OK, verifierCommande(0, 10) donne Quantité invalide ; prixTotal(35, 2) donne 70 et prixTotal(20, 10) donne 180.

Exercice 2 : les pages PHP des commandes (12 pts)

La boutique garde ses produits, ses clients et leurs commandes dans la base MySQL boutique, créée par le fichier base.sql. Le formulaire de la page commande.html (exercice 1) envoie les champs client, produit (les identifiants) et qte à la page commande.php avec la méthode POST ; son lien ouvre clients.php. La connexion à la base est dans connexion.php.

CREATE DATABASE boutique;
USE boutique;
CREATE TABLE produit (
  id INT PRIMARY KEY,
  nom VARCHAR(30) NOT NULL,
  prix INT NOT NULL,
  stock INT NOT NULL
);
CREATE TABLE client (
  id INT PRIMARY KEY,
  nom VARCHAR(30) NOT NULL
);
CREATE TABLE commande (
  id INT AUTO_INCREMENT PRIMARY KEY,
  id_client INT NOT NULL,
  id_produit INT NOT NULL,
  qte INT NOT NULL,
  FOREIGN KEY (id_client) REFERENCES client(id),
  FOREIGN KEY (id_produit) REFERENCES produit(id)
);
INSERT INTO produit VALUES (1, 'Clavier', 35, 10), (2, 'Souris', 15, 4), (3, 'Casque', 60, 0), (4, 'Clé USB', 20, 25);
INSERT INTO client VALUES (1, 'Amel'), (2, 'Bilel'), (3, 'Chiraz'), (4, 'Dhia');
INSERT INTO commande (id_client, id_produit, qte) VALUES (1, 1, 2), (1, 4, 5), (3, 2, 1);
<?php
$cnx = mysqli_connect("localhost", "root", "", "boutique");
?>

Exemple : avec la base donnée, la commande client=2, produit=2, qte=5 affiche Stock insuffisant, car il ne reste que 4 souris.

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.

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 paie

Sujet 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