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

教育資源網(wǎng)_1

設(shè)置變量

下面的代碼首先連接到數(shù)據(jù)庫(kù)。然后您需要知道要顯示結(jié)果的哪個(gè)頁(yè)面。if(?。╥sset($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>";

}

?>