MySQL查詢結(jié)果的分頁(yè)
隨著數(shù)據(jù)庫(kù)的增長(zhǎng),在單個(gè)頁(yè)面上顯示查詢的所有結(jié)果已不再實(shí)用。這就是PHP和MySQL中分頁(yè)的地方。您可以在多個(gè)頁(yè)面上顯示結(jié)果,每個(gè)頁(yè)面都鏈接到下一個(gè)頁(yè)面,以允許您的用戶以一咬大小瀏覽網(wǎng)站上的內(nèi)容。
01
04
設(shè)置變量
下面的代碼首先連接到數(shù)據(jù)庫(kù)。然后您需要知道要顯示結(jié)果的哪個(gè)頁(yè)面。if(!(isset($pagenum)))代碼檢查頁(yè)碼($pagenum)isn't設(shè)置,如果是,則將其設(shè)置為1。如果已經(jīng)設(shè)置了頁(yè)碼,則忽略此代碼。
您運(yùn)行查詢。應(yīng)編輯$data行以應(yīng)用于您的網(wǎng)站并返回計(jì)算結(jié)果所需的內(nèi)容。然后,$行行僅計(jì)算查詢結(jié)果的數(shù)量。
接下來(lái),您定義$頁(yè)面?行,這是在轉(zhuǎn)到下一頁(yè)結(jié)果之前要在每頁(yè)上顯示的結(jié)果數(shù)。然后,您可以通過(guò)將結(jié)果(行)的總量除以每頁(yè)所需的結(jié)果數(shù)來(lái)計(jì)算($last)的總頁(yè)數(shù)。在這里使用CEIL將所有數(shù)字舍入到下一個(gè)整數(shù)。
接下來(lái),代碼運(yùn)行檢查以確保頁(yè)碼有效。如果該數(shù)字少于一個(gè)或大于頁(yè)數(shù),則會(huì)重置為內(nèi)容最接近的頁(yè)碼。
最后,使用限制函數(shù)為結(jié)果設(shè)置范圍($max)。起始編號(hào)是通過(guò)將每頁(yè)的結(jié)果乘以比當(dāng)前頁(yè)面少一個(gè)來(lái)確定的。持續(xù)時(shí)間是每頁(yè)顯示的結(jié)果數(shù)量。
02
of 04
用于設(shè)置分頁(yè)變量的代碼
//連接到您的數(shù)據(jù)庫(kù)
mysql U連接(34);your.hostaddress.com",#34;用戶名","密碼")或模具(mysql Uerror());
mysql選擇"地址#34;)或die(mysql Uerror());
//這將檢查是否有頁(yè)碼。如果沒(méi)有,它將設(shè)置為第1頁(yè)
如果(?。╥sset($pagenum)))
{
$pagenum=1;
}
//在這里,我們計(jì)算結(jié)果的數(shù)量82
//編輯$數(shù)據(jù)作為您的查詢
$data=mysql#query("從topsites中選擇*")或die(mysql UERROR());
$行=mysql?num?行($data);
//這是每頁(yè)顯示的結(jié)果數(shù)量
$頁(yè)面行=4;
//這告訴我們最后一頁(yè)的頁(yè)碼94
$last=ceil($rows/$page?rows);
//這確保頁(yè)碼為'低于1,或超過(guò)我們的最大頁(yè)面
如果($pagenum
{
$pagenum=1;
}
elseif($pagenum>$last)
{
$pagenum=$last;
}
//這設(shè)置了在我們的查詢中顯示的范圍116
$max=#39;limit'$pagenum-1)*$page U rows。''$page U rows;
03養(yǎng)腎的小知識(shí)
133 of 04 134查詢和結(jié)果
此代碼從早期重新運(yùn)行查詢,只需稍作更改。這次它包含$max變量以將查詢結(jié)果限制為屬于當(dāng)前頁(yè)面的結(jié)果。查詢后,您使用任何您希望的格式將結(jié)果顯示為正常。
顯示結(jié)果時(shí),將顯示當(dāng)前頁(yè)面以及存在的頁(yè)面總數(shù)。這不是必要的,但知道這是很好的信息。
接下來(lái),代碼生成導(dǎo)航。假設(shè)是,如果您位于第一頁(yè),則不需要鏈接到第一頁(yè)。由于這是第一個(gè)結(jié)果,因此不存在上一頁(yè)。所以代碼檢查(如果($pagenum==1))查看訪問(wèn)者是否在第一頁(yè)。如果是這樣,那么什么都不會(huì)發(fā)生。如果沒(méi)有,那么PHP?SELF和頁(yè)碼將生成指向第一頁(yè)和上一頁(yè)的鏈接。
你做幾乎相同的事情來(lái)生成另一側(cè)的鏈接。但是,這次你要檢查確保你在上一頁(yè)上是't。如果是,那么您不需要鏈接到最后一頁(yè),也不存在下一頁(yè)。
04
of 04
分頁(yè)結(jié)果代碼
//這是你的查詢,同樣的。。。**的區(qū)別是我們?cè)谄渲刑砑恿?max
$data UP=mysql#query("從topsites$max#34;)或die(mysql#error());
//這是顯示查詢結(jié)果的地方
而($info=mysql?fetch?array($data?p))
{
打印$info['名稱'];
echo"
";
}
echo"
";
//這向用戶顯示他們所在的頁(yè)面以及頁(yè)面總數(shù)
echo"--Page$pagenum of$last-
";
//首先,我們檢查我們是否在第一頁(yè)。如果我們是,那么我們不需要'需要鏈接到前一頁(yè)或第一頁(yè),所以我們什么都不做。如果我們不是't,那么我們將生成指向第一頁(yè)和前一頁(yè)的鏈接。
如果($pagenum==1)
{
}
其他
{
echo"
<-First";
回聲"";
$上一個(gè)=$pagenum-1;
echo"<-上一個(gè)<&a>";
}
//只是一個(gè)墊片
echo"-----";
//這同樣上面,只檢查我們是否在最后一頁(yè),然后生成下一個(gè)和最后一個(gè)鏈接
如果($pagenum==$last)
{
}
其他{
$next=$pagenum+1;
echo"下一步><&a>";
回聲"";
echo"last->><&a>";
}
?>