begin process at 2012 05 31 05:30:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

POO

 > 

Classes & Objets

 > 

Pagination avec pb d'affichage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pagination avec pb d'affichage

vendredi 8 juillet 2011 à 11:30:45 | Pagination avec pb d'affichage

eltyty

Bonjour,
j'ai récupéré une class de pagination, mais elle a un comportement bizarre que je n'arrive pas à rectifier.
J'indique bien qu'il doit m'en afficher que 3, ce qui marche pour les premières pages, mais après il augmente le nombre. Je pense que cela vient du limit mais pourquoi ...?
J'obtiens ceci :
<< First 1 |2 |3 |Last >>
---------------------------------------------
Détail de ce qui est récupéré
---------------------------------------------
limit =>LIMIT 0,5
current =>1
previous =>1
next =>2
last =>34
info =>Page (1 of 34)
pages :
---0=>1
---1=>2
---2=>3
Et lorsque je clique sur la 8,10 ou plus page, j'obtiens :
<< First 22 |23 |24 |25 |26 |Last >>
---------------------------------------------
Détail de ce qui est récupéré
---------------------------------------------
limit =>LIMIT 115,5
current =>24
previous =>23
next =>25
last =>34
info =>Page (24 of 34)
pages :
---0=>22
---1=>23
---2=>24
---3=>25
---4=>26

Voici le code :
Code PHP :
<?php
<?
class pagination{

	public function calculate_pages($total_rows, $rows_per_page, $page_num)	{
		$arr = array();
		// calculate last page
		$last_page =ceil($total_rows / $rows_per_page);
		// make sure we are within limits
		$page_num = (int) $page_num;
		if ($page_num < 1)		{
		   $page_num = 1;
		} 
		elseif ($page_num > $last_page)		{
		   $page_num = $last_page;
		}
		$upto =($page_num - 1)*$rows_per_page;
		$arr['limit'] ='LIMIT '.$upto.',' .$rows_per_page;
		$arr['current'] =$page_num;
		if ($page_num === 1){
			$arr['previous'] = $page_num;
		}
		else{
			$arr['previous'] = $page_num - 1;
		}
		if ($page_num === $last_page){
			$arr['next'] = $last_page;
		}
		else{
			$arr['next'] = $page_num + 1;
		}
		$arr['last'] = $last_page;
		$arr['info'] ='Page ('.$page_num.' of '.$last_page.')';
		$arr['pages'] =$this->get_surrounding_pages($page_num, $last_page, $arr['next']);
		return $arr;
	}
	function get_surrounding_pages($page_num, $last_page, $next){
		$arr = array();
		$show = 3; // how many boxes
		// at first
		if ($page_num === 1)	{
			// case of 1 page only
			if ($next === $page_num){
				return array(1);
			}
			for ($i = 0; $i < $show; $i++)	{
				if ($i === $last_page){
					break;
				}
				array_push($arr, $i + 1);
			}
			return $arr;
		}
		// at last
		if ($page_num === $last_page)	{
			$start = $last_page - $show;
			if ($start < 1){
				$start = 0;
			}
			for ($i = $start; $i < $last_page; $i++){
				array_push($arr, $i + 1);
			}
			return $arr;
		}
		// at middle
		$start = $page_num - $show;
		if ($start < 1){
			$start = 0;
		}
		for ($i = $start; $i < $page_num; $i++)	{
			array_push($arr, $i + 1);
		}
		for ($i = ($page_num + 1); $i < ($page_num + $show); $i++)	{
			if ($i === ($last_page + 1)){
				break;
			}
			array_push($arr, $i);
		}
		return $arr;
	}
}
$g_page=(isset($_GET['p']))? $_GET['p'] : 1;
$inst=new pagination();
$arr = $inst->calculate_pages(170, 5, $g_page);

echo '<a href="pagination.php?p=1"><< First</a> ';
foreach ($arr['pages'] as $k=>$v){

	IF ((int)$arr['current']=== $v){
		echo '<b>'.$v.'</b> |';
	}
	else{
		echo '<a href="pagination.php?p='.$v.'">'.$v.'</a> |';
	}
	
}
echo '<a href="pagination.php?p='.$arr['last'].'">Last >></a>';
echo '<br />---------------------------------------------<br />';
echo 'Détail de ce qui est récupéré';
echo '---------------------------------------------<br />';

foreach ($arr as $k=>$v){

	if (is_array($v)){
	echo 'pages :<br />';
		foreach($v as $key=>$value){
			echo '---'.$key.'=>'.$value.'<br />';
		}
	}
	else{
		echo ''.$k.' =>'.$v.'<br />';
	}
	
}

?>
?>

En gros cela affiche plus de lien que prévu (soit 3) à partir de la deuxième page et en plus quand je suis sur la dernière page, cela m'affiche des numéro de pages qui ne devrait pas exister.

Merci de m'aider car là, je coince.
mercredi 13 juillet 2011 à 17:41:41 | Re : Pagination avec pb d'affichage

stay


Le plus simple, c'est de créer ta propre classe à partir de zéro.
Je dis cela car, c'est très simple et cela va t'aider à maitriser les tableaux à plusieurs dimentions.
Si je peux me permettre, vue l'URL utilisée, cela doit surement pas être référencer par les moteurs de recherches.
Tu peux y adjoindre de l'Ajax. C'est bien plus propre, pour l'URL.


Cette discussion est classée dans : page, pages, num, arr, last


Répondre à ce message

Sujets en rapport avec ce message

Une petite question sur les pages php [ par ian ] Faut-il toujours insérer le code php dans le body d'une page html qui a une extension .php, ou y-a-t-il un moyen de faire fonctionner une page de cod script à modifier [ par pyranhaz ] Bonjour,J'ai un script d'auto-expiration de page (rien à voir avec la fonction "meta expire") en javascript...Jaimerais avoir ce script en php autant communication entre 2 pages.... [ par fullmounthy ] j comprends rien...j ai une page ou j ai:.......bref un bete form visant a l upload d un fichiersur une autre page (la passage de variables de pages en pages [ par chouchou1 ] Bonjour, J ai un petit souci: j ai une premiere page dans laquelle je rempli un formulaire. Et ensuite un traitement des données dans d autres pages.J appeler ou retourner sur une pages, sans erreur ... [ par Orcus ] Bonjour,Sur ma page index.php, g un formulaire que l'utilisateur remplie. La validité des données est testée sur une autre page php (connexion à une b taille d'une page avant et après compression [ par ilvec ] Bonjour,j'utiliser la fonction ob_start("ob_gzhandler") pour compresser mes pages, mais pour savoir si c'est vraiment utile, je voudrais connaitre la Généré pages suite à requêtes [ par pyranhaz ] Voyons voir,J,ai une formulaire qui permet de faire une redcherche sur MySQL et afficher le résultat sur mon site...Je limite chaque affichage à 50 ré help - Trasmettre un texte sur plusieurs pages ! [ par marioda ] Bjr j'ai un champs de saisie textarea dans un formulaire d'une page A.Je souhaîte récuperer le contenu exact de ma zone de texte (caractère speciaux, Afficher des pages dans une seule... [ par the_eye ] Je voudrais savoir si il est possible, après avoir cliqué sur un lien d'une page, que la page cible du lien en question s'affiche dans la page ou l'on Contrôler et Protéger les pages d'un site et obliger le visiteur à venir depuis la page index du site [ par rem78 ] Bonjour, Je cherche un script en php qui permetterais de protéger les pages d'un site et qui obligerais le visiteur à rentrer sur le site depuis la p


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales