Correction TP n°4 PHP MySQL - Free.fr
Correction TP n°4 PHP-MySQL : gestion de revues. Enoncé ..... echo "<tr><td
colspan=3 bgcolor=#666699><font color=white><b>Liste des revues ...
part of the document
onnées (page 6)config.inc.php(Facultatif) les variables de configuration de lapplication
2 . La base de données
Dans un premier temps, on va écrire les deux fonctions suivantes dans la base de données :
FonctionsRôlefunction ConnecterBase($base)permet la connexion au serveur MySQL pour la base de données $basefunction FermerBase($db)ferme la connexion $db
( Les fonctions dinterrogation et dextraction des données ne sont pour linstant pas implémentées dans ce fichier et sont donc à la charge des fonctions principales de lapplication.
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 lensemble des erreurs en provenance de la base de données.
Solution n°1 (retenue) : Cest la solution la plus simple pour le débuggage.
En cas derreur, on arrête lexécution du script et on affiche lerreur 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 : Cest la solution la meilleure solution pour une application finale.
En cas derreur, on renvoie un code derreur que lon traite grâce à une fonction à écrire.
Généralement, cette fonction affiche une page derreur personnalisée.
On empêche lenvoie dune message derreur ou de warning vers le navigateur en préfixant les appels dun @.
( les paramètres de connexion
Les paramètres indispensables des fonctions MySQL utilisées dans lapplication :
ParamètresRôleFonctions$hostle nom du serveur MySQLmysql_connect()$usernamele nom de lutilisateurmysql_connect()$passwordle mot de passe de lutilisateurmysql_connect()$basele nom de la base de donnéesmysql_select_db()$tablele nom de la tablemysql_query()
Il est conseillé de les définir à un seul endroit afin de les adapter facilement en fonction du contexte de lapplication.
On a lhabitude dutiliser un fichier config.inc.php pour ce type de paramètres.
3 . Le squelette de lapplication
Lapplication permet de gérer les 4 fonctions principales à partir dun seul script appelé par le client : revues.php.
Ce script doit donc :
recevoir en paramètre (dans lURL) lopération à effectuer (une des 4 fonctions princiaples)
traiter lopération en appelant la fonction principale adéquate
permettre au client de choisir une des 4 fonctions : il faut donc un menu.
La variable $opSignification"Ajouter" ou add"Ajouter des revues"Modifier" (ou "modify")Modifier des revues existantes"Supprimer" ou "delete"Supprimer des revues existantesnon affectée ou contenu différent des choix ci-dessusAfficher les revues disponibles
Afficher le menu de lapplication
Lenvoie de lopé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 lopération :
lidentifiant de la revue ($revueid)
le nom de la revue ($nom)
Exemple : revues.php
4 . Les fonctions principales
Les 4 fonctions principales assurent le traitement des requêtes SQL correspondantes :
Requêtes SQLFonctions 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 revueid='$revueId'"Supprimer des revues 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 lopération a été réalisée avec succès (TRUE) ou sil 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 lapplication