Posez votre question Signaler

[PHP] Pagination et rewirte url [Résolu]

coccoweb 86Messages postés 20 décembre 2009Date d'inscription 17 novembre 2011Dernière intervention - Dernière réponse le 6 nov. 2010 à 15:13
Bonjour,
je me réfère a vous a cause d'une impasse.
J'ai écris cette fonction pour faire une pagination
Celle-ci renvois
PRECEDENT 1 ... 22 23 24 25 26 [27] 28 29 ... 30 SUIVANT
Tout fonctionne très bien.
Venons en au problème :
J'aimerai que le lien de sortie soit ou une URL réécrite (comme maintenant) ou l'URL logique
index.php?action=messagerie/consulter&msgid=1&page=29
J'ai pensé a un preg_replace mais je ne suis pas encore au point pour ça
<?php
/* Pagination simple */
/* $page => (int) numero de page */
/* $nb_total => (int) nombre d'article */
/* $limit => Nombre d'article par page */
/* $msgid => ID du message */
/* $align => Choix de l'alignement */
function Pagination ($page, $nb_total, $limit, $msgid, $align)
{
$page = (int) $page;
$nb_total = (int) $nb_total;
$limit = (int) $limit;
$msgid = (int) $msgid;
$nb_page=ceil($nb_total/$limit); // Nombre de page
$echo = "<p align=".$align.">";
	// Affiche la premiere page
	if ($page-1 >= 0 AND $page-1 <$nb_page)
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page-1).'">PRECEDENT</a>&nbsp;';}
	if($page > $limit AND $page <$nb_page)
	{$echo.='<a href="messagerie-consulter-'.$msgid.'-0">1</a>&nbsp;...&nbsp;';}
	// Page avant la page
	if ($page-5 >= 0 AND $page-5 <$nb_page) 
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page-5).'">'.($page-4).'</a>&nbsp;';} 
	if ($page-4 >= 0 AND $page-4 <$nb_page) 
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page-4).'">'.($page-3).'</a>&nbsp;';}
	if ($page-3 >= 0 AND $page-3 <$nb_page) 
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page-3).'">'.($page-2).'</a>&nbsp;';} 
	if ($page-2 >= 0 AND $page-2 <$nb_page) 
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page-2).'">'.($page-1).'</a>&nbsp;';}
	if ($page-1 >= 0 AND $page-1 <$nb_page) 
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page-1).'">'.($page).'</a>&nbsp;';}
	// Page en cours
	$echo.='&nbsp;['.($page+1).']&nbsp;';
	// Page après la page
if ($page+1 <= $nb_page AND $page+1 <$nb_page) 
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page+1).'">'.($page+2).'</a>&nbsp;';}
	
	//if ($page+2 <= $nb_page AND $page+2 <$nb_page) {$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page+1).'">'.($page+2).'</a>&nbsp;';}
	
	if ($page+3 <= $nb_page AND $page+3 <$nb_page)
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page+2).'">'.($page+3).'</a>&nbsp;';}
	if ($page+4 <= $nb_page AND $page+4 <$nb_page)
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page+3).'">'.($page+4).'</a>&nbsp;';}
	if ($page+5 <= $nb_page AND $page+5 <$nb_page)
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page+4).'">'.($page+5).'</a>&nbsp;';}
	if ($page+6 <= $nb_page AND $page+6 <$nb_page)
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page+5).'">'.($page+6).'</a>&nbsp;';}
	// Affiche les options textuel
	if ($page+3 <= $nb_page){
	$echo.='&nbsp;...&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($nb_page-1).'">'.($nb_page).'</a>';}
	if($page+1 < $nb_page)
	{$echo.='&nbsp;<a href="messagerie-consulter-'.$msgid.'-'.($page+1).'">SUIVANT</a>';}
	$echo.="</p>";
return $echo;
}
?>

Un grand merci a ceux et celles qui pourront m'aider
Lire la suite 

[PHP] Pagination et rewirte url »

3 réponses
Réponse
+1
moins plus
Tu as plusieurs solutions :

- Créer une fonction pour chaque cas
- Créer une fonction qui se charge de retourner l'URL générée en fonction des paramètres (comme je l'ai fait dans mon script).
- T'amuser à faire des if/else pour chaque lien dans ta fonction
Ajouter un commentaire
Réponse
+0
moins plus
Salut.

« J'aimerai que le lien de sortie soit ou une URL réécrite (comme maintenant) ou l'URL logique »

Désolé mais je ne comprends pas ce que tu cherches à faire.
Tu veux que le lien pointe vers l'URL réécrite ou sur l'URL par défaut ?
Parce qu'on ne peut pas faire les deux en même temps ...


Au passage, voilà une fonction que j'ai codé :
http://www.commentcamarche.net/faq/20420-php-pagination
Tu peux facilement modifier l'URL générée.
coccoweb- 6 nov. 2010 à 14:16
Dans URL son possible
une logique "index.php?action=messagerie/consulter&msgid=1&page=29"
une réécrite "messagerie-consulter-1-29"

Dans l'admin, il est possible de choisir l'une ou l'autre.

Je pensai a un système qui ferai un truc du genre


index.php?action=messagerie/consulter&msgid=$1&page=$2"

messagerie-consulter-$1-$2"
Ajouter un commentaire
Ce document intitulé « [PHP] Pagination et rewirte url » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?