为了账号安全,请及时绑定邮箱和手机立即绑定

mysql通过php实现下拉框分页

标签:
PHP MySQL

以数据库test里的user表为例:

$host = 'localhost';
$username = 'root';
$password = '';
$dbname = 'test';

// 开始获取数据库连接
$conn = mysql_connect($host, $username, $password);
if (!$conn)
{
    die('未能连接数据库: ' . mysql_error());
}
// 手动更改客户端编码
mysql_query("set names utf8");
// 选择使用哪一个数据库
mysql_select_db($dbname);

// 获取总的记录数
$sql_count = "select count(*) from user";
$total_records_result = mysql_query($sql_count);
if ($total_records_result) {
    $total_records = mysql_fetch_row($total_records_result);
} else {
    echo "<script>alert('未查询到数据');history.back();</script>";
    exit;
}
echo "总的记录数位: ".$total_records[0]."<br>";

// 获得总页数,一般来说页面大小事固定的,所以这里暂且定为一页5个数据
$page_size = 10;
$total_pages = ceil($total_records[0]/$page_size);
echo "总页数为: ".$total_pages;

// 通过GET方式获得客户端访问的页码
$current_page_number = isset($_GET['page_number'])?$_GET['page_number']:1;
//判断页码越界
if($current_page_number<1) {
    $current_page_number =1;
}
if($current_page_number>$total_pages){
    $current_page_number = $total_pages;
}
echo "要访问的页码为:".$current_page_number;

// 获取到了要访问的页面以及页面大小,开始分页
$begin_position = ($current_page_number-1)*$page_size;
$sql = "select * from user limit " .$begin_position . "," .$page_size;
$result = mysql_query($sql);
// 处理结果集
echo "<table border='#CCF solid 1px'>";
echo "<tr><td>序号</td><td>姓名</td><td>性别</td></tr>";
while(($row = mysql_fetch_assoc($result))){
    echo "<tr>";
    echo "<td>".$row['id']."</td>";
    echo "<td>".$row['name']."</td>";
    echo "<td>".$row['sex']."</td>";
    echo "</tr>";
}
echo "</table>";
//下拉框显示页码
echo '<form name="select_form" method="get" action="">';
echo '跳转到:<select name = "page_number" onchange="javascript:select_form.submit()">';
for($i=1;$i<=$total_pages;$i++){
    if ($i == $current_page_number) {
        echo '<option value="'. $i .'"selected="selected">第' . $i . '页</option>';
    } else {
        echo '<option value="'. $i .'">第' . $i . '页</option>';
    }
}
echo '</select>';
echo '</form>';
if ($current_page_number != 1) {
    echo '<a href="'. $_SERVER['PHP_SELF'] .'?page_number=1">首页</a>&nbsp;&nbsp;';
    if ($current_page_number != 2) {
        echo '<a href="'. $_SERVER['PHP_SELF'] .'?page_number='.($current_page_number-1).'">上一页</a>&nbsp;&nbsp;';
    }
}
if ($current_page_number != $total_pages) {
    echo '<a href="'. $_SERVER['PHP_SELF'] .'?page_number='.($current_page_number+1).'">下一页</a>&nbsp;&nbsp;';
    echo '<a href="'. $_SERVER['PHP_SELF'] .'?page_number='.($total_pages).'">尾页</a>&nbsp;&nbsp;';
}
// 释放数据连接资源
mysql_free_result($result);
mysql_close($conn);

请注意一下问题:

  1. mysql_query()后续有3种处理方法:
    mysql_fetch_row():从结果集中取得一行作为数字数组;
    mysql_fetch_assoc():从结果集中取得一行作为关联数组;
    mysql_fetch_array():从结果集中取得一行作为关联数组,或数字数组,或二者兼有
    这3种方法都是从结果集种取得一行作为数组,根据表中的数据和需要输出的结果选择其中一种方法。mysql_fetch_array()是前两者的综合,效率和前两者相同,并无明显差距。为了前端输出更清楚,这里我选择的是mysql_fetch_assoc。
    这3种方法返回的结果都是带有指针的,每次调用的时候除了做取出的动作还会对指针位置向前移动,如果结果集没有任何数据了则反回false。所以如果不参与循环 , 那取回的数据自然就只有一行,而参与while()循环输出是方便的选择。
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消