JeuWeb - Crée ton jeu par navigateur
[Résolu] Bug sur mon système de pagination - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] Bug sur mon système de pagination (/showthread.php?tid=2614)



[Résolu] Bug sur mon système de pagination - Dolphy - 29-05-2008

Bon tout d'abord j'utilise une classe qui me gère ma pagination, elle fonctionne dans le sens, où seuls les messages qui m'intéressent sont affichés, tout d'abord voici mon code, après je vous explique mon problème.

Code PHP :
<?php
class pagination
{
private
$pageActuelle; /*Stock la page sur laquelle on est*/
public $nbAffichage; /*Nombre de données à afficher par page, sera également utilisé pour les requêtes SQL*/
public $limitStart; /*Sera utilisé dans les requêtes SQL pour indiquer à partir que quel enregistrement on commence*/
private $nbTotal; /*Nombre total de données, sera utilisé pour l'affichage des liens des pages*/
private $nbPage; /*Nombre de pages, sera utilisé pour l'affichage des liens des pages*/

function __construct($nbTotal, $page, $limiteAffichage = '25')
{
$this->nbTotal = $nbTotal;
$this->pageActuelle = $page;
$this->nbAffichage = $limiteAffichage;
$this->limitStart = ($page - 1) * $this->nbAffichage;
}

/*Affichage des liens pour les pages*/
function affichageLiens()
{
$this->nbPage = ceil($this->nbTotal / $this->nbAffichage); /*On calcul le nombre de page en fonction du nombre de donnée, et des données à afficher par page*/
/*Si le nombre de page est supérieur à 1 on affiche les liens*/
if($this->nbPage > 1)
{
echo
'<p>[ Page :';
for (
$i = 1 ; $i <= $this->nbPage ; $i++)
{
if (
$i == $this->pageActuelle) /*Si la page est la page actuelle on écrit pas de lien*/
{
echo
' '.$i;
}
else
/*Sinon oui*/
{
echo
' <a href="'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&page='.$i.'">'.$i.'</a> ';
}
}
echo
' ]</p>';
}
}
}
?>

Donc le problème vient de l'affichage des liens, quand je clique dessus, ça me change bien de page, seulement voilà comme je récupre toutes les infos via $_SERVER['QUERY_STRING'], si je suis déjà sur une page, j'ai déjà l'info : page=x, prenons un exemple concret.
Je suis sur la page 2, mon url ressemble à ça :
http://www.bidul.fr/index.php?p=mapage&a=action&page=2
Maintenant si je clique sur le lien de la page 3, tout ce charge normalement, mais mon url ressemble à ça :
http://www.bidul.fr/index.php?p=mapage&a=action&page=2&page=3

Et ainsi de suite, pour le moment ça ne cause pas de bug, mais pour l'avenir j'ai peur que ça puisse se mettre à partir en cacahuète donc je préfèrerai corriger ça, et surtout c'est pas très esthétique.

Merci d'avance pour votre aide.


RE: Bug sur mon système de pagination - Anthor - 29-05-2008

Code PHP :
<?php 
$url
= str_replace('&page=' . $this->pageActuelle, '', $_SERVER['QUERY_STRING']);
echo
' <a href="'.$_SERVER['PHP_SELF'].'?'.$url.'&page='.$i.'">'.$i.'</a> ';



RE: Bug sur mon système de pagination - Sephi-Chan - 29-05-2008

Un bug similaire présenté sur PHPFrance - PHP_SELF et QUERY_STRING ?.

Par contre, du point de vue de la conception, je comprends assez mal la justification d'un objet Pagination… À mon avis, ça devrait plutôt être une fonction normale.


Sephi-Chan


RE: Bug sur mon système de pagination - Dolphy - 29-05-2008

Oui tout bête l'idée du str_replace Confused comme quoi c'est souvent aux solutions simples qu'on ne pense pas.

Merci

Sinon, pour la raison de l'utilisation d'une classe, j'avoue qu'il n'y a pas de raison particulière, c'est ce qui m'a semblé le plus simple au départ, et ça reste très souple à utiliser comme ça, donc moi j'aime quand c'est simple xD


RE: Bug sur mon système de pagination - Cartman34 - 29-05-2008

Mon système de pagination fait 4lignes(toutes petites), alors de là à en faire un objet...


RE: Bug sur mon système de pagination - Mysterarts - 29-05-2008

Penser au tag [RESOLU] Si c'est OK...


RE: [RESOLU] Bug sur mon système de pagination - Dolphy - 29-05-2008

IGStaff, si tu as mieux, je suis preneur Smile
Mon système de pagination est loin d'être parfait mais il a le mérite de fonctionner :p


RE: [RESOLU] Bug sur mon système de pagination - Cartman34 - 29-05-2008

Je peux toujours essayer de te proposer mieux faut que je saches exactement ce que tu veux, avec quelques exemples de fausses pages par exemples.
Mon système pousse le vice loin en faisant quelques calculs mathématiques afin de savoir afin d'afficher un nombre de page le plus proche possible du nombre maximum que tu veux.
il affiche "..." pour els autres pages, enfin ça c'est parfaitement modifiable, c'est surtout le calcul qui est complexe.