Mettre les commentaires les plus recent en ha

Bonjour j'ai suivi un tuto pour arriver a ca http://eastwoodchatterie.1.vg//comment/ (ne faite pas attention au texte ecrit c'est un test :P) , sauf que les commentaires les plus recent sont mis tout en bas et j'aimerais bien que ca soit l'inverse , qu'il soit tout en haut
Je vous donne donc le code de mon index.php

<?php require('connect.php');?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="style.css" media="all" />
  <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
  <script type="text/javascript">
  
  $(document).ready(function() {
    $('#ajax_result').hide();
    $('#load').hide();
    
    $('#form').submit(function(){
      
      valid = true;
      
      if($('#pseudo').val()==''){
        $('#pseudo').prev('.error').fadeIn(1000).text('Pseudo requis');
        valid = false;
      }
      
      else{
        $('#pseudo').prev('.error').slideUp();
      }
      
      if($('#commentaire').val()==''){
        $('#commentaire').prev('.error').fadeIn(1000).text('Commentaire requis');
        valid = false;
      }
      
      else{
        $('#commentaire').prev('.error').slideUp();
      }
      
      if(valid==true)
      {
        var pseudo = $('#pseudo').val();
        var commentaire = $('#commentaire').val();
        var dataString = 'pseudo='+pseudo+'&commentaire='+commentaire;
        
        $.ajax({
          type: 'POST',
          url: 'add_com.php',
          data: dataString,
          
          beforeSend: function()
          {
            $('#load').fadeIn();
          },
          success: function(data)
          {
            var responseData = jQuery.parseJSON(data);
            var pseudo = responseData.pseudo;
            var commentaire = responseData.commentaire;
            var date = responseData.date;
            
            $('#ajax_result').fadeIn(1000).append('<div class="com"><span class="auteur">'+pseudo+'</span><p>'+commentaire+'</p><span class="date">'+date+'</span></div>');
            $('#load').hide();
            $('#form').slideUp();
            
            
          }
        });
      }
      
      return false;
    });
});
  
  </script>
  <title></title>
</head>
<body>
  <div id="content">
    
    <h1>Mon article</h1>
    
    <p>
      Vel rhoncus velit risus a. Nunc? Massa integer, aliquam proin, porttitor tincidunt augue mid elementum in eu pulvinar! Etiam lectus dolor sit, in mus magna rhoncus aliquet ridiculus placerat turpis egestas aenean lectus adipiscing, porta et? Penatibus amet non enim! Velit elementum ut mattis augue nascetur mattis. Augue vel sed proin est, ac hac. Et cursus nunc lacus dapibus lorem, purus purus arcu integer enim nisi adipiscing ac lorem purus rhoncus ultricies, porta, sagittis magna scelerisque nascetur phasellus? Augue, habitasse integer odio arcu ultrices elit turpis egestas et magna egestas, nisi amet. Pellentesque proin mid est ac odio vel parturient integer enim sit in, pellentesque. Augue, elementum diam porta magna urna sit vel et? Rhoncus amet pid sed ac lundium.
      
    </p>
    
    
    <div id="commentaires">
      
      <?php
      $req = $bdd->prepare('SELECT * FROM commentaire');
      $req->execute();
      while($data = $req->fetch(PDO::FETCH_OBJ)):?>
      
      <div class="com">
        <span class="auteur"><?php echo $data->pseudo;?></span>
        <p><?php echo $data->commentaire;?></p>
        <span class="date"><?php echo $data->date;?></span>
      </div>
      
      <?php endwhile;?>
      
      <div id="ajax_result"></div>
      
    </div>
    
    <div id="load"></div>
    
    <form id="form" action="add_com.php" method="post">
      
      <label for="pseudo">Pseudo:</label>
      <span class="error"></span>
      <input type="text" name="pseudo" id="pseudo" />
      
      <label for="commentaire">Commentaire:</label>
      <span class="error"></span>
      <textarea name="commentaire" id="commentaire"></textarea>
      
      <input type="submit" id="submit" class="submit" value="Envoyer" />
      
    </form>
    
  </div>
</body>
</html>

Ainsi que mon ad_comment.php
<?php

require('connect.php');

