Système d'articles en PHP - #2 Edition et Suppression

PrimFX Boris ('PrimFX') Le 21 août 2016

On poursuit notre système d'articles en PHP en y ajoutant la possibilité de modifier ou encore supprimer les différents articles.

  • index.php
<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=articles;charset=utf8", "root", "");
$articles = $bdd->query('SELECT * FROM articles ORDER BY date_time_publication DESC');
?>
<!DOCTYPE html>
<html>
<head>
   <title>Accueil</title>
   <meta charset="utf-8">
</head>
<body>
   <ul>
      <?php while($a = $articles->fetch()) { ?>
      <li><a href="article.php?id=<?= $a['id'] ?>"><?= $a['titre'] ?></a> | <a href="redaction.php?edit=<?= $a['id'] ?>">Modifier</a> | <a href="supprimer.php?id=<?= $a['id'] ?>">Supprimer</a></li>
      <?php } ?>
   <ul>
</body>
</html>
  • article.php
<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=articles;charset=utf8", "root", "");
if(isset($_GET['id']) AND !empty($_GET['id'])) {
   $get_id = htmlspecialchars($_GET['id']);
   $article = $bdd->prepare('SELECT * FROM articles WHERE id = ?');
   $article->execute(array($get_id));
   if($article->rowCount() == 1) {
      $article = $article->fetch();
      $titre = $article['titre'];
      $contenu = $article['contenu'];
   } else {
      die('Cet article n\'existe pas !');
   }
} else {
   die('Erreur');
}
?>
<!DOCTYPE html>
<html>
<head>
   <title>Accueil</title>
   <meta charset="utf-8">
</head>
<body>
   <h1><?= $titre ?></h1>
   <p><?= $contenu ?></p>
</body>
</html>
  • redaction.php
<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=articles;charset=utf8", "root", "");
$mode_edition = 0;
if(isset($_GET['edit']) AND !empty($_GET['edit'])) {
   $mode_edition = 1;
   $edit_id = htmlspecialchars($_GET['edit']);
   $edit_article = $bdd->prepare('SELECT * FROM articles WHERE id = ?');
   $edit_article->execute(array($edit_id));
   if($edit_article->rowCount() == 1) {
      $edit_article = $edit_article->fetch();
   } else {
      die('Erreur : l\'article n\'existe pas...');
   }
}
if(isset($_POST['article_titre'], $_POST['article_contenu'])) {
   if(!empty($_POST['article_titre']) AND !empty($_POST['article_contenu'])) {
      
      $article_titre = htmlspecialchars($_POST['article_titre']);
      $article_contenu = htmlspecialchars($_POST['article_contenu']);
      if($mode_edition == 0) {
         $ins = $bdd->prepare('INSERT INTO articles (titre, contenu, date_time_publication) VALUES (?, ?, NOW())');
         $ins->execute(array($article_titre, $article_contenu));
         $message = 'Votre article a bien été posté';
      } else {
         $update = $bdd->prepare('UPDATE articles SET titre = ?, contenu = ?, date_time_edition = NOW() WHERE id = ?');
         $update->execute(array($article_titre, $article_contenu, $edit_id));
         header('Location: http://127.0.0.1/Tutos_PHP/Articles/article.php?id='.$edit_id);
         $message = 'Votre article a bien été mis à jour !';
      }
   } else {
      $message = 'Veuillez remplir tous les champs';
   }
}
?>
<!DOCTYPE html>
<html>
<head>
   <title>Rédaction / Edition</title>
   <meta charset="utf-8">
