Les weblogs ou "blogs" prolifèrent
à l'heure actuelle, y
compris en entreprise, et avec eux une véritable communauté
se créé autour de centres d'intérêts tout
aussi divers que potentiellement passionnants.
Nous vous proposons ici de construire le vôtre, à l'aide
de PHP4 et de MySQL. Certes, il existe sur le "marché"
une poignée d'excellentes solutions gratuites (dont Dotclear
ou b2evolution
par exemple), mais le but est ici d'apprendre, non de disposer d'un
"tout en un".
Notez bien que, pour des questions de simplicité, de nombreux
tests de sécurité ont été omis. Ce code
ne peut pas et ne doit pas servir pour un weblog réel, il ne
peut servir que de "première marche".
Objectif
Le weblog que nous vous proposons de
construire ici est des plus simples - il s'agira plus d'un squelette
que d'une solution complète.
Vu de loin, un weblog peut passer pour une sorte de Livre d'Or,
sauf que seul le possesseur du site peut y faire des entrées
(ou "notes"). Qui plus est, le weblog dispose d'une section
administration qui permet de modifier et effacer ces notes... Nous
allons stipuler de suite les caractéristiques de notre application
:
- Les 10 dernières notes sont affichées au visiteur
à l'arrivée sur le site, par ordre décroissant
de date de création (les plus récentes en premier)
: /index.php.
- Chaque note dispose d'un permalien : nous utiliserons ici le numéro
d'ID d'une note. Le permalien prendra cette forme : /index.php?id=15.
- La page d'administration listera toutes les notes, et permettra
de créer, modifier ou supprimer une note : /admin/index.php.
- Chaque note peut être rendue invisible (état "fermé")
jusqu'à ce que l'auteur décide de la publier (état
"ouvert").
Définition
de la base
Voici à quoi ressemblent les champs de notre base :
CREATE TABLE `jlog_note`
(
`note_id`
int(4) unsigned NOT NULL auto_increment,
`note_titre`
varchar(255) NOT NULL default '',
`note_texte`
text NOT NULL,
`note_date`
datetime NOT NULL default '0000-00-00 00:00:00',
`note_etat`
enum('ouvert','fermé') NOT NULL default 'ouvert',
UNIQUE
KEY `note_id` (`note_id`),
FULLTEXT
KEY `note_titre` (`note_titre`,`note_texte`)
)
Accueil général
Concentrons-nous pour commencer sur la page d'accueil : nous avons
besoin de deux choses : une fonction pour afficher les dernières
notes, et une pour afficher la note en cours.
Nous allons en profiter pour dépoussiérer un peu nos
connaissances en Objet, mais sans plonger trop loin...
[fichier globals.inc.php]
<?php
// GESTION DE LA BASE DE DONNEES
$db_host = "localhost";
$db_user = "root";
$db_name = "test";
$db_pass = "";
$connexion = mysql_connect($db_host, $db_user, $db_pass);
$db = mysql_select_db($db_name, $connexion);
class Note
{
var
$note_id, $note_titre, $note_texte, $note_date, $note_etat;
function
Note()
{
$this->id
= -1;
}
function
get_note($id)
{
$sql
= "SELECT note_id, note_titre, note_texte, note_date, note_etat
";
$sql.=
"FROM jlog_note ";
$sql.=
"WHERE note_id = '$id';";
$res
= mysql_query($sql);
if
(mysql_num_rows($res) == 0)
{
$this->id
= -1;
}
else
{
$this->id
= mysql_result($res, 0, "note_id");
$this->titre
= mysql_result($res, 0, "note_titre");
$this->texte
= mysql_result($res, 0, "note_texte");
$this->date
= mysql_result($res, 0, "note_date");
$this->etat
= mysql_result($res, 0, "note_etat");
}
}
function
get_note_last10()
{
$sql
= "SELECT note_id, note_titre, note_texte, note_date ";
$sql.=
"FROM jlog_note ";
$sql.=
"WHERE note_etat = 'ouvert' ";
$sql.=
"ORDER BY note_date DESC ";
$sql.=
"LIMIT 10;";
$res
= mysql_query($sql);
if
(mysql_num_rows($res) == 0)
{
$this->id
= -1;
}
else
{
while
($note = mysql_fetch_object($res))
{
?>
<h3><?=$note->note_titre;?></h3>
<?=$note->note_texte;?><br>
<h6>Posté le <a href="<?=$_SERVER['PHP_SELF'];?>
?id=<?=$note->note_id;?>">
<?=$note->note_date;?></a></h6>
<hr>
<?
}
}
}
[...]
Au début de notre fichier globals.inc.php,
nous définissons sommairement l'accès à la
base de données, puis créons une classe Note(),
qui nous donnera un objet utilisable tout du long de notre code.
Nous définissons en premier lieu deux méthodes : get_note_by_id()
qui renvoie notre note sous forme d'objet, et get_note_last10()
qui renvoie, moins proprement, directement le code HTML générant
la page d'accueil. Ce n'est pas idéal, mais cette méthode
n'étant utilisée qu'en un seul endroit, nous nous
en contenterons pour le moment.
Un second fichier, fonctions.inc.php,
offrira les fonctions nécessaires à la bonne marche
du weblog.
Page 1 | 2 |
3 | 4
|