PHP開(kāi)發(fā)簡(jiǎn)單圖書(shū)借閱系統(tǒng)之主頁(yè)分頁(yè)功能
當(dāng)主頁(yè)完成以後,就需要把資料庫(kù)的資料透過(guò)SQL語(yǔ)句顯示出來(lái)
這裡需要使用分頁(yè)功能來(lái)顯示,畢竟第一頁(yè)顯示的數(shù)目是有限的。
我們?cè)O(shè)定每頁(yè)顯示5個(gè)資料
$pagesize=5; ?
取得id需要倒序排列,查詢出的書(shū)名分類(lèi)目錄為中文,需要urldecode()函數(shù)把中文轉(zhuǎn)換成編碼形式。
<?php if(!urldecode($_GET['proid'])){ //urldecode()函數(shù)將 URL 編碼后字符串還原成未編碼的樣子。編碼使用 %## 的格式 $SQL ="SELECT * FROM yx_books order by id desc"; //倒序排列 }else{ $SQL ="SELECT * FROM yx_books where type='".urldecode($_GET['proid'])."'"; //將查詢出來(lái)的書(shū)目類(lèi)別中文字轉(zhuǎn)換為編碼形式 } ?>
取得查詢的資料總數(shù),計(jì)算總頁(yè)數(shù),然後對(duì)目前頁(yè)進(jìn)行判斷,當(dāng)前頁(yè)小於第一頁(yè)時(shí)顯示第一頁(yè),當(dāng)前頁(yè)數(shù)大於總頁(yè)數(shù)時(shí)顯示總頁(yè)數(shù)頁(yè)。
確定每頁(yè)從第幾個(gè)資料開(kāi)始顯示。
<?php $rs=mysqli_query($link,$sql); $recordcount=mysqli_num_rows($rs); //輸出查詢的總數(shù) //mysql_num_rows() 返回結(jié)果集中行的數(shù)目。此命令僅對(duì) SELECT 語(yǔ)句有效。 $pagecount=($recordcount-1)/$pagesize+1; //計(jì)算總頁(yè)數(shù) $pagecount=(int)$pagecount; $pageno=empty($_GET["pageno"])?'':$_GET["pageno"]; //當(dāng)前頁(yè) if($pageno=="") //當(dāng)前頁(yè)為空時(shí)顯示第一頁(yè) { $pageno=1; } if($pageno<1) //當(dāng)前頁(yè)小于第一頁(yè)時(shí)顯示第一頁(yè) { $pageno=1; } if($pageno>$pagecount) //當(dāng)前頁(yè)數(shù)大于總頁(yè)數(shù)時(shí)顯示總頁(yè)數(shù) { $pageno=$pagecount; } $startno=($pageno-1)*$pagesize; //每頁(yè)從第幾條數(shù)據(jù)開(kāi)始顯示 ?>
SELECT查詢出資料庫(kù)中的語(yǔ)句然後循環(huán)顯示出來(lái):
<?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 } } ?>
最後是把點(diǎn)擊首頁(yè),上一頁(yè),下一頁(yè),末頁(yè)功能顯示出來(lái)。
如果目前頁(yè)為第一頁(yè)時(shí),只顯示首頁(yè)和上一頁(yè)。
噹噹前頁(yè)為總頁(yè)數(shù)時(shí),首頁(yè)和上一頁(yè)給連結(jié)顯示。
其餘則為正常增加連結(jié)顯示
<?php if($pageno==1) { ?> 首頁(yè) | 上一頁(yè) | <?php if($pageno+1<= $pagecount) { ?> <a href="index.php?proid=<?php echo empty($_GET['proid']) ? '' : urlencode($_GET['proid']); ?>&pageno=<?php echo $pageno + 1 ?>">下一頁(yè)</a> | <a href="index.php?proid=<?php echo empty($_GET['proid']) ? '' : urlencode($_GET['proid']); ?>&pageno=<?php echo $pagecount ?>">末頁(yè)</a> <?php } } else if($pageno==$pagecount) { ?> <a href="index.php?proid=<?php echo urlencode($_GET['proid']);?>&pageno=1">首頁(yè)</a> | <a href="index.php?proid=<?php echo urlencode($_GET['proid']);?>&pageno=<?php echo $pageno-1?>">上一頁(yè)</a> | 下一頁(yè) | 末頁(yè) <?php } else { ?> <a href="index.php?proid=<?php echo urlencode($_GET['proid']);?>&pageno=1">首頁(yè)</a> | <a href="index.php?proid=<?php echo urlencode($_GET['proid']);?>&pageno=<?php echo $pageno-1?>">上一頁(yè)</a> | <a href="index.php?proid=<?php echo urlencode($_GET["proid"]);?>&pageno=<?php echo $pageno+1?>" class="forumRowHighlight">下一頁(yè)</a> | <a href="?pageno=<?php echo $pagecount?>">末頁(yè)</a> <?php } ?> 頁(yè)次:<?php echo $pageno ?>/<?php echo $pagecount ?>頁(yè) 共有<?php echo $recordcount?>條信息