if(!empty($_POST) && !empty($_POST['pseudo']) && !empty($_POST['commentaire']))
{
  extract($_POST);
  $pseudo = strip_tags($pseudo);
  $commentaire = strip_tags($commentaire);
  
  $req = $bdd->prepare('INSERT INTO commentaire (pseudo,commentaire) VALUES (:pseudo,:commentaire)');
  $req->execute(array(':pseudo'=>$pseudo, ':commentaire'=>$commentaire));
  $last_com_id = $bdd->lastInsertId('commentaire');
  $req->closeCursor();
  
  $req = $bdd->prepare('SELECT * FROM commentaire WHERE id=:last_com_id');
  $req->execute(array(':last_com_id'=>$last_com_id));
  $d = $req->fetch(PDO::FETCH_OBJ);
  
  $data = array('pseudo'=>$d->pseudo, 'commentaire'=>$d->commentaire, 'date'=>$d->date);
  
  echo json_encode($data);
}
else
{
  extract($_POST);
  $erreurs = array($erreurpseudo = (empty($pseudo)) ? 'Indiquez un pseudo' : null,
                   $erreurcommentaire = (empty($commentaire)) ? 'Indiquez un commentaire' : null);
  
  if($erreurs != null)
  {
    foreach($erreurs as $erreur)
    {
      if($erreur != null)
      {
        echo $erreur.'<br />';
      }
    }
  }
}

?>

Voila si quelqun peut m'aider c'est cool , merci d'avance :)



--
Cordialement

10 réponses

Résumé de la discussion

Plusieurs utilisateurs cherchent à inverser l'ordre d'affichage des commentaires dans une page PHP/MySQL afin que les plus récents apparaissent en haut, devant les plus anciens, et non pas l'inverse. La solution essentielle est de trier les résultats via ORDER BY DESC, par exemple SELECT * FROM commentaire ORDER BY id DESC, puis d’y ajouter LIMIT et OFFSET selon la pagination. D'autres interventions soulignent aussi des détails comme la casse des variables de pagination ou l'utilisation correcte de LIMIT pour que l'ordre reste cohérent lors du changement de page. En pratique, l'exemple retenu montre d'utiliser ORDER BY ID DESC pour afficher les commentaires les plus récents en haut, et il est recommandé d'indexer la colonne utilisée pour optimiser les performances.

