Skip to content
Extraits de code Groupes Projets
Valider 2982ba71 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

permettre a la pagination de trouver toute seule la page qui contient un id donne :

Exemple :
Dans une boucle comme celle la
<B_pagi>
	[<p class="pagination">(#PAGINATION)</p>]
	<ul>
	<BOUCLE_pagi(ARTICLES){par titre}{pagination}>
		<li>#ID_ARTICLE : #TITRE</li>

	</BOUCLE_pagi>
	</ul>
</B_pagi>

&debut_pagi=10 place la pagination sur la deuxieme page (a partir du 10eme element de la liste)
&debut_pagi=@231 place la pagination sur la page qui contient l'id_article 231

Permet donc de donner une url permanente vers un item d'une liste paginee. Mais attention aux moteurs de recherche qui risquent de visiter chaque url et de fatiguer votre serveur !
parent 20aa66d9
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -146,9 +146,16 @@ function critere_pagination_dist($idb, &$boucles, $crit) {
$boucle = &$boucles[$idb];
$boucle->mode_partie = 'p+';
$boucle->partie = 'intval(isset($Pile[0][\'debut\'.'.$debut.']) ? $Pile[0][\'debut\'.'.$debut.'] : _request(\'debut\'.'.$debut.'))';
$boucle->partie = 'substr($partie=(isset($Pile[0][\'debut\'.'.$debut.']) ? $Pile[0][\'debut\'.'.$debut.'] : _request(\'debut\'.'.$debut.')),0,1)==\'@\'?
($Pile[0][\'debut\'.'.$debut.'] = quete_debut_pagination(\''.$boucle->primary.'\',substr($partie,1),'.intval($pas).',calculer_select($select, $from, $type, $where, $join, $groupby, $orderby, $limit, $having, $table, $id, $connect)))
:intval($partie)';
$boucle->modificateur['debut_nom'] = $debut;
$boucle->total_parties = $pas;
// ajouter la cle primaire dans le select pour pouvoir gerer la pagination referencee par @id
$t = $boucle->id_table . '.' . $boucle->primary;
if (!in_array($t, $boucles[$idb]->select))
$boucle->select[]= $t;
}
// {recherche} ou {recherche susan}
......
......@@ -236,4 +236,17 @@ function calcul_exposer ($id, $prim, $reference, $parent, $type, $connect='') {
return isset($exposer[$m][$prim]) ? isset($exposer[$m][$prim][$id]) : '';
}
function quete_debut_pagination($primary,$valeur,$pas,$res){
$pos = 0;
while ($row = sql_fetch($res) AND $row[$primary]!==$valeur)
$pos++;
sql_free($res);
// si on a pas trouve
if ($row[$primary]!==$valeur)
return 0;
// sinon, calculer le bon numero de page
return floor($pos/$pas)*$pas;
}
?>
\ No newline at end of file
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter