用户名:  密码:   
您当前的位置:首页 > 网页设计 >  PHP > 

PHP连接与操作数据库分页代码

上次修改时间: 2024-08-13 11:58:03      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\PHP相关\      下一页

PHP连接与操作数据库常用代码

============连接数据库用到的代码========================================
//这里的代码可保存到单的conn.php文件, 在其它文件中用require "admin/conn.php";引用,或Require_once "conn.php";
$servername = "192.168.13.77";
$username = "root";
$password = "root";
$dbname = "ctcms";

$conn = new mysqli($servername, $username, $password, $dbname);

// 检查数据库连接
if ($conn->connect_error) {
    die("数据库连接失败:" . $conn->connect_error);
}

// 设置字符编码为 UTF-8  //这里很重要,没有这句PHP上传到mysql中的是GBK编码,在PHPMYamdin中显示乱码
if (!$conn->set_charset("utf8")) { 
    die("设置字符编码失败: " . $conn->error); 
} 
============================================================================

// 获取地址栏参数
$val = isset($_POST['val']);

===========分页代码1,仅有页码============================
// 定义每页显示的数据条数
$records_per_page = 16;

// 获取当前页数
if (isset($_GET['page']) && $_GET['page'] > 0) {
    $page = $_GET['page'];
} else {
    $page = 1;
}

// 计算查询的起始偏移量,即当前页从第多少条数据开始
$offset = ($page - 1) * $records_per_page;

//开始输出数据
$sql = "SELECT * FROM tbcatalog ORDER BY Path ASC, OrderID DESC LIMIT $offset, $records_per_page";
。。。。

//表格底部还要加上如下代码
// 计算总页数
$total_pages_sql = "SELECT COUNT(*) as count FROM tbcatalog";
$total_pages_result = $conn->query($total_pages_sql);
$total_pages_row = $total_pages_result->fetch_assoc();
$total_pages = ceil($total_pages_row["count"] / $records_per_page);
注:这里的$total_pages_sql语句中的where语句和order必须与输出数据的sql一样,但不能为LIMIT子语句,否则分页总数为0

// 显示分页链接
for ($i = 1; $i <= $total_pages; $i++) {
 echo "<a href='?page=" . $i . "'>" . $i . "  </a> ";
}
注:页面如有多个参数或条件还需加上,如:echo "<a href='".$myurl."&page=" . $i . "'>" . $i . "  </a> ";

=============分页代码2,适用于后台,需要控制每页显示代码数================================================
----共?条记录,每页?条,共?页 上一页 4 5 6 7 8 9 10 11 12 13 14 下一页 每页显示?条记录

// 定义每页显示的数据条数及默认每页数据条数
$records_per_page = isset($_GET['listnum']) ? $_GET['listnum'] : '30'; 

// 获取当前页数
$page = (isset($_GET['page']) && $_GET['page'] > 0)? $_GET['page'] : 1;

// 计算查询的起始偏移量
$offset = ($page - 1) * $records_per_page;

// 构建 URL
$myurl = "txtlist.php?Path=" . urlencode($fPath); //urllencode()用来确保URL中特殊字符被正确编码
$myurl = $myurl."&listnum=" . urlencode($records_per_page); 
$curl = $myurl . "&page=" . urlencode($page);

$sql="select id,yesno,typeflag,path,title,ltime from ct_txthtml order by cast(ltime as datetime) desc LIMIT $offset, $records_per_page";
。。。。。

<?php
// 创建分页控件
// 计算总页数
$total_pages_sql="select COUNT(*) as count from ct_txthtml order by cast(ltime as datetime) desc";
$total_pages_result = $conn->query($total_pages_sql);
$total_pages_row = $total_pages_result->fetch_assoc();
$total_pages = ceil($total_pages_row["count"] / $records_per_page);
$rowcount=$total_pages_row["count"];

//输出总记录数,每页显示记录,总页数
echo "共".$rowcount."条记录,每页".$records_per_page."条,共".$total_pages."页    ";

