Partage
  • Partager sur Facebook
  • Partager sur Twitter

La date affiché correspondante à son article

Sujet résolu
    20 mars 2019 à 13:16:01

    Bonjour à tous

    Cela fait 3 mois que je m'auto forme sur internet pour faire des sites internet et je travaille sur un projet actuellement.

    J'ai fais un système d'articles à l'aide de plusieurs tutoriels avec des dates de publications pour chaque article. Malheureusement après exécution d'un tutoriel de "formatage de dates" la date qui s'affiche pour chaque article est la première visible dans la base de données. 

    J'aimerai savoir si vous pouvez m'aider a lier la variable de la date formaté au système d'affichage des articles afin que chacun d'entre eux ait sa bonne date de publication

    Voici le code php en haut du script: 


    <?php
    $bdd = new PDO("mysql:host=127.0.0.1;dbname=articles;charset=utf8", "root", "");
    
    $articles = $bdd->query('SELECT * FROM articles ORDER BY id DESC LIMIT '.$depart.','.$articlesParPage);
    
    setlocale(LC_TIME, 'fr');
    
    $dtp = $bdd->query('SELECT * FROM articles');
    $dtp = $dtp->fetch()['date_time_publication'];
    
    $vardtp = strftime('le %d/%m/%Y',strtotime($dtp));
    
    
    ?>

    Et voici le code d'affichage: 

        <div class="mainbody">
        <main class="main">
        <?php while($a = $articles->fetch()) { ?>
            <article class="article">
                <div class="article-content">
                <a href="article.php?id=<?= $a['id'] ?>"><img src="img_articles/<?= $a['id'] ?>.jpg" class="article-img" />
                <h1><a href="article.php?id=<?= $a['id'] ?>"><?= $a['titre'] ?></a></h1>
                <div class="article-date">Publié <?= $vardtp ?></div>
                <p><?= $a['contenu'] ?></p>
                <div class="article-comment">Commentaires: 3</div>
                <a href="admin/redaction.php?edit=<?= $a['id'] ?>">Modifier</a> | <a href="supprimer.php?id=<?= $a['id'] ?>">Supprimer</a><br>
    
                </div>
            </article>
            <div class="article-hr"></div>
            <?php } ?>

    Merci d'avance

    -
    Edité par KubaKosior 20 mars 2019 à 13:17:23

    • Partager sur Facebook
    • Partager sur Twitter

    Je recherche un mentor afin de mieux progresser dans l'apprentissage du PHP et JS. Je suis pas trop chiant :D

      20 mars 2019 à 14:01:11

      Bonjour,

      $articles = $bdd->query('SELECT * FROM articles ORDER BY id DESC LIMIT '.$depart.','.$articlesParPage);
      Tu récupère la date avec cette variable non?
      • Partager sur Facebook
      • Partager sur Twitter
        20 mars 2019 à 14:02:17

        Il faut que tu fasse ta ligne 11 dans le while et non pas en dehors :

        $articles = $bdd->prepare('SELECT * FROM articles ORDER BY date_time_publication DESC LIMIT :nombre, :offset');
        $articles->bindValue(':nombre', $depart, PDO::PARAM_INT);
        $articles->bindValue(':offset', $articlesParPage, PDO::PARAM_INT);
        $articles->execute();
        
        // Puis plus tard dans le code
        while ($article = $articles->fetch()) {
            $dateArticle = new DateTime($article['date_time_publication']);
            ?>
            <div>Publié le : <?= $dateArticle->format('d/m/Y H:i:s') ?></div>
            <?php
        }


        Je te conseil aussi :

        • D'activer les erreurs PDO avec :
          $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        • De faire la boucle avec un foreach :
          foreach ($articles as $article) {
              // Le code ...
          }
          
          // Remplace
          while ($article = $articles->fetch()) {
              // Le code ...
          }
        • De nommer si possible les noms en anglais
        • Je l'ai mis dans mon code mais je le redis ici : trier plutôt par quelque chose de plus logique comme la date de publication, plutôt que l'id.

        Voilà déjà :)

        • Partager sur Facebook
        • Partager sur Twitter
          20 mars 2019 à 14:51:51

          Merci pour vos réponses je vais tester de faire ça comme tu me l'as dis @quenti77

          Btw je suis à la recherche d'un mentor afin de pouvoir être conseillé et de mieux progresser car de fois je n'arrive pas à trouver les réponses à mes problèmes donc si quelqu'un a un peu de temps à consacrer à un noob du code n'hésitez pas à me mp :3 

          -
          Edité par KubaKosior 20 mars 2019 à 14:52:40

          • Partager sur Facebook
          • Partager sur Twitter

          Je recherche un mentor afin de mieux progresser dans l'apprentissage du PHP et JS. Je suis pas trop chiant :D

            22 mars 2019 à 14:23:56

            Bonjour, j'ai eu pas mal de choses à faire avant de pouvoir tester ta solution @Quenti77 

            Après modifications j'ai cette erreur : 

            Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':nombre, :offset' at line 1 in C:\xampp\htdocs\fox\index.php:18 Stack trace: #0 C:\xampp\htdocs\fox\index.php(18): PDO->query('SELECT * FROM a...') #1 {main} thrown in C:\xampp\htdocs\fox\index.php on line 18





            Donc si je comprends bien ma base de données ne reconnait pas la syntax :nombre et :offset? Comment réparer cela s'il vous plaît? 

            Voici la ligne 18: 

            $articles = $bdd->query('SELECT * FROM articles ORDER BY date_time_publication DESC LIMIT :nombre, :offset');
            

            -
            Edité par KubaKosior 22 mars 2019 à 14:24:29

            • Partager sur Facebook
            • Partager sur Twitter

            Je recherche un mentor afin de mieux progresser dans l'apprentissage du PHP et JS. Je suis pas trop chiant :D

              22 mars 2019 à 16:05:09

              Tu nous expliqueras comment une requête non-préparée pourrait bien avoir des paramètres/marqueurs ?

              Remplace query par prepare ... (pourtant son code était bon sur ce point)

              -
              Edité par julp 22 mars 2019 à 16:05:58

              • Partager sur Facebook
              • Partager sur Twitter
                22 mars 2019 à 17:17:11

                Merci monsieur cela a marché, pour information je suis vraiment un noob je sais pas trop encore ce que je fais :S 

                Comment est-ce que je peux formater maintenant ma date avec cette fonction que j'ai utilisé avant? :

                    $vardtp = strftime('le %d/%m/%Y',strtotime($dateArticle));

                Edit:

                Nvm jviens de voir que le format est configurable dans l'affichage dèjà

                Topic à fermer merci à tous!

                -
                Edité par KubaKosior 22 mars 2019 à 17:18:16

                • Partager sur Facebook
                • Partager sur Twitter

                Je recherche un mentor afin de mieux progresser dans l'apprentissage du PHP et JS. Je suis pas trop chiant :D

                La date affiché correspondante à son article

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown