慕前端6476978
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
</head>
<body>
<?php
/**
* Created by PhpStorm.
* User: 123
* Date: 2020/2/14
* Time: 12:16
*/
/*1.传入页码*/
$page = $_GET['p'];
/*2.根据页码取出数据, php -> mysql*/
$host = "localhost";
$username = "root";
$password = "123456";
$db = "page";
$pageSize = 3;
$showPage = 5;
//连接数据库
$conn = mysqli_connect($host, $username, $password, $db);
if (!$conn) {
var_dump("连接失败");
}
//设置数据库的编码格式,防止乱码
mysqli_query($conn, "SET NAMES UTF8");
//编写sql获取分页数据 SELECT * FROM 表名 LIMIT 起始位置,显示条数
$sql = "SELECT * FROM test LIMIT " . ($page - 1) * $pageSize . ",{$pageSize}";
//把sql语句传送数据中
$result = mysqli_query($conn, $sql);
//处理数据
echo "<table border='1' cellspacing='0' width='40%' class='margin: 0 auto'>";
echo "<tr><td>ID</td><td>name</td></tr>";
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr><td>{$row['id']}</td><td>{$row['name']}</td></tr>";
}
echo "</table>";
//释放结果,关闭连接
mysqli_free_result($result);
//获取数据总数
$total_sql = "SELECT COUNT(*) FROM test";
$total_result = mysqli_fetch_assoc(mysqli_query($conn, $total_sql));
$total = $total_result['COUNT(*)'];
$total_page = ceil($total / $pageSize);
mysqli_close($conn);
//3.显示数据 + 分页条
$page_banner = '';
if ($page > 1) {
$page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p=1" . "'>首页</a>";
$page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p=" . ($page - 1) . "'>上一页</a>";
}
//初始化数据
$start = 1; //开始页面
$end = $total_page; //结束页面
$pageOffset = ($showPage - 1) / 2;
if ($total_page > $showPage) { //如果总页面大于显示的页面
if ($page > $pageOffset + 1) { //如果当前页面大于偏移量
$page_banner .= "...";
}
if ($page > $pageOffset) { //当前页大于偏移量
$start = $page - $pageOffset;
$end = $total_page > $page + $pageOffset ? $page + $pageOffset : $total_page;
} else {
$start = 1;
$end = $total_page > $showPage ? $showPage : $total_page;
}
if ($page + $pageOffset > $total_page) {
$start = $start - ($page + $pageOffset - $end);
}
}
for ($i = $start; $i <= $end; $i++) {
$page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p={$i}" . "'>{$i}</a>";
}
//尾部省略
if ($total_page > $showPage && $total_page > $page + $pageOffset){
$page_banner .= "...";
}
if ($page < $total_page) {
$page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p=" . ($page + 1) . "'>下一页</a>";
$page_banner .= "<a href='" . "{$_SERVER['PHP_SELF']}?p={$total_page}" . "'>尾页</a>";
}
$page_banner .= "总页数{$total_page},";
$page_banner .= "<form action='demo1.php' method='get'>";
$page_banner .= "到第<input type='text' size='2' name='p'>页";
$page_banner .= "<input type='submit' value='确定'>";
$page_banner .= "</form>";
echo $page_banner;
?>
</body>
</html>
会偷鱼的猫
if($page<1 || $page>$total_page || !preg_match("/^\d*$/",$page)){ echo "页码不正确"; die(); }
慕田峪2038597
可以用int把浮点型自己强制转换成整形,不转化的话应该也可以但是考虑到浮点型有精度丢失还是转一下比较好
一段故事是另一段童话的开
用JS判断啊,<form onsubmit="return check()"/>
LEO3917274
把该分页代码封装成一个类,留下连接数据库和查询语句的接口即可实现只要填充数据就可以了
Xavier3
我有 要发一份给你吗
weibo_蓉芳107_03763669
在代码前面加对get来的数据p进行判断就好,比如
$page = intval($_GET['p']);
$page = empty($page) ? 1 : $page;
雪颲
那个如果处理的话用html的样式处理变得不可以点击,最好还要用后台检查一下$p的范围
邀魂斩月
center说的是块元素里面的内容 不是div本身 div居中用margin:(0 auto)
徐逸以轩
我自己找到原因了 我晕 我第79行的$page_banner.= 少了一个拼接. 导致出错 。出现和我一样情况的 注意一下 $page_banner.=是不是没加.
mumu160
我知道原因了 我晕 自己检查一下 是不是所有$page_banner.= 都加了.了 除了第一个 少一个.=就会出现这种情况!!!!!!!!!!
Yu_hy
跳转操作其实就是函数本身call自己,所以输入的数字是call程序本身的参数p
那么你在开头对p做一个判断就行了
$pageNum = intval($_GET['p']);// a function to get the parameter from current page
$pageNum = empty($pageNum)||$pageNum<1?1:$pageNum;
超过页面数量的话可以不用管、不会报错,如果想判断也是同理的
笑出强大_0
可以写到任何位置,有些css js的引用放body后边是为了先显示页面给用户,防止中间某个js css响应慢,用户会一直看着空白页面,它就有可能关掉不看了
dwadawd
//获取页码
$pageNum = isset($_GET['p']) ? trim($_GET['p']) : 1;
//判断页码是否非法
if (!(preg_match('/^[1-9]\d*$/', $pageNum) && (1 <= $pageNum) && ($pageNum <= $pageTotal)))
{
echo "<script> alert('输入的页码非法'); window.history.back(); </script>";
}
Ablus
$page_banner.="到第<input type='text' size='2' name='p' value='$page'>页";加value属性赋值为$page,就可以了
yshlyqj
T_CONSTANT_ENCAPSED_STRING为PHP的内置解析器代号(此代号表示字符串解析器)
当解析器无法解析字符串时,会报出你上面贴出来的这个错误
把前后几行代码都贴出来