Afficher les 3 premier commentaires + lien Suivant Précédent [Résolu]

djsquinje 772 Messages postés lundi 19 janvier 2009Date d'inscription 31 mai 2017 Dernière intervention - 17 déc. 2015 à 23:35 - Dernière réponse : djsquinje 772 Messages postés lundi 19 janvier 2009Date d'inscription 31 mai 2017 Dernière intervention
- 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 :)
Afficher la suite 

3 réponses

Répondre au sujet
djsquinje 772 Messages postés lundi 19 janvier 2009Date d'inscription 31 mai 2017 Dernière intervention - 18 déc. 2015 à 12:52
+2
Utile
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>';
}
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de djsquinje
jordane45 19324 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 18 décembre 2017 Dernière intervention - 18 déc. 2015 à 00:30
0
Utile
1
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;

djsquinje 772 Messages postés lundi 19 janvier 2009Date d'inscription 31 mai 2017 Dernière intervention - 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.
Commenter la réponse de jordane45

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.