//输出上一页,下一页,及当前页前后5页链接
if ($total_pages > 1) {
 if ($page > 1) {
  echo "<a href='".$myurl."&page=" . ($page - 1) . "'>上一页</a> ";
 }

 if ($page>5){ $minj= $page-5;}else{$minj=1;}
 if ($page<$total_pages-5){ $maxj= $page+5;}else{$maxj=$total_pages;}
 for ($j=$minj; $j<=$maxj; $j++){
  if ($j==$page){echo "<a href='".$myurl."&page=" . $j . "' style='color:red'>" . $j . "</a> ";}else{echo "<a href='".$myurl."&page=" . $j . "'>" . $j . "</a> ";};
 }

 if ($page < $total_pages) {
  echo "<a href='".$myurl."&page=" . ($page + 1) . "'>下一页</a> ";
 }
}                      
?>
//输出每页显示指定条数记录
<select name="pagesize" id="pagesize" onchange="javascript:window.location.href='?path=<?php echo urlencode($fPath); ?>&page=<?php echo urlencode($page); ?>&listnum=' + this.options[this.selectedIndex].value" >
 <?php
 echo "<option value=''>选择每页显示条数...</option>";
 for ($i = 10; $i <=50 ; $i+=10) {
  echo "<option value=".$i.">每页显示".$i."条记录</option>";
 }
 for ($i = 60; $i <=180 ; $i+=20) {
  echo "<option value=".$i.">每页显示".$i."条记录</option>";
 }
 for ($i = 200; $i <=1000 ; $i+=200) {
  echo "<option value=".$i.">每页显示".$i."条记录</option>";
 }
 ?>
</select>

============分页代码3,适用于前台,不需要控制每页显示条数=============================================================================================
页次:1/5 每页30 总数140    首页  上一页  下一页  尾页   转到 第1页

// 定义每页显示的数据条数
$records_per_page = 30;

// 获取当前页数
if (isset($_GET['page']) && $_GET['page'] > 0) {
    $page = $_GET['page'];
} else {
    $page = 1;
}

// 计算查询的起始偏移量,即当前页从第多少条数据开始
$offset = ($page - 1) * $records_per_page;

$sql = "SELECT id,typeflag,title,ltime FROM ct_txthtml WHERE typeflag = ?  LIMIT $offset, $records_per_page";
.........

<?php 
// 计算总页数
$total_pages_sql = "SELECT COUNT(*) as count FROM ct_txthtml WHERE typeflag =".$AllPath;
$total_pages_result = $conn->query($total_pages_sql);
$total_pages_row = $total_pages_result->fetch_assoc();
$total_pages = ceil($total_pages_row["count"] / $records_per_page);

//输出页次,即当前页/总页数,每页记录数,总记录数
echo "页次:".$page."/".$total_pages."&nbsp;每页".$records_per_page."&nbsp;总数".$total_pages_row["count"]."&nbsp;&nbsp;&nbsp;&nbsp;";
//输出首页,上一页,下一页,尾页
echo "<a href='listmore.php?AllPath=".$AllPath."&page=1'>首页</a>&nbsp;&nbsp;";
if ($page > 1) {
echo "<a href='listmore.php?AllPath=".$AllPath."&page=".($page - 1)."'>上一页</a>&nbsp;&nbsp;";
}
if ($page < $total_pages) {
echo "<a href='listmore.php?AllPath=".$AllPath."&page=".($page + 1)."'>下一页</a>&nbsp;&nbsp;";
}
echo "<a href='listmore.php?AllPath=".$AllPath."&page=".$total_pages."'>尾页</a>&nbsp;&nbsp;";
?>
//输出跳转到多少页
转到&nbsp <select name="pagesize" id="pagesize" onchange="javascript:window.location.href='?AllPath=<?php echo urlencode($AllPath); ?>&page=' + this.options[this.selectedIndex].value" >
<?php 
for ($i = 1; $i <=$total_pages ; $i++) {
echo "<option value=".$i.">第".$i."页</option>";
}
?>