par
zaknaou » 12 févr. 2007, 15:29
Bonjour, j'ai trouver un asser bon script sur la pagination dans le web, le voici :
<?php
/**
* Fonction créant une pagination
*
* @param int $nb_data le nombre de donnée
* @param int $data_per_page le nombre de donnée sur une seule page
* @param int $nb_link_per_page nombre de liens affiché sur les cotés de la page courante
* @param string $url l'url de la page actuelle
* @param bool $url_rewriting activation de l'url rewriting
* @param string $var_page nom de la variable $_GET
* @param string $display contenu s'affichant avant les numéros des pages
* @return array
*/
function pagination($nb_data, $data_per_page = 10, $nb_link_per_page = 5, $url = '', $url_rewriting = false, $var_page = 'page', $display = '')
{
$data_per_page = is_numeric($data_per_page) ? $data_per_page : 10;
if ($nb_data > 0 && $nb_data > $data_per_page)
{
$nb_pages = ceil($nb_data / $data_per_page);
$current_page = !empty($_GET[$var_page]) && is_numeric($_GET[$var_page]) && $_GET[$var_page] < $nb_pages + 1 ? $_GET[$var_page] : 1;
$start_page = ($current_page - 1) * $data_per_page;
if ($url_rewriting)
{
$link = $url;
$next_page = sprintf($url, $current_page + 1);
$previous_page = sprintf($url, $current_page - 1);
$first_page = sprintf($url, 1);
$last_page = sprintf($url, $nb_pages);
}
else
{
$link .= strstr($url, '?') ? '&' : '?';
$link .= $var_page . '=';
$next_page = $link . ($current_page + 1);
$previous_page = $link . ($current_page - 1);
$first_page = $link . 1;
$last_page = $link . $nb_pages;
}
if ($current_page != 1)
{
$display .= ' <a href="' . $first_page . '" title="Première page"><<</a> ';
$display .= ' <a href="' . $previous_page . '" title="Page précédente"><</a> ';
}
for ($i = 1; $i <= $nb_pages; $i++)
{
if ($i - 1 < $current_page + $nb_link_per_page && $i + 1 > $current_page - $nb_link_per_page)
{
if ($i == $current_page)
{
$display .= ' <span>' . $i . '</span> ';
}
else
{
if ($url_rewriting)
{
$url = sprintf($link, $i);
}
else
{
$url = $link . $i;
}
$display .= ' <a href="' . $url . '" title="Page ' . $i . '">' . $i . '</a> ';
}
}
}
if ($current_page != $nb_pages)
{
$display .= ' <a href="' . $next_page . '" title="Page suivante">></a> ';
$display .= ' <a href="' . $last_page . '" title="Dernière page">>></a> ';
}
$pagination = array(
'nb_data' => $nb_data,
'nb_pages' => $nb_pages,
'start_page' => $start_page,
'data_per_page' => $data_per_page,
'current_page' => $current_page,
'display' => $display
);
return $pagination;
}
else
{
return null;
}
}
/* Petit exemple d'utilisation */
$datas = array();
for ($i = 1; $i <= 10000; $i++)
{
$datas[] = 'niah_' . $i;
}
// Avec url rewriting
$pagination = pagination(count($datas), 20, 10, 'index-%s.html', true, 'p', 'Pages : ');
// Sans url rewriting
$pagination = pagination(count($datas), 20, 10, $_SERVER['PHP_SELF'], false, 'p', 'Pages : ');
$datas = array_slice($datas, $pagination['start_page'], $pagination['data_per_page']);
foreach ($datas as $data)
{
echo $data . '<br />';
}
echo '<br />' . $pagination['display'];
?>
Quand je le porte sur le serveur je me rend compte qu'il a niah_1,2,3... 10000, bon ce n'est pas une surprise, mais comment remplasser niah_ par
$message que je définirait moi même en haut de la page, en sachant que sa ne selectionne pas 20 enregistrement ou valeur de $message mais par exemple 1359 caractères...
Si j'en demande trop dites-le moi, y a une partie du script (la fin) que je ne comprend pas du tout...
Merci...
Bonjour, j'ai trouver un asser bon script sur la pagination dans le web, le voici :
[php]
<?php
/**
* Fonction créant une pagination
*
* @param int $nb_data le nombre de donnée
* @param int $data_per_page le nombre de donnée sur une seule page
* @param int $nb_link_per_page nombre de liens affiché sur les cotés de la page courante
* @param string $url l'url de la page actuelle
* @param bool $url_rewriting activation de l'url rewriting
* @param string $var_page nom de la variable $_GET
* @param string $display contenu s'affichant avant les numéros des pages
* @return array
*/
function pagination($nb_data, $data_per_page = 10, $nb_link_per_page = 5, $url = '', $url_rewriting = false, $var_page = 'page', $display = '')
{
$data_per_page = is_numeric($data_per_page) ? $data_per_page : 10;
if ($nb_data > 0 && $nb_data > $data_per_page)
{
$nb_pages = ceil($nb_data / $data_per_page);
$current_page = !empty($_GET[$var_page]) && is_numeric($_GET[$var_page]) && $_GET[$var_page] < $nb_pages + 1 ? $_GET[$var_page] : 1;
$start_page = ($current_page - 1) * $data_per_page;
if ($url_rewriting)
{
$link = $url;
$next_page = sprintf($url, $current_page + 1);
$previous_page = sprintf($url, $current_page - 1);
$first_page = sprintf($url, 1);
$last_page = sprintf($url, $nb_pages);
}
else
{
$link .= strstr($url, '?') ? '&' : '?';
$link .= $var_page . '=';
$next_page = $link . ($current_page + 1);
$previous_page = $link . ($current_page - 1);
$first_page = $link . 1;
$last_page = $link . $nb_pages;
}
if ($current_page != 1)
{
$display .= ' <a href="' . $first_page . '" title="Première page"><<</a> ';
$display .= ' <a href="' . $previous_page . '" title="Page précédente"><</a> ';
}
for ($i = 1; $i <= $nb_pages; $i++)
{
if ($i - 1 < $current_page + $nb_link_per_page && $i + 1 > $current_page - $nb_link_per_page)
{
if ($i == $current_page)
{
$display .= ' <span>' . $i . '</span> ';
}
else
{
if ($url_rewriting)
{
$url = sprintf($link, $i);
}
else
{
$url = $link . $i;
}
$display .= ' <a href="' . $url . '" title="Page ' . $i . '">' . $i . '</a> ';
}
}
}
if ($current_page != $nb_pages)
{
$display .= ' <a href="' . $next_page . '" title="Page suivante">></a> ';
$display .= ' <a href="' . $last_page . '" title="Dernière page">>></a> ';
}
$pagination = array(
'nb_data' => $nb_data,
'nb_pages' => $nb_pages,
'start_page' => $start_page,
'data_per_page' => $data_per_page,
'current_page' => $current_page,
'display' => $display
);
return $pagination;
}
else
{
return null;
}
}
/* Petit exemple d'utilisation */
$datas = array();
for ($i = 1; $i <= 10000; $i++)
{
$datas[] = 'niah_' . $i;
}
// Avec url rewriting
$pagination = pagination(count($datas), 20, 10, 'index-%s.html', true, 'p', 'Pages : ');
// Sans url rewriting
$pagination = pagination(count($datas), 20, 10, $_SERVER['PHP_SELF'], false, 'p', 'Pages : ');
$datas = array_slice($datas, $pagination['start_page'], $pagination['data_per_page']);
foreach ($datas as $data)
{
echo $data . '<br />';
}
echo '<br />' . $pagination['display'];
?>
[/php]
Quand je le porte sur le serveur je me rend compte qu'il a niah_1,2,3... 10000, bon ce n'est pas une surprise, mais comment remplasser niah_ par [color=red]$message[/color] que je définirait moi même en haut de la page, en sachant que sa ne selectionne pas 20 enregistrement ou valeur de $message mais par exemple 1359 caractères...
Si j'en demande trop dites-le moi, y a une partie du script (la fin) que je ne comprend pas du tout...
Merci...