Créer un gestionnaire d'articles en PHP
Aujourd'hui nous allons voir comment créer un gestionnaire d'articles pour faire un blog, un fil d'actualité ou autre !
Vous pourrez donc :
Écrire des articles depuis une interface, les stocker, les afficher dans un ordre sur une liste, etc...
A la fin de ce tutoriel vous obtiendrez un résultat de ce genre :
Pour commencer correctement, faire le point sur les éléments dont nous avons besoin pour créer tout cela :
- Un hébergement (serveur mutualisé/dédié ou en local)
- Une base de donnée MySQL
- Un support PHP (5.3.3 ou 5.2.X sont ce qu'il y a de mieux)
- Un navigateur c'est mieux
- PhpMyAdmin ou application pour MySQL
Donc pour commencer, occupons nous de nos données et pour cela nous allons nous pencher sur MySQL et une requête à faire soit via un application tiers ou PhpMyAdmin dans la section SQL
CREATE TABLE blog (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL, entry TEXT NOT NULL, date_entered DATETIME NOT NULL)
Pour résumer cette requête, nous créons un table "blog" mais vous pouvez la nommer autrement. Il y a 4 colonnes, la première ID est la colonne qui s'auto incrément pour une meilleur indexation (rapidité de résultat) et qui a une valeur unique (pas de doublon), une colonne TITLE pour le titre de notre article/blog, ENTRY pour le contenu de notre article/blog (texte) et enfin DATE_ENTERED une date de création.
Maintenant passons dans le vif du sujet, le code PHP!
Notre code va se découper en 4 fichiers :
- database.php
- index.php
- show.php
- insert.php
Database.php est un fichier qui sera inclu dans tous les autres fichiers pour ne pas s'amuser à écrire plusieurs fois la même chose. Il permet de se connecter à notre base de données. Il faut y indiquer les informations de connexion qui sont le nom d'utilisateur et son mot de passe enfin le nom de la base de données ou seront stockés les éléments.
Voici à quoi ressemble ce fameux fichier database.php qui ne comprend pas beaucoup de lignes :
<?php
// on se connecte a Mysql
$link = mysql_connect( 'localhost', 'username', 'password');
// si on ne se connecte pas ou die l'execution
if (!$link) die('Erreur de connection');
// on selectionne la base de données
mysql_select_db( 'ma_base_de_donnees' , $link );
?>
Passons maintenant au fichier index.php qui liste tous nos articles disponibles en base de données. Pour le tuto, j'ai fait au plus simple, mais rien n'empêche de rajouter un peu de CSS et de détails comme par exemple le nom de l'auteur, une image... Dans ce fichier beaucoup de commentaires qui vous expliqueront le fonctionnement de chaque ligne pour une meilleur compréhension :
Voici donc index.php :
<?php
// On appelle le fichier de connexion Mysql
require_once 'database.php';
// On recupere tous les articles
try
{
$sql = mysql_query("SELECT * FROM blog");
// on ferme la connexion MySQL
mysql_close();
if (!$sql) throw new Exception( mysql_error() );
}
catch (Exception $e) { die( $e->getMessage() ); }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Tuto</title>
</head>
<body>
<h1>Liste des articles</h1>
<a href="insert.php">Ajouter une donnée</a>
<?php
// On vérifie qu'il y a bien des articles
if( mysql_num_rows( $sql ) )
//on boucle chaque ligne récupérée
while( $row = mysql_fetch_object( $sql ) )
//on affiche les infos de chaque article
echo '<div><a href="show.php?id='.$row->id.'">'.$row->title.'</a></div>';
else
//message au cas ou il y a pas d'article
echo 'Aucun article';
?>
</body>
</html>
Bon, c'est bien beau d'avoir un listing de nos articles mais le plus sympa, c'est de pouvoir les lire au complet, d'où le fichier show.php qui quant à lui permet la lecture d'un article via le passage de son ID dans l'URL. Tout comme le fichier index.php, beaucoup de commentaires pour vous expliquer le fonctionnement de ce fichier (pour pas me répéter, c'est aussi le même procédé dans le futur et dernier fichier )
Voici show.php :
<?php
// On appelle le fichier de connexion Mysql
require_once 'database.php';
// On vérifie les infos qu'on reçoit via un GET
if( !isset($_GET['id']) || !($id = $_GET['id']) || !is_numeric($id) )
die('Erreur d\'acces');
// On recupere l'article via son ID
try
{
$sql = mysql_query("SELECT * FROM blog WHERE id = '".(int)$id."' LIMIT 1");
// on ferme la connexion
mysql_close();
if (!$sql) throw new Exception( mysql_error() );
}
catch (Exception $e) { die( $e->getMessage() ); }
// On vérifie qu'il y a bien un article
if( mysql_num_rows( $sql ) )
$row = mysql_fetch_object( $sql );
else
die('Aucune donnee');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Tuto</title>
</head>
<body>
<h1><?php echo $row->title; ?></h1>
<p>Ecrit le : <?php echo $row->date_entered; ?></p>
<p><?php echo $row->entry; ?></p>
<a href="index.php">Revenir au sommaire</a>
</body>
</html>
Vous allez me dire, c'est bien beau tout ça, mais je ne risque pas de me faire chier sans administration ? Dois-je passer par PhpMyAdmin ? mais non j'ai prévu le coup avec un fichier insert.php qui vous permettra de rajouter des articles dans votre base de données :
C'est parti pour insert.php :
<?php
// On appelle le fichier de connexion Mysql
require_once 'database.php';
// On vérifie les infos qu'on reçoit via un POST
if( $_POST && isset($_POST['title']) && isset($_POST['entry']) && $_POST['title'] && $_POST['entry'] )
{
$title = $_POST['title'];
$entry = $_POST['entry'];
// On vérifie si les anti quote sont active sinon on les rajoute
if(!get_magic_quotes_gpc())
{
$title = addslashes($title);
$entry = addslashes($entry);
}
// Pour éviter les injections SQL on protège les valeurs à insérer
$title = mysql_real_escape_string($title);
$entry = mysql_real_escape_string(nl2br($entry));
// On enregistre la ligne dans Mysql
try
{
$sql = mysql_query("INSERT INTO blog (title, entry, date_entered) VALUES ('".$title."','".$entry."', NOW())");
if (!$sql)
throw new Exception( mysql_error() );
// Si aucune erreur on redirige vers la page détail de l'article
else
header('location: show.php?id='.mysql_insert_id());
// on ferme la connexion
mysql_close();
}
catch (Exception $e) { die( $e->getMessage() ); }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Tuto</title>
</head>
<body>
<form action="insert.php" method="post" name="form" id="form">
<div>
<label>Titre :
<input type="text" id="title" name="title" value=""/>
</label>
</div>
<div>
<label>Texte :
<textarea name="entry" id="entry"></textarea>
</label>
</div>
<div>
<input type="submit" value="Enregistrer" />
</div>
</form>
</body>
</html>
Et voilà vous avez un début de commencement pour un petit blog.
En espérant que ce petit tuto vous ait aidé à faire ce dont ce que vous aviez besoin...!
Cordialement OpenRPG
Fichiers qui ont été créé pour ce tuto :
Sois le premier à débuter une discussion à propos de cet article !
Ajoute un commentaire !