PHPが簡易図書貸出システムのホームページページング機能を開発

メインページが完成したら、SQL文を通じてデータベースデータを表示する必要があります

ここで表示するにはページング機能を使用する必要があります結局のところ、最初のページに表示される数は限られています。

各ページに表示するデータを5つ設定しました

$pagesize=5;

IDを取得するには、クエリされた本のタイトルカテゴリが中国語である必要があります。 urldecode() 関数は、中国語をエンコードされた形式に変換するために必要です。

<?php
if(!urldecode($_GET['proid'])){
   //urldecode()函数将 URL 编码后字符串还原成未编码的样子。编码使用 %## 的格式
   $SQL ="SELECT * FROM yx_books order by id desc";  //倒序排列
}else{
   $SQL ="SELECT * FROM yx_books where type='".urldecode($_GET['proid'])."'";
   //将查询出来的书目类别中文字转换为编码形式
}
?>

クエリされたデータの総数を取得し、総ページ数を計算し、現在のページが最初のページより小さい場合、現在のページ番号が 1 番目のページを表示します。総ページ数を超える場合は、総ページ数が表示されます。

各ページでどのデータの表示を開始するかを決定します。

<?php
$rs=mysqli_query($link,$sql);
$recordcount=mysqli_num_rows($rs);  //输出查询的总数
//mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。
$pagecount=($recordcount-1)/$pagesize+1;  //计算总页数
$pagecount=(int)$pagecount;
$pageno=empty($_GET["pageno"])?'':$_GET["pageno"];  //当前页

if($pageno=="")  //当前页为空时显示第一页
{
   $pageno=1;
}
if($pageno<1)   //当前页小于第一页时显示第一页
{
   $pageno=1;
}
if($pageno>$pagecount)  //当前页数大于总页数时显示总页数
{
   $pageno=$pagecount;
}
$startno=($pageno-1)*$pagesize;  //每页从第几条数据开始显示
?>

SELECT はデータベース内のステートメントをクエリし、それらをループで表示します。

<?php
if(!urldecode($_GET["proid"])){
   $SQL ="SELECT * FROM yx_books order by id desc limit $startno,$pagesize";
}else{
   $SQL ="SELECT * FROM yx_books where type='".urldecode($_GET['proid'])."' order by id desc limit $startno,$pagesize";
}
$rs=mysqli_query($link,$sql);
?>

<?php
 if(!empty($rs)){
     while($rows=mysqli_fetch_array($rs))
   {
?>
    <tr>
       <td height="30" align="center" bgcolor="#FFFFFF"><?php echo $rows["id"];?></td>
       <td align="center" bgcolor="#FFFFFF"><?php echo $rows["name"];?></td>
       <td align="center" bgcolor="#FFFFFF"><?php echo $rows["price"];?></td>
       <td align="center" bgcolor="#FFFFFF"><?php echo $rows["uploadtime"];?></td>
       <td align="center" bgcolor="#FFFFFF"><?php echo $rows["type"];?></td>
       <td align="center" bgcolor="#FFFFFF"><?php echo $rows["leave_number"];?></td>
       <td align="center" bgcolor="#FFFFFF" class="line2"></td>
    </tr>
<?php
    }
 }
?>

最後に、ホームページ、前のページ、次のページ、最後のページをクリックする機能が表示されます。

現在のページが最初のページの場合は、ホームページと前のページのみが表示されます。

現在のページが総ページ数の場合、ホームページと前のページがリンクとして表示されます。

残りは通常の追加リンクとして表示されます

<?php
if($pageno==1)
{
   ?>
   首页 | 上一页 |
   <?php if($pageno+1<= $pagecount) { ?>
   <a href="index.php?proid=<?php echo empty($_GET['proid']) ? '' : urlencode($_GET['proid']); ?>&pageno=<?php echo $pageno + 1 ?>">下一页</a> |
   <a href="index.php?proid=<?php echo empty($_GET['proid']) ? '' : urlencode($_GET['proid']); ?>&pageno=<?php echo $pagecount ?>">末页</a>
   <?php
     }
}
else if($pageno==$pagecount)
{
   ?>
   <a href="index.php?proid=<?php echo urlencode($_GET['proid']);?>&pageno=1">首页</a> |
   <a href="index.php?proid=<?php echo urlencode($_GET['proid']);?>&pageno=<?php echo $pageno-1?>">上一页</a> | 下一页 | 末页
   <?php
}
else
{
   ?>
   <a href="index.php?proid=<?php echo urlencode($_GET['proid']);?>&pageno=1">首页</a> |
   <a href="index.php?proid=<?php echo urlencode($_GET['proid']);?>&pageno=<?php echo $pageno-1?>">上一页</a> |
   <a href="index.php?proid=<?php echo urlencode($_GET["proid"]);?>&pageno=<?php echo $pageno+1?>" class="forumRowHighlight">下一页</a> |
   <a href="?pageno=<?php echo $pagecount?>">末页</a>
   <?php
}
?>
&nbsp;页次:<?php echo $pageno ?>/<?php echo $pagecount ?>页&nbsp;共有<?php echo $recordcount?>条信息


学び続ける
||
<?php $rs=mysqli_query($link,$sql); $recordcount=mysqli_num_rows($rs); //输出查询的总数 //mysql_num_rows() 返回结果集中行的数目。此命令仅对 SELECT 语句有效。 $pagecount=($recordcount-1)/$pagesize+1; //计算总页数 $pagecount=(int)$pagecount; $pageno=empty($_GET["pageno"])?'':$_GET["pageno"]; //当前页 if($pageno=="") //当前页为空时显示第一页 { $pageno=1; } if($pageno<1) //当前页小于第一页时显示第一页 { $pageno=1; } if($pageno>$pagecount) //当前页数大于总页数时显示总页数 { $pageno=$pagecount; } $startno=($pageno-1)*$pagesize; //每页从第几条数据开始显示 ?>
  • おすすめコース
  • コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