[correction du code le 16 mars 2003]
Ajoutons-nous
une méthode pour insérer un nouveau contenu:
(fichier global.inc.php, suite)
...
function insert_article()
{
$sql = "INSERT INTO articles (titre, contenu,
auteur) ";
$sql .= "VALUES ('$this->titre', '$this->contenu',
'$this->auteur');";
if (mysql_query($sql))
{
$this->id = mysql_insert_id();
}
else
{
$this->id = -1;
}
}
Cette fois, notre test de réussite porte directement sur
la valeur renvoyée par mysql_query()
(TRUE ou FALSE).
En fonction de ce test, la valeur d'id
serait soit l'id qui vient d'être
créé pour cette nouvelle entrée (via mysql_insert_id()),
soit notre code d'erreur, "-1".
Notre code PHP serait légèrement plus long:
(fichier admin_article_crea.php)
<?php
include ("/.global.inc.php");
...
$newarticle = new article();
$newarticle->titre = "Willy Wonka lance un concours!";
$newarticle->contenu = "Les enfants qui découvriront
un ticket dans un chocolat Wonka seront invités à
visiter la chocolaterie!";
$newarticle->auteur = "Roald Dahl (r.dahl@tchocky.co.uk)";
$newarticle->insert_article();
if ($newarticle->id <> -1)
{
?>Le nouvel article a bien été créé.<?
}
else
{
?>Un problème est survenu lors de la création
de l'article.<?
}
?>
Après avoir instancié la classe article
sous le nom $newarticle, nous assignons
à ses attributs titre, contenu
et auteur les valeurs que nous voulons
entrer dans la base (id s'incrémente
automatiquement, et la date sera celle de l'entrée dans la
base). Enfin, nous faisons appel à la méthode d'insertion.
Celle-çi renverra un numéro d'id,
qui nous permet de déterminer la réussite de l'action,
et d'agir en conséquence.
Suite logique, une méthode pour mettre à jour notre
article:
(fichier global.inc.php, suite)
...
function maj_article()
{
$sql = "UPDATE articles SET ";
$sql .= "titre = '$this->titre', ";
$sql .= "contenu = '$this->contenu', ";
$sql .= "auteur = '$this->auteur' ";
$sql .= "WHERE id = '$this->id';";
if(mysql_query($sql))
{
$this->id = $this->id;
}
else
{
$this->id = -1;
}
}
Le code ne différe pas beaucoup de la méthode d'insertion
d'un nouvel article, mis à part qu'en cas de réussite,
l'id de l'article reste tout simplement
la même. Cela se retrouve dans le code PHP, qui lui non plus
ne présente pas de grande différence avec le code
précédent:
(fichier admin_article_mod.php)
<?php
include ("/.global.inc.php");
...
$modarticle = new article();
$modarticle->titre = "Willy Wonka lance un grand concours!";
$modarticle->contenu = "Les cinq heureux enfants qui découvriront
un ticket d'or dans un chocolat Wonka seront invités à
visiter la mystérieuse et merveilleuse chocolaterie!";
$modarticle->auteur = "Roald Dahl (r.dahl@tchocky.co.uk)";
$modarticle->maj_article();
if ($modarticle->id <> -1)
{
?>L'article "<?=$modarticle->titre;?>"
a bien été modifié.<?
}
else
{
?>Un problème est survenu lors de la modification
de l'article.<?
}
?>
Enfin, la méthode de destruction d'article n'est guère
plus compliquée à mettre en oeuvre:
(fichier global.inc.php, suite et fin)
...
function efface_article($id)
{
$sql = "DELETE FROM articles WHERE id =
'$id';";
if (mysql_query($sql))
{
$this->id = $id;
}
else
{
$this->id = -1;
}
}
} // accolade de fermeture de la classe
?>
...et le code
PHP attenant...
(fichier admin_article_efface.php)
<?
include ("./global.inc.php");
...
monArticle = new article();
monArticle->efface_article(5);
...
if
($monArticle->id <> -1)
{
?>L'article a bien été effacé.<?
}
else
{
?>Un problème est survenu lors de la suppression
de l'article.<?
}
?>
De nombreuses autres méthodes peuvent bien entendu être
créées en fonction des besoins, le tout est de prévoir
les exceptions possibles et de gérer ces exceptions de manière
intelligente et efficace... Ceux
d'entre vous qui seraient plus intéressés par une
classe de gestion générale de MySQL devraient se pencher
sur celle
créée par Nicolas Hoizey.
Page 1 | 2
|