Td corrigé Correction TP n°4 PHP MySQL - Free.fr pdf

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 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 :

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 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ètresRôleFonctions$hostle nom du serveur MySQLmysql_connect()$usernamele nom de l’utilisateurmysql_connect()$passwordle mot de passe de l’utilisateurmysql_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 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 $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 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



 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 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