有个问题请朋友们讲解下,在写分页的时候实现这种分页效果
[首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
其中,[首页]    [上页]   [下页]   [尾页]   的功能我都能实现,就是其中那种动态生成数字分页是如何实现的呢请解答下谢谢
希望能具体讲解下输出这些数字页码的算法思路 比较急再次感谢大家!

解决方案 »

  1.   

    这个,我也是和你一样,当初想过这样的方法
    n=数据库的条数/每页显示条数
    用个while循环一下,不过我没试过,呵呵````` 
      

  2.   

    <?php
    //加载连接数据库的文件
    include 'connect-database-yyl.php';
    //分页处理
    $pagesize = 5; //每页记录数
    //获取本页路径
    $url = $_SERVER['REQUEST_URI'];
    $url = parse_url ( $url );
    $url = $url [path];
    $url = 'localhost/'.$url;$sql = "select * from yllq";
    $query = mysql_query($sql);
    //获取总共记录条数
    $num = mysql_num_rows ( $query );
    //获取到页面后从指定第几条记录开始查询
    if ($_GET[page])
    {
    $pageval = $_GET[page];
    $page = ($pageval-1)*$pagesize;
    $page.=',';
    }
    //当记录总数大于页面显示总数时才分页
    if ($num>$pagesize)
    {echo $url;
    if ($pageval<=1) {$pageval = 1;
    echo "共 $num 条记录".
         "<a href=$url?page=".($pageval+1).">下一页</a>";
    }
    elseif ($pageval>=($num/$pagesize)) {
     echo "共 $num 条记录".
         "<a href=$url?page=".($pageval-1).">上一页</a>";
    }
    else {
     echo "共 $num 条记录".
         "<a href=$url?page=".($pageval-1).">上一页</a>";
     ?>
     <?php $i=1;   //循环显示页面数字
     while($i<$num/$pagesize)
     {
      echo "<a href=$url?page=".($i)."><span style=\"width:20px;\">$i</span></a>";
      $i=$i+1;
     }
      
     echo "<a href=$url?page=".($pageval+1).">下一页</a>";
     $i=1;
    }
    }
    $sql = "select * from yllq limit $page $pagesize";
    $query = mysql_query($sql);
    ?>
    <center>
    <table width="500" border="0" cellpadding="5" cellspacing="1"
    bgcolor="#add3ef">
    <?php
    //获取第一行数据
    $result = mysql_fetch_array ( $query );
    while ( ! empty ( $result ) ) {
    //输出
    ?>
    <tr bgcolor="#eff3ff">
    <td><?php
    echo $result ["id"];
    ?></td>
    <td><?php
    echo checkchar ( $result ["message"] );
    ?></td>
    <?php
    //获取下一行数据 
    $result = mysql_fetch_array ( $query );
    }
    ?></table>
    <form name="form" action="message_insert.php" method="post"
    onsubmit="return checkform()"><textarea name="content" cols="40"
    rows="8" wrap="PHYSICAL" maxlength="1000"></textarea><br>
    <input type="submit" name="submit" value="提交"></form>
    </center>
    <!-- 使用Javascript验证表单提交内容 -->
    <SCRIPT language="Javascript">
    function checkform()
    {
    if (form.content.value=="")
    {
    alert ("内容不能为空!");
    return false;
    }
    return true;

    }
    </SCRIPT>
    刚才试了一下,可以了,楼主要是不说,我也不记得当初是杂想的了
    初学php,写的比较乱,页面显示和表单验证都写在一个文件里面了,对了,这个文件 只是负责显示,数据库的连接和插入数据库的文件都是独立的,这里调用一下
      

  3.   

    Discuz!的拿来给你借鉴下,换成文字的效果很容易改:
    function multi($num, $perpage, $curpage, $mpurl, $maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) {
    global $maxpage;
    $ajaxtarget = !empty($_GET['ajaxtarget']) ? " ajaxtarget=\"".dhtmlspecialchars($_GET['ajaxtarget'])."\" " : ''; $multipage = '';
    $mpurl .= strpos($mpurl, '?') ? '&amp;' : '?';
    $realpages = 1;
    if($num > $perpage) {
    $offset = 2; $realpages = @ceil($num / $perpage);
    $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages; if($page > $pages) {
    $from = 1;
    $to = $pages;
    } else {
    $from = $curpage - $offset;
    $to = $from + $page - 1;
    if($from < 1) {
    $to = $curpage + 1 - $from;
    $from = 1;
    if($to - $from < $page) {
    $to = $page;
    }
    } elseif($to > $pages) {
    $from = $pages - $page + 1;
    $to = $pages;
    }
    } $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="'.$mpurl.'page=1" class="first"'.$ajaxtarget.'>1 ...</a>' : '').
    ($curpage > 1 && !$simple ? '<a href="'.$mpurl.'page='.($curpage - 1).'" class="prev"'.$ajaxtarget.'>&lsaquo;&lsaquo;</a>' : '');
    for($i = $from; $i <= $to; $i++) {
    $multipage .= $i == $curpage ? '<strong>'.$i.'</strong>' :
    '<a href="'.$mpurl.'page='.$i.($ajaxtarget && $i == $pages && $autogoto ? '#' : '').'"'.$ajaxtarget.'>'.$i.'</a>';
    } $multipage .= ($curpage < $pages && !$simple ? '<a href="'.$mpurl.'page='.($curpage + 1).'" class="next"'.$ajaxtarget.'>&rsaquo;&rsaquo;</a>' : '').
    ($to < $pages ? '<a href="'.$mpurl.'page='.$pages.'" class="last"'.$ajaxtarget.'>... '.$realpages.'</a>' : '').
    (!$simple && $pages > $page && !$ajaxtarget ? '<kbd><input type="text" name="custompage" size="3" onkeydown="if(event.keyCode==13) {window.location=\''.$mpurl.'page=\'+this.value; return false;}" /></kbd>' : ''); $multipage = $multipage ? '<div class="pages">'.(!$simple ? '<em>&nbsp;'.$num.'&nbsp;</em>' : '').$multipage.'</div>' : '';
    }
    $maxpage = $realpages;
    return $multipage;
    }