Comment créer un blog simple en PHP & MySQL

PHP et MySQL sont les deux gros outils du développement web. Les statistiques disent que PHP représente plus de 80% des sites web. Quand à MySql, c’est le système SQL le plus utilisé.
Une grande majorité des sites sur internet sont des blogs.

Informations utiles
Lorsque l’on apprends le développement web, on as souvent envie de créer des projets pour s’entraîner. Aujourd’hui, je vous propose que l’on crée ensemble un blog avec PHP et Mysql

Objectif du blog

Notre objectif est de créer un blog. Nous aurons donc une table SQL gérant les articles et une interface d’administration pour écrire les articles de blog.
Pour accéder à cette page, nous utiliserons un système de mot de passe redirigeant l’utilisateur si il ne tape pas le bon mot de passe
Nous pourrions utiliser Javascript et Ajax mais ce n’est pas l’objectif ici.
Puisque nous faisons du PHP, nous allons utiliser la programmation orientée objet.

Création du blog

Pour créer notre application, nous allons utiliser PDO , mysql, PHP et WAMP. Si vous utiliser une autre technologie de serveur, cela ne poseras pas de problèmes.
Commençons maintenant à créer le squelette de notre application. Rendons nous sur PHP my Admin et créons la table qui stockeras nos articles de blog
Je crée une base de donnée appelée tuto et dans cette base, une table appelé article
Ensuite, on remplis chaque champ afin d’avoir un titre, un contenu et une id
On enregistre le tout et c’est bon, on as notre table.
Maintenant, nous allons créer la classe PHP chargée de récupérer et écrire les articles dans la base de donnée.

La classe qui manipule la base de donnée

En programmation orientée objet, on crée des classes pour chaque partie de notre application. Une des parties essentielle c’est la manipulation des données, c’est donc la première classe que nous allons créer
On crée un fichier article.php et on commence

class article # Déclaration de la classe
{
    public $bdd;
    public function __construct(){
        $this->bdd = new PDO('mysql:host=localhost;dbname=tuto;charset=utf8', 'root', ''); #connexion à la base de donnée
 
 
    }
}
On crée un objet qui représente notre base de donnée dans la fonction __construct() La fonction construct permet de créer des attributs de classes dès la création de notre objet Ensuite, nous allons créer la méthode permettant de créer un nouvel article. Elle va prendre deux arguments, le titre et le contenu

public function nouvel_article($titre, $contenu) {
         
    }
ette fonction va prendre les arguments que l’on as passé et va les insérer dans une requête SQL qui auras pour but de créer un nouvel article dans notre base de donnée Pour se faire, on dois utiliser la méthode exec et lui passer la requête INSERT INTO qui permets d’ajouter un nouvel objet à la base de donnée

if (empty($titre) or empty($contenu)) { # Si jamais il manque un argument, la fonction ne s'exécute pas
           echo "il manque un argument";
           return;
       }
 
       $this->bdd->exec("INSERT INTO article(titre, contenu) VALUES('$titre', '$contenu')");
La requête INSERT INTO se fait en deux parties. D’abord on annonce l’ordre des arguments, ensuite on lui passe les valeurs. Vous pouvez voir que l’on utilise les doubles guillements afin de pouvoir insérer directement nos variables dans notre requête. C’est une pratique qui peut-être dangereuse lorsque vous laissez les utilisateurs taper les données mais puisque c’est seulement l’administrateur qui manipuleras les requêtes, il n’y a pas de soucis

Testons notre méthode


$art = new article();
$art->nouvel_article('hello world2', 'comment ça va ?');
Notre méthode fonctionne, nous arrivons à créer des articles grâce à notre classe. Nous allons maintenant créer une méthode qui permets de les lire Pour se faire, on utilise la méthode query sur notre objet BDD, et on lui demande de nous fournir tout les éléments. De plus, on dois récupérer sous forme d’une liste les objets en appliquant la méthode fetchAll à notre réponse. Sans ça, les données ne seraient pas manipupables

