for($i=1;$i++;$i<=10000){
     echo $i;
}现在是输出从1到一万,
我想做成下拉菜单,如果i是当前页,就显示i附近的前后10个,往前或往后的数字不要按顺序,隔几个数字显示一个,越往前或后间距越大如当前i等于1
就显示
1,2,3,4,5,6,7,8,9,10,20,30,50,100,200,500,1000,5000,10000如i等于4000
就显示1,500,1000,2000,3000,3500,3995,3996,3997,3998,3999,4000,4001,4002,4003,4004,4014,4024,4054,5000,6000....这样怎么弄呀

解决方案 »

  1.   

    没什么,你看看discuz的分页代码就知道怎么写了。你说的也就是步进分页
      

  2.   

    我在看phpmyadmin的这块的源码,还没具体找到呢
      

  3.   

    简单的写了一下,没测试,应该是没问题的
    <?php
    $p=$_GET["page"]?$_GET["page"]:1;//当前页$step=5;//设定当前页码前后各显示多少页码
    $totalPage=50;//设定总页数
    $pagenumbers=10;//设定显示多少页码
    $pagesize=10;//设定分页尺寸if($p>$step)
    {
    $start=$p-$step;
    $end=$p+$step;

    if($end>=$totalPage)
    {
    $end=$totalPage;
    $start=$totalPage-$pagenumbers;
    }
    }
    else 
    {
    $start=1;
    $end=$pagenumbers;
    }
    for($i=$start;$i<=$end;$i++)
    {
    if($i==$p)
    {
    echo "[<b>$i</b>]";
    }
    else 
    {
    echo "[<a href='?page=$i'>$i</a>]";
    }
    }
    ?>
      

  4.   

    先谢谢 TottyAndBaty但你的程序只是显示当前页附近的,我想要的是最前最后的步进写法
      

  5.   

    楼主看看这个function fenye ($p, $total, $site)
    {
        $divide = true;
        $dividebase = 2;
        $dividecount = 2;    $powbase = 2;
        $powexp = 2;    $block = 5;
        
        $prevs = $p - $block; if ( $prevs <= 0) { $prevs = 1; }
        $prev = $p - 1; if($prev <= 0) { $prev = 1;}
        $prevb = $prevs - 1; if ( $prevb <= 0) { $prevb = 1; }
        $nexts = $p + $block + 1; if ( $nexts > $total) { $nexts = $total; }
        $next = $p + 1; if($next > $total) { $next = $total; }
        $nextb = $nexts + 1; if ( $nextb > $total) { $nextb = $total; }    $j = 10;
        $i = $prevs - $prevs % $j;
        while($i > 1)
        {
            $pagenavi = "<a href=\"$site?page=$i\">$i</a> " . $pagenavi;
            for($a = 0;$a < 2;$a++)
            {
                $i -= $j;
                if($i >= 1)
                {
                    $pagenavi = "<a href=\"$site?page=$i\">$i</a> " . $pagenavi;
                }
                else
                {
                    break;
                }
            }
            $j = $j * 10;
            $i = $prevs - $prevs % $j;
        }    for ( $i = $prevs; $i <= $p-1; $i++ )
        {
            $pagenavi .= "<a href=\"$site?page=$i\">$i</a> ";
        }
        $pagenavi .= "<strong>$p</strong> ";
        for ( $i = $p+1; $i <= $nexts; $i++ )
        {
            $pagenavi .= "<a href=\"$site?page=$i\">$i</a> ";
        }    $j = 10;
        $i = $nexts + (10 - $nexts % $j);
        while($i < $total)
        {
            $pagenavi .= "<a href=\"$site?page=$i\">$i</a> ";
            for($a = 0;$a < 2;$a++)
            {
                $i += $j;
                if($i <= $total)
                {
                    $pagenavi .= "<a href=\"$site?page=$i\">$i</a> ";
                }
                else
                {
                    break;
                }
            }
            $j = $j * 10;
            $i = $nexts + ($j - $nexts % $j);
        }    $pagenavi = "<a href=\"$site?page=$prevb\">...</a> " . $pagenavi;
        $pagenavi = "<a href=\"$site?page=$prev\">上页</a> " . $pagenavi;
        $pagenavi = "<a href=\"$site?page=1\">首页</a> " . $pagenavi;    $pagenavi .= "<a href=\"$site?page=$nextb\">...</a> ";
        $pagenavi .= "<a href=\"$site?page=$next\">下页</a> ";
        $pagenavi .= "<a href=\"$site?page=$total\">尾页</a> ";    return $pagenavi;
    }$p = $_GET['page'];
    if($p < 0)
    {
        $p = 1;
    }echo fenye($p, 1000, 'test.php');
      

  6.   

    楼主再看看这个,楼主的这个不太好弄.
    而且也没有多大的实际意义.function fenye ($p, $total, $site)
    {
        $divide = true;
        $dividebase = 2;
        $dividecount = 2;    $powbase = 2;
        $powexp = 2;    $block = 5;    $prevs = $p - $block; if ( $prevs <= 0) { $prevs = 1; }
        $prev = $p - 1; if($prev <= 0) { $prev = 1;}
        $prevb = $prevs - 1; if ( $prevb <= 0) { $prevb = 1; }
        $nexts = $p + $block + 1; if ( $nexts > $total) { $nexts = $total; }
        $next = $p + 1; if($next > $total) { $next = $total; }
        $nextb = $nexts + 1; if ( $nextb > $total) { $nextb = $total; }    $c = 2;
        while($prevs - pow($powbase, $c) > 1)
        {
            $i = $prevs - pow($powbase, $c);
            $pagenavi = "<a href=\"$site?page=$i\">$i</a> " . $pagenavi;
            $c += $powexp;
        }    if($divide === true)
        {
            $i = floor($i / $dividebase);        $count = 1;
            while($i > 1)
            {
                $pagenavi = "<a href=\"$site?page=$i\">$i</a> " . $pagenavi;
                $i = floor($i / $dividebase);
                $count++;
                if($count > $dividecount)
                {
                    break;
                }
            }
        }    for ( $i = $prevs; $i <= $p-1; $i++ )
        {
            $pagenavi .= "<a href=\"$site?page=$i\">$i</a> ";
        }
        $pagenavi .= "<strong>$p</strong> ";
        for ( $i = $p+1; $i <= $nexts; $i++ )
        {
            $pagenavi .= "<a href=\"$site?page=$i\">$i</a> ";
        }    $c = 2;
        while($nexts + pow($powbase, $c) < $total)
        {
            $i = $nexts + pow($powbase, $c);
            $pagenavi .= "<a href=\"$site?page=$i\">$i</a> ";
            $c += $powexp;
        }    if($divide === true)
        {
            $i = floor($i + (($total - $i) / $dividebase));
            $count = 1;
            while($i < $total - 1)
            {
                $pagenavi .= "<a href=\"$site?page=$i\">$i</a> ";
                $i = floor($i + (($total - $i) / $dividebase));
                $count++;
                if($count > $dividecount)
                {
                    break;
                }
            }
        }    $pagenavi = "<a href=\"$site?page=$prevb\">...</a> " . $pagenavi;
        $pagenavi = "<a href=\"$site?page=$prev\">上页</a> " . $pagenavi;
        $pagenavi = "<a href=\"$site?page=1\">首页</a> " . $pagenavi;    $pagenavi .= "<a href=\"$site?page=$nextb\">...</a> ";
        $pagenavi .= "<a href=\"$site?page=$next\">下页</a> ";
        $pagenavi .= "<a href=\"$site?page=$total\">尾页</a> ";
        $pagenavi .= '<input id="pagebox" type="text" value="' . $p . '" style="width:50px;" />';
        $pagenavi .= '<input type="button" value="Go" onclick="gopage();" style="width:30px;" />';    return $pagenavi;
    }$p = $_GET['page'];
    if($p < 0)
    {
        $p = 1;
    }echo fenye($p, 1000, 'test.php');