2009-09-23 7 views
0

Je suis coincé maintenant, voici ci-dessous un snip de mon code de pagination, c'est la partie qui construit l'URL pour les liens de pagination, ça a vraiment bien fonctionné jusqu'à maintenant parce que maintenant je change mon site entier à utiliser mod-rewrite donc avant une page se présente comme suitBesoin d'aide avec mon pager Fonction PHP maintenant que j'utilise mod-rewrite

http://localhost/?p=mail.inbox&page=2

et maintenant je veux que ce soit comme this..I déjà le regex pour le faire mais j'ai besoin de changer la façon dont mon paging construit des liens vers la nouvelle URL correctement

http://localhost/mail/inbox/page/2

Voici le code qui rend les anciens liens, de l'aide ou des idées sur la façon dont je peux utiliser pour les nouveaux liens?

la capture est la façon dont il fonctionne maintenant est qu'il peut déterminer si d'autres variables existent dans l'URL et s'il les voit, il s'assurera qu'il les conserve dans l'URL qu'il fait lors de la création de liens de page, par exemple? p = test & userid = 2 & couleur = vert & page = 3 il serait sûr de garder tous les trucs supplémentaires dans la nouvelle URL, il fait et juste augmenter ou diminuer le numéro de page

$url_string = "?"; 
foreach ($_GET as $k => $v) { 
    if ($k != "page") { // <-- the key you don't want, ie "page" 
     if ($url_string != "?") { 
      $url_string .= "&"; // Prepend ampersands nicely 
     } 
     $url_string .= $k . "=" . $v; 
    } 
} 
$selfurl = $url_string . '&page='; 
$page = $_GET['page']; 
if ($page) { 
    $start = ($page - 1) * $items_per_page; 
} 
else { 
    $start = 0; 
} 
if ($page == 0) { 
    $page = 1; //if no page var is given, default to 1. 
} 

Répondre

1

Cela fera le tour

$uri = $_SERVER['REQUEST_URI']; 
$uri = preg_replace('#page/\d+/*#', '', $uri); // remove page from uri 
$uri = preg_replace('#/$#', '', $uri); // remove trailing slash 

$selfurl = $uri . '/page/'; 
$page = $_GET['page']; 
if ($page) { 
    $start = ($page - 1) * $items_per_page; 
} else { 
    $start = 0; 
} 
if ($page == 0) { 
    $page = 1; 
} 

Ce que le code fait ici est de supprimer la partie/page/2 de l'uri si elle existe et ensuite vous pouvez modifier le code comme vous le souhaitez.
Vous avez mentionné que le code fonctionne si la partie/page/1 n'est pas dans l'URI, donc la suppression de cette partie si elle existe devrait fonctionner aussi.