public function lire()
    {
        $articles = $this->bdd->query('SELECT * from article'); #recuperation
        return $articles->fetchAll(\PDO::FETCH_ASSOC); #transformation en liste
    }
Testons notre code avec la fonction print_r qui permets d’afficher les valeurs d’une liste

$art = new article();
$articles = $art->lire();
print_r($articles);
On reçois bel et bien les articles sous forme d’une liste, notre méthode fonctionne donc bien. Dans notre système, les articles de blog s’afficherons à la suite. Si vous voulez vous entraîner, vous pouvez essayer de créer un système ou il est possible de les afficher individuellement. Pour se faire, vous devrez ajouter une méthode à notre classe qui récupère un seul article grâce à son id

La page d'admin

Nous avons fait un tiers du projet. La prochaine partie consiste à créer la page protégée par un mot de passe qui pourras créer de nouveaux articles. Commençons par créer un fichier appelé admin.php La première chose que nous voulons faire, c’est créer le système de mot de passe. Dans notre cas nous utiliserons le mot de passe “leblogducodeur”, libre à vous de mettre celui que vous voulez Pour vérifier le mot de passe, nous allons devoir utiliser les sessions. D’abord, on vérifie si l’utilisateur es connecté, si il ne l’es pas, on lui demande un mot de passe. Si il donne le bon mot de passe, on modifie la session pour qu’il soit connecté, si le mot de passe est mauvais on affiche un message d’erreur.

<?php
session_start();
if (isset($_SESSION['connecte']) or $_SESSION['connecte'] == false) { # on vérifie que l'utilisateur ne soit pas connecté
    ?>
    <p>Vous n'êtes pas connecté, veuillez taper le mot de passe</p>
    <input type="password" name="password"/>
    <?php
}
 
else { # Dans cette partie, on écrit le code que l'utilisateur administrateur verras
    ?>
 
 
    <?php
}
On dois maintenant implémenter le système de vérifications de mot de passes.

<?
<?php
session_start();
 
if (isset($_POST['password'])) { #si la variable mot de passe existe
    if ($_POST['password'] == 'leblogducodeur') {
        $_SESSION['connecte'] = true;
    }
    else {
        $_SESSION['connecte'] = false;
        echo "mauvais mot de passe";
    }
}
 
 
if (!isset($_SESSION['connecte']) or $_SESSION['connecte'] == false) { # on vérifie que l'utilisateur ne soit pas connecté
?>
    <p>Vous n'êtes pas connecté, veuillez taper le mot de passe</p>
    <form action="admin.php" method="post">
    <input type='password' name='password'/>
    <input type="submit"/>
    </form>
<?php
 
}
 
else { # Dans cette partie, on écrit le code que l'utilisateur administrateur verras
    echo "vous êtes connecte";
}
e fonctionnement est plutôt simple. On lance la session et on regarde ensuite si le script as reçu une variable post. Si c’est le cas, il effectue les vérifications de mot de passe. Sinon, il exécute la prochaine condition.

Testons ce code rapidement

Si je tape le bon mot de passe :
Et si je tape le mauvais mot de passe :
Comme vous pouvez le voir , notre système de vérifications de mot de passe fonctionne. Nous n’avons plus qu’à créer le formulaire de création d’article et la partie d’administrateur seras terminée Le code doit s’écrire en bas du fichier, dans la condition else Nous allons reproduire le même système, vérifier si on reçois les variables post de titre et de contenu. Si c’est le cas, nous allons lancer les fonctions qui ajoutent l’article à la base de donnée et afficher un message comme quoi l’article as bien été enregistré

else { # Dans cette partie, on écrit le code que l'utilisateur administrateur verras
    ?>
 
    <p>Bienvenue, vous êtes connecté</p>
    <p>Vous pouvez créer un nouvel article en remplissant le formulaire ci-dessous</p>
    <?php
    require 'article.php';
    if (isset($_POST['titre']) and isset($_POST['contenu'])) {
        $art = new article();
        $art->nouvel_article($_POST['titre'], $_POST['contenu']);
        echo "l'article as bien été ajouté";
    }
    ?>
 
 
    <?php
}
D’abord, on importe notre classe article. Ensuite, on vérifie que les variables existent avec isset, si c’est le cas, on crée un objet et on utilise la méthode pour créer un nouvel article. Ensuite, on affiche un message de confirmation. Faites bien attention à supprimer les instructions de test contenus dans notre fichier article.php Nous devons ensuite créer le formulaire permettant de créer les articles, nous allons utiliser un textarea et un input Voici le code complet du bloc else en fin de fichier

else { # Dans cette partie, on écrit le code que l'utilisateur administrateur verras
    ?>
 
    <p>Bienvenue, vous êtes connecté</p>
    <p>Vous pouvez créer un nouvel article en remplissant le formulaire ci-dessous</p>
 
    <?php
    require 'article.php';
    if (isset($_POST['titre']) and isset($_POST['contenu'])) {
        $art = new article();
        $art->nouvel_article($_POST['titre'], $_POST['contenu']);
        echo "l'article as bien été ajouté";
    }
    ?>
    <form method="post" action="admin.php">
        <input type="text" placeholder="titre" name="titre" />
        <textarea placeholder="contenu" name="contenu"></textarea>
        <input type="submit" />
    </form>
 
 
 
 
    <?php
}
Testons maintenant notre système, je tape mon mot de passe et j’arrive sur la page avec le formulaire, je le remplis
Allons maintenant voir la base de donné
Notre article as bien été ajouté, le système est donc fonctionnel. Il ne manque plus que la dernière partie, celle ou on affiche les articles de blog à la suite sur la page d’acceuil. C’est la partie la plus simple, il suffit de faire une boucle et le tour es joué

Afficher les articles

Pour cette dernière partie, créons un fichier appelé index.php. Son but seras d’afficher les articles de blog. Comme je l’ai dit, nous n’allons pas créer un système pour afficher les articles séparément. Nous n’avons donc qu’à faire une boucle

<?php
require 'article.php';
 
$art = new article();
$articles = $art->lire();
 
for ($i = 0; $i < sizeof($articles); $i++) {
    $article = $articles[$i];
    ?>
    <h1>Article : <?php echo $article['titre']?></h1>
    <p> <?php echo $article['contenu'] ?></p>
    <?php
}
C’est vraiment très simple, d’abord on importe la classe et on récupère les articles sous la forme d’une liste Ensuite, on fait une boucle for qui va nous permettre d’accéder à chaque article individuellement. On utilise sizeof() pour obtenir le nombre d’articles Il nous suffit ensuite d’afficher le titre et le contenu pour chaque article et le tour es joué
Sauf que l’on as un problème… Les articles sont dans le mauvais ordre. Le plus récent est en bas. Pour palier à ce problème c’est très simple, il suffit d’utiliser la fonction array_reverse

<?php
require 'article.php';
 
$art = new article();
$articles = $art->lire();
$articles = array_reverse($articles);
 
for ($i = 0; $i < sizeof($articles); $i++) {
    $article = $articles[$i];
    ?>
    <h1>Article : <?php echo $article['titre']?></h1>
    <p> <?php echo $article['contenu'] ?></p>
    <?php
}
Cette fois-ci, tout fonctionne parfaitement. Les articles sont listés dans l’ordre

Conclusion

Carroussel image
PHP et Mysql sont deux technologies permettant de créer des site internet rapidement et facilement. Comme vous avez pu le voir, il est possible de créer la base d’un blog en quelques lignes de code. Si vous débutez la programmation web, sachez que je vous recommande grandement PHP, c’est un langage simple à apprendre et très efficace. Voici d’ailleurs un livre si vous souhaitez apprendre PHP rapidement et éfficacement

Télecharger

Astuces
Cliquer sur les publicités pour nous soutenir!

PHP pour les nuls Livre 6MB Janet valade .pdf
Ce livre édité par Janet vous donne toutes les connaissances nécéssaires pour développer un site internet en PHP. Il développe des concepts avancés comme la programmation orientée objet ou le testing. Le livre détaille les bons outils pour bien programmer, les erreurs à ne pas faire et les choses à savoir.
  • A+
  • A-