Système d'articles en PHP - #1 Rédaction et Affichage


On revoit un peu les bases du PHP en s'attaquant à un petit système d'articles avant de passer à du plus lourd (utilisation de slugs, expressions régulières, URL Rewriting, etc.) !

  • 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></li>
      <?php } ?>
   <ul>
</body>
</html>
  • redaction.php
<?php
$bdd = new PDO("mysql:host=127.0.0.1;dbname=articles;charset=utf8", "root", "");
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']);
      $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 {
      $message = 'Veuillez remplir tous les champs';
   }
}
?>
<!DOCTYPE html>
<html>
<head>
   <title>Rédaction</title>
   <meta charset="utf-8">
</head>
<body>
   <form method="POST">
      <input type="text" name="article_titre" placeholder="Titre" /><br />
      <textarea name="article_contenu" placeholder="Contenu de l'article"></textarea><br />
      <input type="submit" value="Envoyer l'article" />
   </form>
   <br />
   <?php if(isset($message)) { echo $message; } ?>
</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>


A propos de l'auteur

PrimFX
PrimFX

Salut tout le monde ! Je m'appelle Boris, j'ai 18 ans et je suis passionné d'informatique et de technologie. Je partage cette passion à travers mes vidéos que tu peux retrouver sur YouTube sous le nom de PrimFX ou bien sur ce site bien sûr (tutoriels de programmation (HTML, CSS, PHP), gameplays, vlogs high-tech...). @+

A voir aussi

14 Commentaires

POSTER UN COMMENTAIRE

Vous devez être connecté pour pouvoir poster un commentaire...

Pas encore de compte ? Créez-en un ici !



  • Photo de profil de lordmagikal

    lordmagikal

    14 August 2016 à 17:39

    Je me désabonne, à cause de ton maillot #TeamInstinct #Yellow. Tu croyais passé inaperçu en faisant passer ta propagande de #teamMystic DEMON ! Bouhhh :'D Sinon bonne vidéo, vivement la suite. J'espere y voir l'affichage plus complet (image de couverture, auteur+bio de celui-ci), pouvoir modifier l'article, integrer un module tinymce ou autres dans un cas concret 😀, et comme tu l'a dit pouvoir programmer la publication, mettre en attente. Enfin pour moi ce sera qu'une modification de celui que j'ai deja et ça me permettra de voir si j'ai bien codé par rapport à ce que tu fais comme boulot 😀 GL pour la suite, ça risque d'être long comme série si elle est bien complète 😀. Je la suivrai avec grand plaisir !

  • Photo de profil de matteocharton

    matteocharton

    14 August 2016 à 17:42

    Très bon tutoriel ! Que je vais modifier de ce pas pour mon site 😄

  • Photo de profil de matteocharton

    matteocharton

    14 August 2016 à 18:19

    cela ne marche pas du tout sur mon site ... dislike - 1 abo dsl

  • Photo de profil de lordmagikal

    lordmagikal

    14 August 2016 à 22:34

    @matteocharton Soit c'est une blague et j'ai pas compris 😄 soit tu n'eest pas doué car chez moi ça fonctionne très bien D

  • Photo de profil de Balatharas

    Balatharas

    18 August 2016 à 13:53

    Ok PrimFX ta besoin d'argent pour du matériel ou autre, mais de la a limiter a TROIS le nombre de fois ou on peux voir le code c'est très exagéré. Je te suis depuis toujours vraiment, depuis tes tutos cinema 4D mais la tu me déçoit..

  • Photo de profil de Cosmico

    Cosmico

    19 August 2016 à 19:11

    Salut PrimFx

    Je te suis depuis le Togo en Afrique de l'ouest

    Le système d'articles en PHP m'intéresse particulièrement

    Mais je suis débutant et j'ai un problème : lorsque le site à un menu composé de plusieurs éléments je veux faire un formulaire d'insertion d'articles où je veux sélectionner l'élément du menu et par conséquent la table liée à ce menu. Ainsi depuis le formulaire d'insertion d'articles je cible directement les les éléments de mon menu. Exemple un menu composé comme suit: accueil -articles - informations - publications.

    Je veux pouvoir un formulaire d'insertion dans lequel je choisis le menu vers lequel envoyer mon INSERT par exemple menu publications

    Si tu peux associer ce système dans la nouvelle série en cours ça me rendra un grand service

    Merci pour tout ce que tu fais... tu es bon

  • Photo de profil de PaulLavieille

    PaulLavieille

    19 August 2016 à 19:14

    @Beignet Je suis d'accord avec toi^^

  • Photo de profil de Balatharas

    Balatharas

    21 August 2016 à 12:20

    @Cosmico je n'ai pas compris ton problème, tu devrais créer un nouveau topic dans la section programmation/php

  • Photo de profil de Cosmico

    Cosmico

    22 August 2016 à 16:18

    Salut Beignet

    imaginons que j'ai un site avec une barre de navigation comportant 3 menus et chaque menu est lié à

    une table dans la base de donnée.

    -je voudrais créer un back office pour alimenter chacune de ces tables pour ensuite afficher le contenu dans mes menus.

    -Dans le formulaire d'insertion du back office je veux avoir un champ select pour selectionner la table vers laquelle j’envoie mon post.

    -comment gérer ce formulaire en php/mysql.

    J’espère que je me suis bien expliqué.

    Salut à tous......

  • Photo de profil de hughes

    hughes

    06 September 2016 à 09:09

    Merci bcoups premfx je suis telement comter des ton travail

  • Photo de profil de patrick

    patrick

    11 October 2016 à 23:55

    salut Boris flesch je suis vraiment ravie de ce que tu fait pour nous.mais moi je suis un peu débutant et je décide de créer mon site web peux tu m'aidé a créer ce site stp m'aidé jai acheté déjà le nom du domaine mais jais pas encore écrire le site

  • Photo de profil de seboons

    seboons

    24 February 2017 à 21:45

    Salut PrimFx, merci pour tes tutos ils sont bien sympa.



    J'essaie de traduire les requêtes préparées en requêtes sql plus classiques mais j'ai un peu de mal, j'apprends tout doucement, possible de m'aider ?



    Notamment pour ce bout de code

    Merci à toi et continue ce bon boulot !

    $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');}
    ?>

  • Photo de profil de christophe88

    christophe88

    15 March 2018 à 20:47

    Bonjour,

    J'ai suivi le tuto sur la création d'un article (n°1) ainsi que celui sur la réalisation de commentaires mais je n'arrive pas à insérer des commentaires dans mon article.

  • Photo de profil de MrLiamsi

    MrLiamsi

    08 October 2018 à 21:09

    @Balatharas Il m'a aussi déçu 😄