Partage
  • Partager sur Facebook
  • Partager sur Twitter

Isoler l'affichage php

    16 août 2018 à 14:49:13

    Salut les gars, 

    C'est mon premier message ici et c'est surement une question un peu bête m'enfin il n'empeche que je ne trouve pas la reponse !

    J'ai donc commencer le cours sur les MVC en php et je bloque au 3eme chapitre. J'ai en effet séparer le code du blog en deux fichiers : affichageAccueil.php

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Mon blog</title>
        <link href="style.css" rel="stylesheet" /> 
        </head>
            
        <body>
            <h1>Mon blog !</h1>
            <p>Derniers billets du blog :</p>
    <?php
    while ($donnees = $reponse->fetch())
    {
     // Fin de la boucle des billets
    ?>
    <div class="news">
        <h3>
            <?php echo htmlspecialchars($donnees['titre']); ?>
            <em>le <?php echo $donnees['date_creation_fr']; ?></em>
        </h3>
        
        <p>
        <?php
        // On affiche le contenu du billet
        echo nl2br(htmlspecialchars($donnees['contenu']));
        ?>
          <br />  
        <em><a href="commentaires.php?billet=<?php echo $donnees['id']; ?>">Commentaires</a></em>
        </p>
    </div>
    <?php
    }
    $reponse->closeCursor();
    ?>
    <p> Publier un article : </p>
    <form action="billet_post.php" method="post">  
            <label for="titre"> Titre : </label><br/> 
            <input type="text" name="titre"/> <br/>
            <label for="contenu" class="com"> Contenu : </label></br>
            <textarea name="contenu" rows="5" cols="50"></textarea><br/>
            <input type="submit" value="Envoyer"/>
    
        </form>
        </br>
    </body>
    </html>

    et index.php : 

    <?php
    // Connexion à la base de données
    include('connexion.php');
    $BilletParPage=5;
    $billet_total=$bdd->query('SELECT COUNT(id) as nb_billet FROM billets');
    $Total=$billet_total->fetchcolumn();
    $nombre_page= ceil($Total/$BilletParPage);
    echo 'Page : ';
    for ($i = 1 ; $i <= $nombre_page ; $i++)
    {
        echo '<a href="affichageAccueil.php?page=' . $i . '">' . $i . '</a> ';
    } // Affichage du lien des pages
    if (isset($_GET['page'])AND $_GET['page'] = intval($_GET['page'])AND $_GET['page'] > 0 AND $_GET['page'] <= $nombre_page) 
    // Si get page existe, qu'il est un nombre entier compris entre 0 et le nombre total de page, afficher la page sinon, afficher page 1
    {
      $page=$_GET['page'];
    }
    else
    {
      $page = 1;
    }
    $premierbillet=($page - 1)*$BilletParPage; 
    $reponse = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%imin%ss\') AS date_creation_fr  FROM billets ORDER BY date_creation DESC LIMIT ' . $premierbillet. ', ' . $BilletParPage); 
    require('affichageAccueil.php');
    
    ?>

    Sur index.php cela marche mais quand je change de page cela me met une erreur "Undefined variable: reponse"

    Voila si vous avez une idée ! Merci a vous.

    • Partager sur Facebook
    • Partager sur Twitter
      16 août 2018 à 15:05:18

      A la ligne 13 de ton affichageAccueil tu utilises la variable reponse du index.php, si tu enlèves l'index.php tu n'as plus la variable reponse.

      J'ai rien compris à "Quand je change de page", de quoi quand tu changes de pages ?

      • Partager sur Facebook
      • Partager sur Twitter
        16 août 2018 à 15:35:31

        J'ai fait un systeme de pagination qui affiche les billets 5par5, sur la page 1 qui est donc l'index tout marche mais des que je clique sur page 2 ca me met l'erreur comme quoi $reponse n'est pas trouvé mais je ne vois pas de solution.
        • Partager sur Facebook
        • Partager sur Twitter
          16 août 2018 à 16:13:18

          Bonsoir,

          En ce qui me concerne je ferai comme ceci mais à voir.

          <?php
          // Connexion à la base de données
          include('connexion.php');
          $BilletParPage=5;
          $billet_total = $bdd->query('SELECT COUNT(id) AS nb_billet FROM billets');
          $donnees = $billet_total->fetch();
          $totalDesMessages = $donnees['nb_billet'];
          
          $nombre_page= ceil($totalDesMessages/$BilletParPage);
          echo 'Page : ';
          for ($i = 1 ; $i <= $nombre_page ; $i++)
          {
          echo '<a href="index.php?page=' . $i . '">' . $i . '</a> ';
          } // Affichage du lien des pages
          if (isset($_GET['page'])AND $_GET['page'] = intval($_GET['page'])AND $_GET['page'] > 0 AND $_GET['page'] <= $nombre_page)
          // Si get page existe, qu'il est un nombre entier compris entre 0 et le nombre total de page, afficher la page sinon, afficher page 1
          {
          $page=$_GET['page'];
          }
          else
          {
          $page = 1;
          }
          $premierbillet=($page - 1)*$BilletParPage;
          $reponse = $bdd->query('SELECT id, titre, contenu, DATE_FORMAT(date_ajout, \'%d/%m/%Y à %Hh%imin%ss\') AS date_ajout_et  FROM billets ORDER BY date_ajout DESC LIMIT ' . $premierbillet. ', ' . $BilletParPage);
          require('affichageAccueil.php');
          ?>

          Cordialement.

          -
          Edité par Max Imus 16 août 2018 à 16:19:59

          • Partager sur Facebook
          • Partager sur Twitter

          Isoler l'affichage php

          × 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