<?php
define("PAGER_PREV_TEXT", "« Prev");
define("PAGER_NEXT_TEXT", "Next »");class pager {
var $sql_query, $number_of_rows, $current_page_number, $number_of_pages, $number_of_rows_per_page, $page_name; function pager($query, $max_rows, $count_key = '*', $page_holder = 'page') {
global $HTTP_GET_VARS, $HTTP_POST_VARS;
$this->sql_query = strtolower($query);
$this->page_name = $page_holder; if (isset($HTTP_GET_VARS[$page_holder])) {
$page = $HTTP_GET_VARS[$page_holder];
} elseif (isset($HTTP_POST_VARS[$page_holder])) {
$page = $HTTP_POST_VARS[$page_holder];
} else {
$page = '';
} if (empty($page) || !is_numeric($page)) $page = 1;
$this->current_page_number = $page; $this->number_of_rows_per_page = $max_rows; $pos_to = strlen($this->sql_query);
$pos_from = strpos($this->sql_query, ' from', 0); $pos_group_by = strpos($this->sql_query, ' group by', $pos_from);
if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by; $pos_having = strpos($this->sql_query, ' having', $pos_from);
if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having; $pos_order_by = strpos($this->sql_query, ' order by', $pos_from);
if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by; if (strpos($this->sql_query, 'distinct') || strpos($this->sql_query, 'group by')) {
$count_string = 'distinct ' . addslashes($count_key);
} else {
$count_string = addslashes($count_key);
}
$count_query = mysql_query("select count(" . $count_string . ") as total " . substr($this->sql_query, $pos_from, ($pos_to - $pos_from)));
$count = mysql_fetch_array($count_query); $this->number_of_rows = $count['total'];
$this->number_of_pages = ceil($this->number_of_rows / $this->number_of_rows_per_page); if ($this->current_page_number > $this->number_of_pages) {
$this->current_page_number = $this->number_of_pages;
} $offset = ($this->number_of_rows_per_page * ($this->current_page_number - 1));
$this->sql_query .= " limit " . max($offset, 0) . ", " . $this->number_of_rows_per_page;
}
function display_links($max_page_links, $parameters = '') {
global $PHP_SELF, $request_type; $display_links_string = ''; $class = 'class="pageLink"'; if ($this->not_null($parameters) && (substr($parameters, -1) != '&')) $parameters .= '&';// previous button - not displayed on first page
if ($this->current_page_number > 1) $display_links_string .= '<a href="' . $this->make_link(basename($PHP_SELF), $parameters . $this->page_name . '=' . ($this->current_page_number - 1), $request_type) . '" class="pageLink"><u>' . PAGER_PREV_TEXT . '</u></a> ';// check if number_of_pages > $max_page_links
$cur_window_num = intval($this->current_page_number / $max_page_links);
if ($this->current_page_number % $max_page_links) $cur_window_num++; $max_window_num = intval($this->number_of_pages / $max_page_links);
if ($this->number_of_pages % $max_page_links) $max_window_num++;// previous window of pages
if ($cur_window_num > 1) $display_links_string .= '<a href="' . $this->make_link(basename($PHP_SELF), $parameters . $this->page_name . '=' . (($cur_window_num - 1) * $max_page_links), $request_type) . '" class="pageLink">...</a>';// page nn button
for ($jump_to_page = 1 + (($cur_window_num - 1) * $max_page_links); ($jump_to_page <= ($cur_window_num * $max_page_links)) && ($jump_to_page <= $this->number_of_pages); $jump_to_page++) {
if ($jump_to_page == $this->current_page_number) {
$display_links_string .= ' <b>' . $jump_to_page . '</b> ';
} else {
$display_links_string .= ' <a href="' . $this->make_link(basename($PHP_SELF), $parameters . $this->page_name . '=' . $jump_to_page, $request_type) . '" class="pageLink"><u>' . $jump_to_page . '</u></a> ';
}
}// next window of pages
if ($cur_window_num < $max_window_num) $display_links_string .= '<a href="' . $this->make_link(basename($PHP_SELF), $parameters . $this->page_name . '=' . (($cur_window_num) * $max_page_links + 1), $request_type) . '" class="pageLink">...</a> ';// next button
if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 1)) $display_links_string .= ' <a href="' . $this->make_link(basename($PHP_SELF), $parameters . 'page=' . ($this->current_page_number + 1), $request_type) . '" class="pageLink"><u>' . PAGER_NEXT_TEXT . '</u></a> '; return $display_links_string;
}// display number of total products found
function display_count($text_output) {
$to_num = ($this->number_of_rows_per_page * $this->current_page_number);
if ($to_num > $this->number_of_rows) $to_num = $this->number_of_rows; $from_num = ($this->number_of_rows_per_page * ($this->current_page_number - 1)); if ($to_num == 0) {
$from_num = 0;
} else {
$from_num++;
} return sprintf($text_output, $from_num, $to_num, $this->number_of_rows);
}
function not_null($value) {
if (is_array($value)) {
if (sizeof($value) > 0) {
return true;
} else {
return false;
}
} else {
if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {
return true;
} else {
return false;
}
}
}
function parse_input_field_data($data, $parse) {
return strtr(trim($data), $parse);
}
function make_good_string($string, $translate = false, $protected = false) {
if ($protected == true) {
return htmlspecialchars($string);
} else {
if ($translate == false) {
return $this->parse_input_field_data($string, array('"' => '"'));
} else {
return $this->parse_input_field_data($string, $translate);
}
}
}
function make_link($page = '', $parameters = '') {
$link = "";
if ($this->not_null($parameters)) {
$link .= $page . '?' . $this->make_good_string($parameters);
} else {
$link .= $page;
}
return $link;
}
}
?>
这是分页类 求指教
这个是一个老大借我的分页类 现在只有其中一个列表页为正常的 其他的列表页分页显示为负的 不解
另我想输出的分页1 2 3 4 5 每个都为div形式输出 这样我能更好的控制他的样式 怎么改 求指教!~
php源码如下:<?
$sql="SELECT * FROM ma_program,ma_programcategory
WHERE ma_program.ProgramID=ma_programcategory.ProgramID
AND ma_programcategory.CategoryParentID=".$CategoryID."
ORDER BY ma_programcategory.CategoryID DESC";
require('pager.php');
$pager=new pager($sql,12);$result=mysql_query($pager->sql_query) or die(mysql_error());
while($row=mysql_fetch_array($result,MYSQL_ASSOC))
{
echo"<li><div class='film'>
<span><a href='detail.php?ProgramID={$row['ProgramID']}'><img src='http://localhost/{$row['ProgramPicture']}' class='img_film'/></a>
<br>
<a href='detail.php?ProgramID={$row['ProgramID']}' class='film_font'>{$row['ProgramName']}</a></span>
</div>
</li>";
}print_r($pager->display_links(5,"CategoryID=".$CategoryID));
?>
define("PAGER_PREV_TEXT", "« Prev");
define("PAGER_NEXT_TEXT", "Next »");class pager {
var $sql_query, $number_of_rows, $current_page_number, $number_of_pages, $number_of_rows_per_page, $page_name; function pager($query, $max_rows, $count_key = '*', $page_holder = 'page') {
global $HTTP_GET_VARS, $HTTP_POST_VARS;
$this->sql_query = strtolower($query);
$this->page_name = $page_holder; if (isset($HTTP_GET_VARS[$page_holder])) {
$page = $HTTP_GET_VARS[$page_holder];
} elseif (isset($HTTP_POST_VARS[$page_holder])) {
$page = $HTTP_POST_VARS[$page_holder];
} else {
$page = '';
} if (empty($page) || !is_numeric($page)) $page = 1;
$this->current_page_number = $page; $this->number_of_rows_per_page = $max_rows; $pos_to = strlen($this->sql_query);
$pos_from = strpos($this->sql_query, ' from', 0); $pos_group_by = strpos($this->sql_query, ' group by', $pos_from);
if (($pos_group_by < $pos_to) && ($pos_group_by != false)) $pos_to = $pos_group_by; $pos_having = strpos($this->sql_query, ' having', $pos_from);
if (($pos_having < $pos_to) && ($pos_having != false)) $pos_to = $pos_having; $pos_order_by = strpos($this->sql_query, ' order by', $pos_from);
if (($pos_order_by < $pos_to) && ($pos_order_by != false)) $pos_to = $pos_order_by; if (strpos($this->sql_query, 'distinct') || strpos($this->sql_query, 'group by')) {
$count_string = 'distinct ' . addslashes($count_key);
} else {
$count_string = addslashes($count_key);
}
$count_query = mysql_query("select count(" . $count_string . ") as total " . substr($this->sql_query, $pos_from, ($pos_to - $pos_from)));
$count = mysql_fetch_array($count_query); $this->number_of_rows = $count['total'];
$this->number_of_pages = ceil($this->number_of_rows / $this->number_of_rows_per_page); if ($this->current_page_number > $this->number_of_pages) {
$this->current_page_number = $this->number_of_pages;
} $offset = ($this->number_of_rows_per_page * ($this->current_page_number - 1));
$this->sql_query .= " limit " . max($offset, 0) . ", " . $this->number_of_rows_per_page;
}
function display_links($max_page_links, $parameters = '') {
global $PHP_SELF, $request_type; $display_links_string = ''; $class = 'class="pageLink"'; if ($this->not_null($parameters) && (substr($parameters, -1) != '&')) $parameters .= '&';// previous button - not displayed on first page
if ($this->current_page_number > 1) $display_links_string .= '<a href="' . $this->make_link(basename($PHP_SELF), $parameters . $this->page_name . '=' . ($this->current_page_number - 1), $request_type) . '" class="pageLink"><u>' . PAGER_PREV_TEXT . '</u></a> ';// check if number_of_pages > $max_page_links
$cur_window_num = intval($this->current_page_number / $max_page_links);
if ($this->current_page_number % $max_page_links) $cur_window_num++; $max_window_num = intval($this->number_of_pages / $max_page_links);
if ($this->number_of_pages % $max_page_links) $max_window_num++;// previous window of pages
if ($cur_window_num > 1) $display_links_string .= '<a href="' . $this->make_link(basename($PHP_SELF), $parameters . $this->page_name . '=' . (($cur_window_num - 1) * $max_page_links), $request_type) . '" class="pageLink">...</a>';// page nn button
for ($jump_to_page = 1 + (($cur_window_num - 1) * $max_page_links); ($jump_to_page <= ($cur_window_num * $max_page_links)) && ($jump_to_page <= $this->number_of_pages); $jump_to_page++) {
if ($jump_to_page == $this->current_page_number) {
$display_links_string .= ' <b>' . $jump_to_page . '</b> ';
} else {
$display_links_string .= ' <a href="' . $this->make_link(basename($PHP_SELF), $parameters . $this->page_name . '=' . $jump_to_page, $request_type) . '" class="pageLink"><u>' . $jump_to_page . '</u></a> ';
}
}// next window of pages
if ($cur_window_num < $max_window_num) $display_links_string .= '<a href="' . $this->make_link(basename($PHP_SELF), $parameters . $this->page_name . '=' . (($cur_window_num) * $max_page_links + 1), $request_type) . '" class="pageLink">...</a> ';// next button
if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 1)) $display_links_string .= ' <a href="' . $this->make_link(basename($PHP_SELF), $parameters . 'page=' . ($this->current_page_number + 1), $request_type) . '" class="pageLink"><u>' . PAGER_NEXT_TEXT . '</u></a> '; return $display_links_string;
}// display number of total products found
function display_count($text_output) {
$to_num = ($this->number_of_rows_per_page * $this->current_page_number);
if ($to_num > $this->number_of_rows) $to_num = $this->number_of_rows; $from_num = ($this->number_of_rows_per_page * ($this->current_page_number - 1)); if ($to_num == 0) {
$from_num = 0;
} else {
$from_num++;
} return sprintf($text_output, $from_num, $to_num, $this->number_of_rows);
}
function not_null($value) {
if (is_array($value)) {
if (sizeof($value) > 0) {
return true;
} else {
return false;
}
} else {
if (($value != '') && (strtolower($value) != 'null') && (strlen(trim($value)) > 0)) {
return true;
} else {
return false;
}
}
}
function parse_input_field_data($data, $parse) {
return strtr(trim($data), $parse);
}
function make_good_string($string, $translate = false, $protected = false) {
if ($protected == true) {
return htmlspecialchars($string);
} else {
if ($translate == false) {
return $this->parse_input_field_data($string, array('"' => '"'));
} else {
return $this->parse_input_field_data($string, $translate);
}
}
}
function make_link($page = '', $parameters = '') {
$link = "";
if ($this->not_null($parameters)) {
$link .= $page . '?' . $this->make_good_string($parameters);
} else {
$link .= $page;
}
return $link;
}
}
?>
这是分页类 求指教
这个是一个老大借我的分页类 现在只有其中一个列表页为正常的 其他的列表页分页显示为负的 不解
另我想输出的分页1 2 3 4 5 每个都为div形式输出 这样我能更好的控制他的样式 怎么改 求指教!~
php源码如下:<?
$sql="SELECT * FROM ma_program,ma_programcategory
WHERE ma_program.ProgramID=ma_programcategory.ProgramID
AND ma_programcategory.CategoryParentID=".$CategoryID."
ORDER BY ma_programcategory.CategoryID DESC";
require('pager.php');
$pager=new pager($sql,12);$result=mysql_query($pager->sql_query) or die(mysql_error());
while($row=mysql_fetch_array($result,MYSQL_ASSOC))
{
echo"<li><div class='film'>
<span><a href='detail.php?ProgramID={$row['ProgramID']}'><img src='http://localhost/{$row['ProgramPicture']}' class='img_film'/></a>
<br>
<a href='detail.php?ProgramID={$row['ProgramID']}' class='film_font'>{$row['ProgramName']}</a></span>
</div>
</li>";
}print_r($pager->display_links(5,"CategoryID=".$CategoryID));
?>
http://wenku.baidu.com/view/9e7eae3a87c24028915fc3f9.html