
Pas d'introduction fastidieuse, je vois bien que vous sautez d'impatience sur vos chaises...
Comment créer un système de news en PHP sans MySQL
On va réaliser cela sous forme d'exemple concret : un posteur de news.
Structure du projet :
- admin.htm → Formulaire d'ajout avec champs pour le titre, le contenu, le posteur et son email
- post.php → Écriture de la news dans un fichier texte
- see-news.php → Lecture et affichage du fichier texte
Afficher les news les plus récentes en premier
L'astuce, c'est qu'on veut afficher les news avec la plus récente en haut. Il faut donc écrire au début du fichier texte, avant toutes les autres news.
Le problème ? Les fonctions d'écriture PHP dans les fichiers texte ne permettent pas d'écrire au début sans effacer le contenu existant. En gros, ça donnerait ceci :
Fichier texte avant ajout :
la premiere news est ici
Et après ajout de la news "news 2" :
news 2miere news est ici
Donc l'astuce consiste à récupérer le contenu du fichier, le combiner à la nouvelle news via des variables, puis replacer le tout dans le fichier.
Code PHP complet pour gérer vos news
Le formulaire HTML (admin.htm)
<form action="post.php" method="post">
<input type="text" name="titre">
<textarea name="corp"></textarea>
</form>
- post.php : la page qui contient le code de manipulation du fichier texte
- titre : le nom du champ, automatiquement transformé en
$titre(variable PHP) contenant le titre de la news - corp : le nom du champ, automatiquement transformé en
$corp(variable PHP) contenant la news
Cette page peut être intégrée à votre site si vous voulez que les visiteurs puissent écrire des news (dans ce cas, ajoutez deux champs "pseudo" et "email", du même type que "titre").
Script d'écriture dans le fichier (post.php)
<?php
$newzz = $titre.'<br>'.$corp.'<br><br>';
$fp = fopen("news.txt","r+");
$old_news = fgets($fp);
$new_news = $newzz.$old_news;
fseek($fp,0);
fputs($fp,$new_news);
fclose($fp);
?>
Script de lecture et affichage (see-news.php)
<?php
$fp = fopen("news.txt","r");
$aff_news = fgets($fp);
fclose($fp);
echo $aff_news;
?>
Bien sûr, à vous d'insérer la date avec la fonction date(), etc. J'écrirai un article prochainement sur les astuces utiles pour les insertions automatiques en PHP (news, forum...) : date, sauts de ligne, etc.