Mettre les commentaires les plus recent en ha

Flothebobcat Messages postés 1427 Statut Membre -  
Mihawk Messages postés 4753 Statut Contributeur -
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. Stéphane18 Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   132
     
    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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      C'etait ca !!!!!!!!!!!!!!!!!
      Merci , merci , merci et merci encore <3
      0
    2. Stéphane18 Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   132
       
      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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      franhcement tu ma enormement aider dans la coneception de mon site web :)
      0
    4. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Powaaa j'avais pensé aux types, mais alors la majuscule m'avait totalement échappé !!
      Bien joué Stéphane18 !!
      0
  2. Flothebobcat Messages postés 1427 Statut Membre 55
     
    .
    0
  3. Stéphane18 Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   132
     
    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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      c'est bon j'ai reussi :) j'ai fait order by ID desc
      0
    3. Flothebobcat Messages postés 1427 Statut Membre 55
       
      Je peux encore abuser de ton aide?
      0
    4. Stéphane18 Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   132
       
      Expose ton problème si moi je ne peux pas une personne plus calé pourras toujours venir t'aider!
      0
    5. Flothebobcat Messages postés 1427 Statut Membre 55
       
      J'aimerais un systeme de pagination c'est a dire qu'au bout de 10 commentaire par exemple ca genere une nouvelle page
      0
  4. Flothebobcat Messages postés 1427 Statut Membre 55
     
    Quelqun a une idée?
    0
    1. Stéphane18 Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   132
       
      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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      deja tenter , ca ne marches pas ...
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Flothebobcat Messages postés 1427 Statut Membre 55
     
    deja essayer ca ne marche pas :/
    0
  7. Flothebobcat Messages postés 1427 Statut Membre 55
     
    Im singgiiiinnng in the rain just siinnngggiiin in the rain
    0
  8. Mihawk Messages postés 4753 Statut Contributeur 846
     
    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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      $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. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Et avec
      echo $i." / ";


      ??
      0
    3. Flothebobcat Messages postés 1427 Statut Membre 55
       
      Non :/
      0
    4. Mihawk Messages postés 4753 Statut Contributeur 846
       
      que vaut nbPage ?
      0
    5. Flothebobcat Messages postés 1427 Statut Membre 55
       
      il vaut 3 avec ce code :
      $nbArt = $data['nbArt'];
      $perpage = 6;
      $nbpage= ceil($nbArt/$perpage);
      echo $nbpage;
      $cpage = 1;
      0
  9. Mihawk Messages postés 4753 Statut Contributeur 846
     
    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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      Pour le moment j'ai un probleme avec mon herbergeur , dés que c'est regler je test , encore merci :)
      0
    2. Flothebobcat Messages postés 1427 Statut Membre 55
       
      Salut effectivement quand je met directement trois , j'ai 1/2/3 afficher ...
      tu peux m'aider?
      0
    3. Mihawk Messages postés 4753 Statut Contributeur 846
       
      As-tu essayé le code que j'ai posté....?
      0
    4. Flothebobcat Messages postés 1427 Statut Membre 55
       
      Ah non je n'ai pas vu , attend je teste de suite :)
      0
    5. Flothebobcat Messages postés 1427 Statut Membre 55
       
      Non malheuresement ca ne marche pas :/
      0
  10. Mihawk Messages postés 4753 Statut Contributeur 846
     
    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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      Ok je fais tout de suite , merci de te casser la tête avec un probleme qui n'est pas le tiens :)
      0
    2. Flothebobcat Messages postés 1427 Statut Membre 55
       
      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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      C'est normal?
      0
    4. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Tu n'as appremment qu'une seule page...
      Bizarre qu'on ne passe pas dans le for, je ne comprends pas !
      0
    5. Flothebobcat Messages postés 1427 Statut Membre 55
       
      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
  11. Flothebobcat Messages postés 1427 Statut Membre 55
     
    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. Stéphane18 Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   132
       
      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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      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. Flothebobcat Messages postés 1427 Statut Membre 55
       
      ah ca remarche , niquel merci :)))
      0
    4. Flothebobcat Messages postés 1427 Statut Membre 55
       
      Si tu as des suggestion pour ameliorer?
      0
    5. Stéphane18 Messages postés 375 Date d'inscription   Statut Membre Dernière intervention   132
       
      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