Bobot (l’IA à votre service)
  1. Salut, dans ta boucle for vérifie la variable $nbPage le p est en majuscule alors que tu la déclare en minuscule plus haut $nbpage!!!!!!
    2
    1. C'etait ca !!!!!!!!!!!!!!!!!
      Merci , merci , merci et merci encore <3
      0
    2. Ouf c'était ma dernière option à te proposer car moi et le php ont est pas super pote à chaque foi je passe des heures devant mes erreurs à péter les plombs et je perds un temps fou Bon courage à toi !!!
      0
    3. franhcement tu ma enormement aider dans la coneception de mon site web :)
      0
    4. Contributeur
      Powaaa j'avais pensé aux types, mais alors la majuscule m'avait totalement échappé !!
      Bien joué Stéphane18 !!
      0
  2. Salut, je ne suis pas un pro en php mais essaye d'ajouté un
    ORDER BY DESC dans ta requête !

    Cette ligne:
    $req = $bdd->prepare('SELECT * FROM commentaire');
    Remplacer par:
    $req = $bdd->prepare('SELECT * FROM commentaire ORDER BY DESC');
    0
    1. Toujours la pour aider c'est cool :)
      Bon alors j'ai fait ce que tu ma conseiller et ca n'affiche plus les commentaire , enfin voit par toi même http://eastwoodchatterie.1.vg/comment/
      0
    2. c'est bon j'ai reussi :) j'ai fait order by ID desc
      0
    3. Je peux encore abuser de ton aide?
      0
    4. Expose ton problème si moi je ne peux pas une personne plus calé pourras toujours venir t'aider!
      0
    5. J'aimerais un systeme de pagination c'est a dire qu'au bout de 10 commentaire par exemple ca genere une nouvelle page
      0
  3. Quelqun a une idée?
    0
    1. Salut, et en ouvrant les balises php pour afficher ta boucle for ça donne quoi ?
      <?php for($i=1;$i<=$nbPage;$i++){
      	echo "$i /";
      }
            ?>
      0
    2. deja tenter , ca ne marches pas ...
      0
  4. deja essayer ca ne marche pas :/
    0
    1. Im singgiiiinnng in the rain just siinnngggiiin in the rain
      0
      1. Contributeur
        Essaye de changer ça :

        $premierArticle = ($cpage-1)*$perpage;
        $sql = "SELECT * FROM commentaire ORDER BY id DESC LIMIT ".$premierArticle.", ".$perpage;


        Attention, ton $cpage devra etre modifiable par l'utilisateur pour changer de page, par exemple en passant par les $_GET.
        0
        1. $sql = "SELECT COUNT(id) as nbArt FROM commentaire";
          $req= mysql_query($sql) or die(mysql_error());
          $data=mysql_fetch_assoc($req);

          $nbArt = $data['nbArt'];
          $perpage = 6;
          $nbpage= ceil($nbArt/$perpage);
          $cpage = 1;

          $sql = "SELECT * FROM commentaire ORDER BY id DESC LIMIT ".(($cpage-1)*$perpage).",$perpage";
          $req= mysql_query($sql) or die(mysql_error());
          while($data =mysql_fetch_object($req)):?>

          <div class="com">
          <span class="auteur"><?php echo $data->pseudo;?></span>
          <p><?php echo $data->commentaire;?></p>
          <span class="date"><?php echo $data->date;?></span>
          </div>
          <?php endwhile;?>
          <?php for($i=1;$i<=$nbPage;$i++){
          echo "$i /";
          }
          ?>
          Ca n'affiche pas le numero des pages ....
          pourtant quand je fais echo $nbpage en dessous de nbpage ca m'affiche le nombre de page ....
          0
        2. Contributeur
          Et avec
          echo $i." / ";


          ??
          0
        3. Non :/
          0
        4. Contributeur
          que vaut nbPage ?
          0
        5. il vaut 3 avec ce code :
          $nbArt = $data['nbArt'];
          $perpage = 6;
          $nbpage= ceil($nbArt/$perpage);
          echo $nbpage;
          $cpage = 1;
          0
      2. Contributeur
        Dans ton for essaye de mettre directement "3" à la place de $nbpage et vois si cela fonctionne.

        Sinon essaye cela :

        <?php
           for($i=1;$i<=intval($nbPage);$i++){
              echo $i." / ";
           }
        ?> 

        Et tiens moi au courant.
        0
        1. Pour le moment j'ai un probleme avec mon herbergeur , dés que c'est regler je test , encore merci :)
          0
        2. Salut effectivement quand je met directement trois , j'ai 1/2/3 afficher ...
          tu peux m'aider?
          0
        3. Contributeur
          As-tu essayé le code que j'ai posté....?
          0
        4. Ah non je n'ai pas vu , attend je teste de suite :)
          0
        5. Non malheuresement ca ne marche pas :/
          0
      3. Contributeur
        Essaye le code suivant et poste-moi le résultat :
        <?php 
           echo $nbpage; 
           echo intval($nbpage); 
           for($i=1;$i<=intval($nbPage);$i++){ 
              echo $i." / "; 
           } 
        ?> 

        Tant qu'on ne fait pas, on ne sait pas.
        0
        1. Ok je fais tout de suite , merci de te casser la tête avec un probleme qui n'est pas le tiens :)
          0
        2. le resultat est 11
          Tiens si tu veux voir pas toi meme :P (c'est en tout petit en dessous du commentaire ^^)
          http://flothebobcat.olympe-network.com/www/
          0
        3. C'est normal?
          0
        4. Contributeur
          Tu n'as appremment qu'une seule page...
          Bizarre qu'on ne passe pas dans le for, je ne comprends pas !
          0
        5. Ah oui non mais comme j'ai changer d'hebergeur la BDD a etait nettoyer il y a donc 1 seule page si tu veux j'ecris plein de coms comme ca :P
          0
      4. Herf jamais un probleme sans un autre qui suis http://flothebobcat.olympe-network.com/www
        Quand je clique sur les page ca ne fait rien vla mon code :
        <?php require('connect.php');?>
        
        <!DOCTYPE html>
        <html lang="en">
        <head>
          <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
          <link rel="stylesheet" type="text/css" href="style.css" media="all" />
          <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
          <script type="text/javascript">
          
          $(document).ready(function() {
            $('#ajax_result').hide();
            $('#load').hide();
            
            $('#form').submit(function(){
              
              valid = true;
              
              if($('#pseudo').val()==''){
                $('#pseudo').prev('.error').fadeIn(1000).text('Pseudo requis');
                valid = false;
              }
              
              else{
                $('#pseudo').prev('.error').slideUp();
              }
              
              if($('#commentaire').val()==''){
                $('#commentaire').prev('.error').fadeIn(1000).text('Commentaire requis');
                valid = false;
              }
              
              else{
                $('#commentaire').prev('.error').slideUp();
              }
              
              if(valid==true)
              {
                var pseudo = $('#pseudo').val();
                var commentaire = $('#commentaire').val();
                var dataString = 'pseudo='+pseudo+'&commentaire='+commentaire;
                
                $.ajax({
                  type: 'POST',
                  url: 'add_com.php',
                  data: dataString,
                  
                  beforeSend: function()
                  {
                    $('#load').fadeIn();
                  },
                  success: function(data)
                  {
                    var responseData = jQuery.parseJSON(data);
                    var pseudo = responseData.pseudo;
                    var commentaire = responseData.commentaire;
                    var date = responseData.date;
                    
                    $('#ajax_result').fadeIn(1000).append('<div class="com"><span class="auteur">'+pseudo+'</span><p>'+commentaire+'</p><span class="date">'+date+'</span></div>');
                    $('#load').hide();
                    $('#form').slideUp();
                    
                    
                  }
                });
              }
              
              return false;
            });
        });
          
          </script>
          <title></title>
        </head>
        <body>
          <div id="content">
            
            <h1>Mon article</h1>
            
            <p>
              Vel rhoncus velit risus a. Nunc? Massa integer, aliquam proin, porttitor tincidunt augue mid elementum in eu pulvinar! Etiam lectus dolor sit, in mus magna rhoncus aliquet ridiculus placerat turpis egestas aenean lectus adipiscing, porta et? Penatibus amet non enim! Velit elementum ut mattis augue nascetur mattis. Augue vel sed proin est, ac hac. Et cursus nunc lacus dapibus lorem, purus purus arcu integer enim nisi adipiscing ac lorem purus rhoncus ultricies, porta, sagittis magna scelerisque nascetur phasellus? Augue, habitasse integer odio arcu ultrices elit turpis egestas et magna egestas, nisi amet. Pellentesque proin mid est ac odio vel parturient integer enim sit in, pellentesque. Augue, elementum diam porta magna urna sit vel et? Rhoncus amet pid sed ac lundium.
              
            </p>
            
            
            <div id="commentaires">
              
              <?php
             
        mysql_connect("sql.olympe-network.com","******","******") or die('erreur de connexion mysql');
        mysql_select_db ("*****") or die('erreur de connexion base');
        
        	 $sql = "SELECT COUNT(id) as nbArt FROM commentaire";
        $req= mysql_query($sql) or die(mysql_error());
        $data=mysql_fetch_assoc($req);
        
        
        $sql = "SELECT COUNT(id) as nbArt FROM commentaire";
        $req= mysql_query($sql) or die(mysql_error());
        $data=mysql_fetch_assoc($req);
        
        if(isset($_GET['p'])){
        $cpage = $_GET['p'];	
        }
        else{
          $cpage=1;	
        }
        
        $nbArt = $data['nbArt'];
        $perpage = 6;
        $nbpage= ceil($nbArt/$perpage);
        $cpage = 1;
        
        
        
        $sql = "SELECT * FROM commentaire ORDER BY id DESC LIMIT ".(($cpage-1)*$perpage).",$perpage";
        $req= mysql_query($sql) or die(mysql_error());
        while($data =mysql_fetch_object($req)):?>
        
              <div class="com">
                <span class="auteur"><?php echo $data->pseudo;?></span>
                <p><?php echo $data->commentaire;?></p>
                <span class="date"><?php echo $data->date;?></span>
              </div>
              <?php endwhile;?>
        <?php for($i=1;$i<=$nbpage;$i++){
        	echo "<a href=\"index.php?p=$i\">$i</a>/";
        }
              ?>
         <div id="ajax_result"></div>
              
            </div>
            
            <div id="load"></div>
            
            <form id="form" action="add_com.php" method="post">
              
              <label for="pseudo">Pseudo:</label>
              <span class="error"></span>
              <input type="text" name="pseudo" id="pseudo" />
              
              <label for="commentaire">Commentaire:</label>
              <span class="error"></span>
              <textarea name="commentaire" id="commentaire"></textarea>
              
              <input type="submit" id="submit" class="submit" value="Envoyer" />
              
            </form>
            
          </div>
        </body>
        </html>

        Le code supposé afficher les page est le suivant

        if(isset($_GET['p'])){
        $cpage = $_GET['p'];	
        }
        else{
          $cpage=1;	
        }
        
        0
        1. Une erreur simple ! le code ci-dessous ne se trouve pas au bonne endroit la variable $cpage n'existe pas encore, elle ne passe donc pas dans l'url, ajoute ce code après avoir déclaré tes variables !

          if(isset($_GET['p'])){
          $cpage = $_GET['p'];	
          }
          else{
            $cpage=1;	
          }


          Comme ceci:

          $nbArt = $data['nbArt'];
          $perpage = 6;
          $nbpage= ceil($nbArt/$perpage);
          $cpage = 1;
          
          if(isset($_GET['p'])){
          $cpage = $_GET['p'];	
          }
          else{
            $cpage=1;	
          }
          0
        2. Salut maitnenant j'ai cet erreur The server encountered an internal error or misconfiguration and was unable to complete your request.

          Please contact the server administrator, admin@olympe-network.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
          quand je clique sur une page regarde : flothebobcat.olympe-network.com/www
          0
        3. ah ca remarche , niquel merci :)))
          0
        4. Si tu as des suggestion pour ameliorer?
          0
        5. Apparemment tu as un souci avec l'encodage de ta page, je t'es envoyé un message et les accents sont remplacés par des symboles, vérifie que tu es bien en UTF-8, sinon tu pourrais ajouter à côté du pseudo "Message envoyé par"
          0