probleme avec un script de pagination

Eléphant du PHP | 294 Messages

10 nov. 2005, 20:21

Bonjour
j'utilise un script de pagination auquel je l'avoue je ne comprend pas tout.
<?php
function buildNavigation($pageNum_Recordset1,$totalPages_Recordset1,$prev_Recordset1,$next_Recordset1,$separator=" | ",$max_links=10, $show_page=true)
{
                GLOBAL $maxRows_rsArticle,$totalRows_rsArticle;
	$pagesArray = ""; $firstArray = ""; $lastArray = "";
	if($max_links<2)$max_links=2;
	if($pageNum_Recordset1<=$totalPages_Recordset1 && $pageNum_Recordset1>=0)
	{
		if ($pageNum_Recordset1 > ceil($max_links/2))
		{
			$fgp = $pageNum_Recordset1 - ceil($max_links/2) > 0 ? $pageNum_Recordset1 - ceil($max_links/2) : 1;
			$egp = $pageNum_Recordset1 + ceil($max_links/2);
			if ($egp >= $totalPages_Recordset1)
			{
				$egp = $totalPages_Recordset1+1;
				$fgp = $totalPages_Recordset1 - ($max_links-1) > 0 ? $totalPages_Recordset1  - ($max_links-1) : 1;
			}
		}
		else {
			$fgp = 0;
			$egp = $totalPages_Recordset1 >= $max_links ? $max_links : $totalPages_Recordset1+1;
		}
		if($totalPages_Recordset1 >= 1) {
			$_get_vars = '';			
			if(!empty($_GET) || !empty($HTTP_GET_VARS)){
				$_GET = empty($_GET) ? $HTTP_GET_VARS : $_GET;
				foreach ($_GET as $_get_name => $_get_value) {
					if ($_get_name != "pageNum_rsArticle") {
						$_get_vars .= "&$_get_name=$_get_value";
					}
				}
			}
			$successivo = $pageNum_Recordset1+1;
			$precedente = $pageNum_Recordset1-1;
			$firstArray = ($pageNum_Recordset1 > 0) ? "<a href=\"$_SERVER[PHP_SELF]?pageNum_rsArticle=$precedente$_get_vars\" class=\"pagination\">$prev_Recordset1</a>" :  "$prev_Recordset1";
	
			for($a = $fgp+1; $a <= $egp; $a++){
				$theNext = $a-1;
				if($show_page)
				{
					$textLink = $a;
				} else {
					$min_l = (($a-1)*$maxRows_rsArticle) + 1;
					$max_l = ($a*$maxRows_rsArticle >= $totalRows_rsArticle) ? $totalRows_rsArticle : ($a*$maxRows_rsArticle);
					$textLink = "$min_l - $max_l";
				}
				$_ss_k = floor($theNext/26);
				if ($theNext != $pageNum_Recordset1)
				{
					$pagesArray .= "<a href=\"$_SERVER[PHP_SELF]?pageNum_rsArticle=$theNext$_get_vars\" class=\"pagination\">";
					$pagesArray .= "$textLink</a>" . ($theNext < $egp-1 ? $separator : "");
				} else {
					$pagesArray .= "$textLink"  . ($theNext < $egp-1 ? $separator : "");
				}
			}
			$theNext = $pageNum_Recordset1+1;
			$offset_end = $totalPages_Recordset1;
			$lastArray = ($pageNum_Recordset1 < $totalPages_Recordset1) ? "<a href=\"$_SERVER[PHP_SELF]?pageNum_rsArticle=$successivo$_get_vars\" class=\"pagination\">$next_Recordset1</a>" : "$next_Recordset1";
		}
	}
	return array($firstArray,$pagesArray,$lastArray);
}
?>
puis on affiche les differents liens ainsi:
     <?php 
# variable declaration
$prev_rsArticle = "< ";
$next_rsArticle = ">  ";
$separator = " | ";
$max_links = 15;
$pages_navigation_rsArticle = buildNavigation($pageNum_rsArticle,$totalPages_rsArticle,$prev_rsArticle,$next_rsArticle,$separator,$max_links,true); 

print $pages_navigation_rsArticle[0]; 
?>
et
 <?php print $pages_navigation_rsArticle[1]; ?>
ect ect

tous ça fonctionne correctement en local sous firefox et explorer, et correctement en ligne sous firefox. Sous explorer un clic sur un lien ouvre une page vide car l'adresse devient relative et fausse - a noter que chez mon hebergeur le site est dans un dossier www.

par exemple voila l'adresse de la premiere page :

http://www.site.com//public/catalogue_c ... ategorie=2

un clic sur le lien de la pagination pour ouvrir la seconde page donne :

http://public/catalogue_categorie.php?p ... ategorie=2

et forcément cette page n'existe pas. Que se passe-t-il ici et qui n'est propre qu'a explorer.
Merci

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

10 nov. 2005, 22:05

Perso je dirai de laisser tomber tout ça et faire un truc que tu comprend :wink:
avec un toto c'est rapide, facile et bien mieux que ce que tu montres.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 294 Messages

10 nov. 2005, 22:14

merci pour le conseil