</head>
<body>
   <form method="POST">
      <input type="text" name="article_titre" placeholder="Titre"<?php if($mode_edition == 1) { ?> value="<?= 
      $edit_article['titre'] ?>"<?php } ?> /><br />
      <textarea name="article_contenu" placeholder="Contenu de l'article"><?php if($mode_edition == 1) { ?><?= 
      $edit_article['contenu'] ?><?php } ?></textarea><br />
      <input type="submit" value="Envoyer l'article" />
   </form>
   <br />
   <?php if(isset($message)) { echo $message; } ?>
</body>
</html>
  • supprimer.php
<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=articles;charset=utf8", "root", "");
if(isset($_GET['id']) AND !empty($_GET['id'])) {
   $suppr_id = htmlspecialchars($_GET['id']);
   $suppr = $bdd->prepare('DELETE FROM articles WHERE id = ?');
   $suppr->execute(array($suppr_id));
   header('Location: http://127.0.0.1/Tutos_PHP/Articles/');
}
?>

A propos de l'auteur

PrimFX
Boris ('PrimFX')

Je m'appelle Boris, j'ai 22 ans et je suis passionné d'informatique. Suite à mes études (Licence Informatique puis MSc Computer Science au Trinity College Dublin), je gère l'entreprise Single Quote co-fondée en 2019 et je profite de mon temps libre pour partager ma passion à travers des vidéos & articles 😃

Votre commentaire

Vous devez être connecté pour poster un commentaire. Se connecter ou Créer un compte

Commentaires 9

  • Eurexa Le 8 avril, à 07:14 | Répondre

    Bonjour,
    Je n'arrive pas à trouver le code modifier pourrier vous me l'indiquer svp

  • MatCode Le 30 juin, à 16:11 (Édité le 30 juin 2021 à 16:17) | Répondre

    Hey @snoopy14 ^^
    Est-ce que tu as trouvé une solution ? Je cherche à résoudre le même problème que toi ;)

    EDIT :
    J'ai trouvé, tu peux utiliser cette fonction nl2br()

  • snoopy14 Le 22 mai, à 12:17 | Répondre

    Hello Boris !! Un grand merci pour tes tutos si précieux... du grand art :D
    Mon pb est peut-être déjà abordé dans une autre vidéo mais j'ai un souci avec la prise en compte des retours à la ligne en mode édition.
    Comment faire pour qu'ils soient pris en compte. Et/ou que les balises <br> n'apparaissent pas.
    Je tente de jongler avec les $variable = nl2br(htmlspecialchars($_POST['variable'])); mais sans succès.
    Pourrais-tu prévoir un tuto sur ce sujet ? Merci ;)

  • Dinars Le 5 janvier, à 19:23 | Répondre

    Bonjour, je vous remercie pour le temps passé sur tous vos tutos, c'est très bien fait et instructif! Pourriez-vous m'indiquer comment créer un système d'archivage et l'afficher en arbre (comme l'explorateur de Windows par exemple) avec 2000->Janvier->01 etc ...

  • M69-74 Le 26 août, à 12:47 | Répondre

    @Skill_DuTigre Tu peux aussi faire un système de like par étoiles, c'est super simples à réaliser, et il y a pleins de tutos sur ytb !

  • Balatharas Le 22 août, à 10:52 | Répondre

    @Skill_DuTigre Alors en fait j'ai du mal voir un titre ^^ mais voici deux liens:
    https://youtu.be/yUNdY_R9F84
    Celui la c'est pour un systeme de follow mais je pense que tu peux faire pareil pour des likes.
    https://youtu.be/7yNr-7oFKVg
    Sinon il y a celui la qui est de Grafikart. Bonne chance !

  • Skill_DuTigre Le 21 août, à 22:38 | Répondre

    @Beignet Aurais tu un lien ? Je ne vois / trouve pas la vidéo en question. :p

  • Balatharas Le 21 août, à 21:34 | Répondre

    @Skill_DuTigre Essaie de le faire avec un de ces anciens tutos (a regarder sur sa chaine YTB)

  • Skill_DuTigre Le 21 août, à 19:15 | Répondre

    Hello,
    Super tuto comme d'habitude. :p
    Petite question, ce serait possible un système de "like" sur les articles ? :D
    A bientôt !