Document TD et TP SGBD numéro 9
Ce document comme les autres est à lire impérativement. Je ne tolèrerai pas des étudiants qui regardent impassibles leur écran, et posent une question pour laquelle il ont la réponse devant les yeux.
Est considéré acquis
Nous avons un modèle acceptable (Document 6)
Nous savons nous connecter au serveur et la base (Scripts du document 3, commenté au document 8)
Cependant nous ne faisons à ce stade qu’interroger la base avec SELECT
Il nous faut pouvoir insérer des fiches, les supprimer ou les modifier (mise à jour)
I) L’insertion de nouvelles fiches
Un script articulé autour d’un formulaire de saisie et d’un ordre d’insertion dans une table;
en php, suffissent dans le cadre de notre travail :
Le formulaire est classique, comme ci-dessous :
Le code html est comme ceux ci-dessous : Pour le formulaire :
SaisieFichePoursuite.htm (voir plus loin)
Pour le script php d’insertion, modification et suppression :
MiseAJourPoursuite.php (voir plus loin)
Ce script passe partout permet la création de fiche, la modification, la suppression.
Il faut en conclure que les tables ne se remplissent pas de données sans une action programmée.
Aussi,
toutes les tables de notre application ont un formulaire de saisie, et un script d’insertion de modification ou de suppression de fiche
.
II) Quelques scripts en vrac.
A) Insertion / Modification / Suppression de fiches 1) Formulaire de saisie des données :
<html>
<head>
<meta name="TITLE" content="Poursuite d" études="" src="">
<title>Insertion de fiche SGBD "Poursuite d'étude"</title>
</head>
<body>
<br><br>
<form action="MiseAJourPoursuite.php" method="post"><big>Formulaire de Saisie "Poursuite"</big><br><br>
ID: Le champ est typé "numérotation automatique"<br><input type="text" size="7" name="ID"><br>
Diplôme proposé: Dut, Licence, Maîtrise, Cv Etudiant, DU, DESS, Master, Autre, ... mais aussi annuaire.<br>
<select name="Diplome">
<option selected="selected">Annuaire</option>
<option>Iut</option>
<option>Iup</option>
<option>Licence</option>
<option>Licence Pro</option>
<option>Maitrise</option>
<option>Cv Etudiant</option>
<option>DU</option>
<option>DESS</option>
<option>Master</option>
<option>Autre</option>
</select>
<br>
Titre du site:<br> <input name="Titre" size="80"><br>
Adresse du site: Url du site de la formation<br><input name="Adresse" size="80"><br>
Domaine: Info Com, Réseau, Programmation, etc...<br><input name="Domaine" size="80"><br>
Descriptif : retourné par le méta moteur.<br><textarea name="Descriptif" cols="70"
rows="3"></textarea><br>
Commentaire:<font face="Arial,Helvetica"> Appréciation, saisie manuellement.<br>
<textarea name="Commentaire" cols="70" rows="2"></textarea><br>
Département: Src, Gea, Geii, Gmp, Tc<br>
<select name="Departement">
<option selected="selected">SRC</option>
<option>GEA</option>
<option>GMP</option>
<option>GEII</option>
<option>TC</option>
</select>
<br>Ville:<br>
<input name="Ville" type="text" size="40"><br>
<br><br>
<input type="submit" name="inserer" value="Insérer une Fiche">
<input type="submit" name="supprimer" value="Supprimer Fiche">
</form>
</body>
</html>
2) Script de Mise à jour de la table poursuite : MiseAJourPoursuite.php
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Mise à Jour Base PoursuiteEtude Table poursuite Php</title>
<link rel="stylesheet" href="style.css" type="text/css">
</head><body>
<center><H1> Résultat de la mise à jour</H1></center>
<?php
/* Vérifications des droits aux tables "sensibles" */
$Utilisateur = $HTTP_COOKIE_VARS['SerecomPoursuite'];
require ("connexion.php");
$table = "utilisateurs";
$resultat = mysql_query ("select * from $table where CONCAT($table.Login, $table.password) = '$Utilisateur'",
$connexion);
if ($Utilisateur)
{$table = "poursuite"; /* Nom de la table interpellée */
/* Test de type de mise à jour*/
echo "<HR><H2>\n";
if (isset($inserer)) echo "Insertion d'une fiche dans $table : $ID";
elseif (isset($supprimer)) echo "Suppression d'une fiche dans $table : $ID";
echo "</H2><HR>\n";
/*
Affichage des données du formulaire
*/
echo "Fiche: $ID <BR><BR>\n";
/*
Création de l'ordre SQL
*/
if (isset($inserer))
$requete = "INSERT INTO $table (ID, Titre, Adresse, Descriptif, Diplome, Domaine, Commentaire, Departement, Ville) VALUES ('$ID', '$Titre', '$Adresse', '$Descriptif', '$Diplome', '$Domaine', '$Commentaire', '$Departement', UCASE('$Ville'))";
/* if (isset($modifier))
$requete = "UPDATE $table SET ID='$ID', Titre=UCASE('$Titre'), Adresse='$Adresse',
Descriptif='$Descriptif', Diplome='$Diplome', Domaine ='$Domaine', Commentaire='$Commentaire', Departement=UCASE('$Departement'), Ville=UCASE('$Ville')" . "WHERE ID='$ID'"; */
if (isset($supprimer))
$requete = "DELETE FROM $table WHERE ID='$ID'";
/*
Exécution de l'odre SQL
*/
$resultat = mysql_query ($requete, $connexion);
echo "<HR>La requête $requete a bien été réalisée.<BR>\n";
echo "<a href=ConnectPoursuite.php>Retour</a></b>\n";
} else
{
include "AccesAvecDroitsRefus.php";
}
echo "<BR><center><A HREF=Admin.htm>:[Retour vers Admin]:</a></center>\n";
?>
</body>
</html>
III) Résultat
A) Le formulaire où sont saisies les données :
B) Le résultat de l’instruction passée par le script : C’est le if(isset(inserer)) du script qui a été activé. Lisez le code… assez simple.
Notez qu’un cookie sert à vérifier les droits de l’utilisateur qui réalise l’insertion de fiche dans la base. Notez aussi que cet utilisateur connecté apparaît clairement, ici ferrexxxx.
C’est la même solution qui sera utilisée pour la connexion des étudiants, qui peuvent
mémoriser leurs fiches. Le lien Mémoriser la fiche a cette fonction
III) Comment organiser votre travail :
Il doit être bien compris que je ne n’explique pas n fois des modèles, des instructions, etc.
pour lesquelles les schémas ont étés amplement développés en TD. Et qui plus est ont fait l’objet de petits guides de 1 à 9 à ce soir, de quelques pages, que trop d’entre vous ne lise pas.
Il est limite intolérable que certains restent devant leur écran dans l’attente d’une explication individualisée qui se trouve ne ligne dans les petits guides (scripts compris). Je serai très ferme sur ce point.
A) Reprenez le modèle (type Merise, et ses évolutions à ma page ressources) Cette dernière à l’adresse http://serecom.iut-tarbes.fr/ficheferrepatrick.htm Au cas d’aléas du serveur à l’adresse http://patrick.ferre.free.fr/
B) Etudiez le script de création de table en SQL (il contient des « pièges »)
Pour ceux qui ont fait du copier coller, qui était autorisé, il faut quelques correctifs de bon sens.
Certains champs ne sont peut-être pas typés convenablement (taille d’un int(), taille d’un varchar()
… Ce pour que vous compreniez que le script un peu long, était donné parce que ne présentant pas de grand intérêt… sauf à l’étudier pour qu’il corresponde aux besoins.
C) Testez vos scripts en vous inspirant des scripts que je vous « donne » sans perdre de temps au décorum…
Vous avez, en général, la manie de décorer avant d’activer une fonction qui tourne. A ce choix, vous serez perdant. Vous ne pourrez pas terminer votre application. Que n’ai-je vu de très
« belles » interfaces, l’an passé entre autre en flash et des scripts qui ne remplissent pas leurs fonctions. Or, je ne suis pas là pour évaluer vos connaissances en flash.
D) Développez votre application dans l’ordre suivant :
1) Les scripts de consultation en premier (voir l’exemple du document 3)
2) Les scripts de création de fiches ensuite (donc création, modification, suppression). Dans un premier temps sans vous soucier de la sécurité. Il sera temps d’ajouter un module quand vos scripts tourneront
3) Les scripts d’administration de la base… que nous verrons plus tard.
Résumé : Vous devez réaliser :
- Les formulaires (html, ou php) permettant de saisir les données pour chaque table. Dans l’ordre, poursuite, etudiants, utilisateurs, et les suivants.
- Réaliser les scripts de consultation, puis de création de fiche, et de suppression de fiche pour chaque table.
- Réaliser les scripts d’accès gradués en privilèges, pour les étudiants, les utilisateurs (privilégiés) soit les professeurs et l’administration.
- Vous constaterez que ce sont les premiers scripts qui coûtent du travail, les autres en sont des
« copies » conformes. Il n’y a guère de différence entre un script de création de fiche d’un étudiant, et celle d’un professeur, sauf le nom de la table, vous l’aurez compris ?