<?php
define("PAGER_PREV_TEXT", "&laquo; Prev");
define("PAGER_NEXT_TEXT", "Next &raquo;");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>&nbsp;&nbsp;';// 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 .= '&nbsp;<b>' . $jump_to_page . '</b>&nbsp;';
        } else {
          $display_links_string .= '&nbsp;<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>&nbsp;';
        }
      }// 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>&nbsp;';// next button
      if (($this->current_page_number < $this->number_of_pages) && ($this->number_of_pages != 1)) $display_links_string .= '&nbsp;<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>&nbsp;';      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('"' => '&quot;'));
  } 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));
?>