Examen 2019-2020
Programmation Web

Soit la base de données "emd1920" accessible via l'adresse FTP @adresse avec le nom d'utilisateur "U" et le mot de passe "PW". L'onglet Concepteur de la page Administration MySQL du serveur donne le schéma relationnel suivant :

bdd
Les enregistrements contenus dans chaque table sont :
Table1
Table3
Table4

Table2

Partie 1 :

Donner le script creer.php qui permet de créer la base de données, de créer les tables et d'y ajouter les enregistrements ci-dessus.

Solution

Partie 2 :

Etant donné le formulaire (intervalle.html) ci-dessous :

---- Val2 =

Affiche1           Affiche2

Donner le code source de ce formulaire.

Solution:

Bien que le code source de ce formulaire n'est pas aussi simple qu'il le parait, toute "bonne" solution indiquant qu'il faut passer les deux valeurs val1 et val2 comme paramètres dans le lien de redirection est acceptée.

Partie 3 :

Donner les scripts affiche1.php et affiche2.php correspondant respectivement aux deux liens du formulaire, sachant qu'à l'exécution, on obtient les résultats suivants :

affiche1.php Solution affiche2.php Solution

Partie 4 :

On a remarqué que la taille de la table Table3 augmente rapidemment dans le temps. Par conséquent, on désire réaliser des sauvegardes périodiques dans des fichiers texte d'une manière optimale (c-à-d sans recopier les enregistrements déjà sauvegardés).

a- Quelle est la structure du fichier texte choisie ?

Une solution:

  1. Chaque champ d'un enregistrement sera placé sur une ligne du fichier texte. Donc, chaque enregistrement est sauvegardé sur 4 lignes successives du fichier.
  2. Soit $N : le prochain numero d'enregistrement qu'il faut sauvegarder ( qui correspond au dernier numero d'enregistrement enregistré + 1); il doit être sauvegardé (dans un fichier à part, par exemple) pour qu'il soit utilisé pour fixer les enregistrements à sauvegarder lors de la prochaine sauvegarde.

b- Donner le script PHP de sauvegarde.

Solution:

Dans ce script, on parcours les enregistrements de la table jusqu'à $N. A partir de cette position, on commence la sauvegarde des enregistrements de la table dans le fichier texte.

c- La clause [RANGE x1,x2] dans une requête SQL signifie qu'on désire obtenir uniquement les enregistrements de numéros compris entre x1 et x2. Expliquer comment améliorer votre script ci-dessus en utilisant cette clause.

Solution:

Si on pose $L= <n'importe quelle valeur potentiellement grande>, alors la clause [Range $N,$L] permet d'avoir les nouveaux enregistrements qu'il faut sauvegarder (dans un même fichier texte utilisé lors de la dernière sauvegarde ou indépendant...).