Page 1 sur 1

probleme avec un script de pagination

Posté : 10 nov. 2005, 20:21
par Gico
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

Posté : 10 nov. 2005, 22:05
par Truc
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.

Posté : 10 nov. 2005, 22:14
par Gico
merci pour le conseil