Correction TP n°4 PHP MySQL - Free

REQUÊTES : EXERCICES SQL ET QBE : Niveau de difficulté A (très facile).
Apprentissages : Une seule table. Critère unique = ordres simples : SELECT,
FROM, ...

Part of the document


Correction TP n°4 PHP-MySQL : gestion de revues Enoncé Ecrire l'application qui réalisera les fonctions de base suivantes :
ajouter des revues, modifier des revues existantes, supprimer des revues
existantes et afficher les revues disponibles. On structurera son
application en utilisant des fichiers séparés. Rappel : la table revues
[pic] Analyse - Conception
1 . A la lecture de l'énoncé, ( on dénombre donc 4 fonctions principales à réaliser par l'application : |Fonctions principales |Prototype PHP |
|Ajouter des revues |function AjouterRevue($nomRevue) |
|Modifier des revues |function ModifierRevue($revueId, $nomRevue) |
|existantes | |
|Supprimer des revues |function SupprimerRevue($revueId) |
|existantes | |
|Afficher les revues |function ListerRevues() |
|disponibles | |
( on structure l'application en fichiers séparés |Nom du fichier |Rôle |
|revues.php |le script principal (page 6) |
|revues.inc.php |les fonctions de service pour la gestion des revues (page|
| |7) |
|mysql.inc.php |les fonctions de service pour la gestion de la base de |
| |données (page 6) |
|config.inc.php |(Facultatif) les variables de configuration de |
| |l'application | 2 . La base de données Dans un premier temps, on va écrire les deux fonctions suivantes dans la
base de données : |Fonctions |Rôle |
|function ConnecterBase($base) |permet la connexion au serveur MySQL pour |
| |la base de données $base |
|function FermerBase($db) |ferme la connexion $db |
( Les fonctions d'interrogation et d'extraction des données ne sont pour
l'instant pas implémentées dans ce fichier et sont donc à la charge des
fonctions principales de l'application. Pour rappel : > Interrogation : $result = mysql_query($requete); > Extraction : $ligne=mysql_fetch_array($result) ou
$ligne=mysql_fetch_row($result) ou $ligne=mysql_fetch_object($result)
Situations particulières à gérer : ( les erreurs
Contrainte : il faut traiter l'ensemble des erreurs en provenance de la
base de données.
Solution n°1 (retenue) : C'est la solution la plus simple pour le
débuggage.
En cas d'erreur, on arrête l'exécution du script et on affiche l'erreur en
utilisant : mysql_errno() et mysql_error(). Exemple :
$error = "Erreur mysql_select_db() n°".mysql_errno($connect)." :
".mysql_error($connect);
die($error);
Solution n°2 : C'est la solution la meilleure solution pour une application
finale.
En cas d'erreur, on renvoie un code d'erreur que l'on traite grâce à une
fonction à écrire.
Généralement, cette fonction affiche une page d'erreur personnalisée.
On empêche l'envoie d'une message d'erreur ou de warning vers le navigateur
en préfixant les appels d'un @.
( les paramètres de connexion Les paramètres indispensables des fonctions MySQL utilisées dans
l'application : |Paramètres |Rôle |Fonctions |
|$host |le nom du serveur MySQL |mysql_connect() |
|$username |le nom de l'utilisateur |mysql_connect() |
|$password |le mot de passe de l'utilisateur |mysql_connect() |
|$base |le nom de la base de données |mysql_select_db() |
|$table |le nom de la table |mysql_query() | Il est conseillé de les définir à un seul endroit afin de les adapter
facilement en fonction du contexte de l'application. On a l'habitude d'utiliser un fichier config.inc.php pour ce type de
paramètres. 3 . Le squelette de l'application L'application permet de gérer les 4 fonctions principales à partir d'un
seul script appelé par le client : revues.php. Ce script doit donc : > recevoir en paramètre (dans l'URL) l'opération à effectuer (une des 4
fonctions princiaples)
> traiter l'opération en appelant la fonction principale adéquate
> permettre au client de choisir une des 4 fonctions : il faut donc un
menu. |La variable $op |Signification |
|"Ajouter" ou add" |Ajouter des revues |
|"Modifier" (ou "modify") |Modifier des revues existantes |
|"Supprimer" ou "delete" |Supprimer des revues existantes |
|non affectée ou contenu différent |Afficher les revues disponibles |
|des choix ci-dessus |Afficher le menu de l'application | L'envoie de l'opération au script revues.php peut se faire : > soit par une balise
> soit par un formulaire Sinon, le script reçoit aussi en fonction de l'opération : > l'identifiant de la revue ($revueid)
> le nom de la revue ($nom) Exemple : revues.php [pic]
4 . Les fonctions principales Les 4 fonctions principales assurent le traitement des requêtes SQL
correspondantes : |Requêtes SQL |Fonctions principales |
|"INSERT INTO $table VALUES('', '$nomRevue')" |Ajouter des revues |
|"DELETE FROM $table WHERE revueid='$revueId'" |Modifier des revues |
| |existantes |
|"UPDATE $table SET nom='$nomRevue' WHERE |Supprimer des revues |
|revueid='$revueId'" |existantes |
|"SELECT * FROM $table" |Afficher les revues |
| |disponibles | Seule la fonction ListerRevues() nécessite un traitement particulier et un
affichage vers le navigateur, sinon les 3 autres fonctions ont traitement
identique. Les fonctions doivent obligatoirement retourner un code d'état indiquant si
l'opération a été réalisée avec succès (TRUE) ou s'il y a eu une erreur
(FALSE).
Code générique : function CodeGenerique()
{
$retour = false; $db = ConnecterBase(); // au choix : ici ou ailleurs $table = "revues";
$requete = "bla bla SQL";
$result = mysql_query($requete);
if($result)
{
// SI SELECT ALORS faire un traitement des données reçues
// SINON :
$retour = true;
}
else
{
$error = "Erreur mysql_query(\"$requete\") n°".mysql_errno()." :
".mysql_error();
die($error);
} FermerBase($db); // au choix : ici ou ailleurs
return $retour;
}
Les sources de l'application