Afficher les 3 premier commentaires + lien Suivant Précédent

Résolu
djsquinje Messages postés 736 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 31 mai 2017 - 17 déc. 2015 à 23:35
djsquinje Messages postés 736 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 31 mai 2017 - 18 déc. 2015 à 12:52
Bonsoir à tout(e)

Je vous explique, je veux afficher les 3 premiers commentaire et faire des liens pour les 3 suivant / précédent. J'y arrive PRESQUE mais je bloque...

Voici mon code
<?php
    $limite = 0;
    $nombre = 3;
 
 
if(isset($_GET['id']) === false) {
    $id = 1;
} else {
    $id = $_GET['id'];
    if(is_numeric($id) === false) {
        exit('Error ID');
    }
}
// Connexion à la base de données
try
{
    $bdd = new PDO('mysql:host=localhost;dbname=test1;charset=utf8', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
}
 
// Récupération des 10 derniers messages
$reponse = $bdd->query("select * FROM minichat ORDER BY ID ASC limit ".$limite.",".$nombre."");
 
// Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
while ($donnee = $reponse->fetch())
if($donnee !== false) {
    echo htmlspecialchars($donnee['nom'].' : '.$donnee['message']).'<br>';
} else {
    echo 'Il n\'y à plus de commentaires';
}
 
if($nombre > 1) {
    echo '<li><a href="./test.php?limite='.($limite-1) and ($nombre-1).'"> << Précédent </a>';
}
if($donnee !== false) {
    echo '<a href="./test.php?limite='.($limite+1) and ($nombre+1).'">  Suivant  >> </a></li>
    </ul>';
}
 
?>


SVP soyez claire dans vos explication, je suis encore un grand débutant. Merci de vos conseil :)

2 réponses

djsquinje Messages postés 736 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 31 mai 2017 3
18 déc. 2015 à 12:52
RESOLUT :

<?php

try {
	$bdd = new PDO('mysql:host=localhost;dbname=test1;charset=utf8', 'root', '');
} catch(Exception $e) {
	die('Erreur : '.$e->getMessage());
}

	$reponse_count = $bdd->query('SELECT COUNT(*) AS count FROM minichat');
	$donnee_count = $reponse_count->fetch();
	$count = $donnee_count['count'];

if(isset($_GET['id']) === false) {
	$id = $count;
} else {
	$id = $_GET['id'];
	if(is_numeric($id) === false) {
		exit('Error ID');
	}
}

echo '<ul>';
$reponse = $bdd->query('SELECT * FROM minichat WHERE id <= '.$id.' ORDER BY id DESC LIMIT 3');
while($donnee = $reponse->fetch()) {
	if($donnee !== false) {
		echo '<li><img src="images/guillemets.png"> '.htmlspecialchars($donnee['nom'].' : '.$donnee['message']).'</li>';
	} else {
		echo '<img src="images/erreur.png">Il n\'y à plus de commentaires';
	}
}
echo '</ul>';

if($id > 3) {
	echo '<a href="?id='.($id-3).'"> << Précédent </a>';
}
if($id < $count) {
	echo '<a href="?id='.($id+3).'">  Suivant  >> </a>';
}
2
jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 344
18 déc. 2015 à 00:30
Bonjour,

Il y a pleins de petites anomalies dans ton code ....
pour commencer .... à quoi sert ta variable $id ??

Ensuite... à quel momment récupères tu la valeur de ta variable limite ?
Tu la fixes à 0 ... mets des valeurs dans l'url ... mais ne les récupère jamais.... Oo

n'aurais tu pas oublié :
 $limite = !empty($_GET['limite']) ? $_GET['limite'] : 0;

0
djsquinje Messages postés 736 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 31 mai 2017 3
18 déc. 2015 à 12:05
Merci de ton aide, en effet il y a plein d'erreur que je n'arrive pas à corriger...

Sur OpenClassrom on ma donner ce conseille :

Salut pour commencer doucement, remplace :

$limite = 0;
$nombre = 3;


par

if(empty($_GET['limite'])) {
  $limite = 0;
} else {
  $limite = $_GET['limite'];
}
 
if(empty($_GET['nombre'])) {
  $nombre = 3;
} else {
  $nombre = $_GET['nombre'];
}


Si les paramètres sont vides ou innexistant, on force la page 1. Sinon on stocke les paramètre passés dans l'URL ($_GET) dans des variables.
0
Rejoignez-nous