Mettre les commentaires les plus recent en ha
Mihawk Messages postés 4753 Statut Contributeur -
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
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.
-
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!!!!!!
-
-
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'); -
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
Im singgiiiinnng in the rain just siinnngggiiin in the rain
-
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.
-
$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 .... -
-
-
-
-
-
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.
-
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. -
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; }-
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; } -
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 -
-
-
-