Pagination PHP [Résolu/Fermé]

Signaler
Messages postés
200
Date d'inscription
dimanche 13 juillet 2008
Statut
Membre
Dernière intervention
18 septembre 2017
-
Messages postés
200
Date d'inscription
dimanche 13 juillet 2008
Statut
Membre
Dernière intervention
18 septembre 2017
-
Bonjour,

Je vais essayer d'être clair, J'essaie de faire une pagination automatique en php sur mon site. En fait sur une même page "physique" il y a des liens type PAGE : 1 2 3 4 qui au final amèneront sur la même page mais avec des données différentes.

voilà ma requête dans ce bout de code :


if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query('SELECT * FROM post ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);

Celle-ci fonctionne très bien. Pour une autre page j'ai besoin d'y rajouter une condition, voilà :

$reponse = mysql_query("SELECT * FROM commentpost WHERE pseudodupost='$pseudo' ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage");

et celle-ci ne fonctionne pas du tout, il semble que j'ai une erreur de syntaxe dans ma requête. Je suis débutant en PHP.
Merci de votre aide

5 réponses

Messages postés
892
Date d'inscription
dimanche 25 mai 2008
Statut
Membre
Dernière intervention
30 juillet 2018
177
Je pense qu'il s'agit d'un problème de quotes.
LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage")
Ne serait-ce pas des doubles quotes que tu devrais fermer plutôt ?

Messages postés
553
Date d'inscription
mercredi 6 août 2008
Statut
Membre
Dernière intervention
6 août 2010
42
Je suis pas sur d'avoir tout compris.
Mais tu souhaite avoir une page de base, mais dont le corps sera remplis différemment selon le numéro de la page ?

Si c'est bien ça, je pense que tu devrais te tourner vers les pseudo-frames.

Voici un tuto sur PHP débutant qui devrait t'aider : http://www.phpdebutant.org/article68.php
Messages postés
200
Date d'inscription
dimanche 13 juillet 2008
Statut
Membre
Dernière intervention
18 septembre 2017
12
Merci pour vos réponse.

Pour zzzer comme j'ai précisé je suis débutant en PHP et je ne suis pas sûr de bien comrendre le terme "quote". Pourrais-tu me montrer juste la requete avec la bonne syntaxe à faire s'il te plait. Je suppose que c'est juste une erreur de ' ou de " mais je n'y arrive pas. Merci

Pour Crowcrow :

Puisque de nouveaux messages sont régulièrement ajoutés à ma page le système doit être automatisé.
Ce système devra en plus me permettre de changer facilement le nombre de messages affichés par page.
C'estune pagination de type "livre d'or". Merci
Messages postés
892
Date d'inscription
dimanche 25 mai 2008
Statut
Membre
Dernière intervention
30 juillet 2018
177
Je ne te garantis rien, mais essaye ceci :
$reponse = mysql_query("SELECT * FROM commentpost WHERE pseudodupost='$pseudo' ORDER BY id DESC LIMIT $premierMessageAafficher, $nombreDeMessagesParPage"); 
Messages postés
200
Date d'inscription
dimanche 13 juillet 2008
Statut
Membre
Dernière intervention
18 septembre 2017
12
Je te remercie grandement car ta requete est la bonne. Merci.

Au risque d'abuser j'ai toujours un problème. Le code me permet d'afficher le nombre de message voulu par page. Il affiche aussi le nombre correct de page mais le problème c'est lorsque je clique sur un des numeros de pages ca ne m'affiche plus aucune données et je ne peut donc pas voir le reste des données. Ca m'ennuie car grace à ton aide je n'ai jamais été aussi proche de mon but mais il me manque quelque chose. Ma page se nomme "commentparpseudo.php" voici mon code au complet :


// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 2; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query("SELECT COUNT(*) AS nb_messages FROM commentpost WHERE pseudodupost='$pseudo'");
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages
?>
<p class="numeropage">
<?php
echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
echo '<a href="commentparpseudo.php?page=' . $i . '">' . $i . '</a> ';
}
?>

</p>
<p class=apparition>
<?php


// --------------- Etape 3 ---------------
// Maintenant, on va afficher les messages
// ---------------------------------------

if (isset($_GET['page']))
{
$page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
$page = 1; // On se met sur la page 1 (par défaut)
}

// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;

$reponse = mysql_query("SELECT * FROM commentpost WHERE pseudodupost='$pseudo' ORDER BY id DESC LIMIT $premierMessageAafficher, $nombreDeMessagesParPage"); // Requête SQL
$lyricspost=nl2br($lyricspost);

// On fait une boucle pour lister tout ce que contient la table :

while ($donnees = mysql_fetch_array($reponse) )
{
.........................
Messages postés
200
Date d'inscription
dimanche 13 juillet 2008
Statut
Membre
Dernière intervention
18 septembre 2017
12
Je viens de comprendre mon pb c'est ma variable qui ne reste pas. Je m'explique :
lorsque je clique sur "validez" de mon formulaire une variable est créer :
$_POST['choisirauteur'];

moi je lcrée la variable suivante : $pseudo=$_POST['choisirauteur'];

Mais quand je clique sur page 2 par exemple il ne prend plus en compte cette variable.

Je pense que je vais créer un autre sujet car le titre ne correspond plus à mon problème. Je te remercie beaucoup pour ton aide précieuse.