標籤:blog class code ext color width
分頁顯示是WEB編程中最頻繁處理的環節之一。所謂分頁顯示,就是通過程式將結果集一段一段的來顯示。實現分頁顯示,需要兩個初始參數:每頁顯示多少記錄和當前是第幾頁。再加上完整的結果集,就可以實現資料的分頁顯示。至於其他功能,比如上一頁、下一頁等均可以根據以上資訊加以處理得到。
要取得某表中的前10條記錄,可以使用如下SQL語句:
SELECT * FROM a_table LIMIT 0,10
要尋找第11到第20條記錄,使用的SQL語句如下所示:
SELECT * FROM a_table LIMIT 10,10
如要尋找第21條到第30條記錄,使用的SQL語句如下所示:
SELECT * FROM a_table LIMIT 20,10
以上SQL語句可以看出,每次取10條記錄,相當於每個頁面顯示10條資料,而每次所要取得記錄的起始位置和當期頁數之間存在著這樣的關係:起始位置=(當前頁數-1)*每頁要顯示的記錄數。如果以變數$page_size表示每頁顯示的記錄數,以變數$cur_page表示當前頁數,那麼上述可以用下面所示的SQL語句模板歸納:
select * from table limit ($cur_page-1)*$page_size,$page_size;
這樣,就得到了分頁情況下擷取資料的SQL語句。其中$page_size可以根據實際情況制定為一個定值,實際開發中,當前頁面$cur_page可以由參數傳入。另外,資料要顯示的總頁數,可以在記錄總數和每頁顯示的記錄數之間通過計算獲得。比如,如果總記錄數除以每頁顯示的記錄數後,沒有餘數,那麼總頁數就是這二者之商。
<?php$host=‘localhost‘;$user_name=‘root‘;$password=‘helloworld‘;$conn=mysql_connect($host,$user_name,$password);if(!$conn){die(‘FAIL!‘.mysql_error());}mysql_select_db(‘test‘);if(isset($_GET[‘page‘])){$page=$_GET[‘page‘];}else{$page=1;}$page_size=2;$sql=‘select * from users‘;$result=mysql_query($sql);$total=mysql_num_rows($result);if($total){if($total<$page_size)$page_count=1;if($total%$page_size){$page_count=(int)($total/$page_size)+1;}else{$page_count=$total/$page_size;}}else{$page_count=0;}$turn_page=‘‘;if($page==1){$turn_page.=‘Index | Before |‘;}else{$turn_page.=‘<a href=13-8.php?page=1>Index</a> | <a href=13-8.php?page=‘.($page-1).‘>Before</a> |‘;}if($page==$page_count || $page_count==0){$turn_page.=‘Next | Last‘;}else{$turn_page.=‘<a href=13-8.php?page=‘.($page+1).‘> Next </a> | <a href=13-8.php?page=‘.$page_count.‘> Last </a>‘;}$sql=‘select id,name,sex,age from users limit ‘.($page-1)*$page_size.‘,‘.$page_size;$result=mysql_query($sql) OR die ("<br/>ERROR:<b>".mysql_error()."</b><br/>SQL:".$sql);?><html><head><title>13-8.php</title></head><body><table width="75%" border="0" cellpadding="0" cellspacing="1" bgcolor="#7b7b84"><tr bgcolor="#8bbcc7"><td height="33"><div align="center"><strong>ID</strong></div></td><td><div align="center"><strong>Name</strong></div></td><td><div align="center"><strong>Sex</strong></div></td><td><div align="center"><strong>Age</strong></div></td></tr><?phpif($num=mysql_num_rows($result)){while($row=mysql_fetch_array($result,MYSQL_ASSOC)){?><tr bgcolor="#FFFFFF"><td height="22" align="right"><?php echo $row[‘id‘]; ?> </td><td height="22"> <?php echo $row[‘name‘]; ?> </td><td height="22"> <?php echo $row[‘sex‘]; ?> </td><td height="22"> <?php echo $row[‘age‘]; ?> </td></tr><?php}}echo $turn_page;mysql_close($conn);?></body></html>
**********************
POST GET ,是提交表單的兩種方式,GET傳值就用$_GET擷取,POST提交表單就用$_POST
post與get的區別是一個在地址欄顯示參數,另一個不顯示
舉個例子,如果你登入的時候用get方式,那麼你的值就會在地址欄上顯示,這樣就無安全性可言
而你在搜尋或者有頁碼的時候 用post把參數在地址欄上隱藏起來,這樣就毫無意義
而用$_GET可以獲得瀏覽器地址欄上的參數的值(?問號後面的一串字元),比如www.baidu.com/s?wd=123,那麼你用$_GET,就可以擷取參數(你可以理解為事件,動作,或者參數,該值在傳遞表單時與input的name一致)為wd的值123,多個參數用&符串連,比如?an=0&si=5理解為an參數的值為0與si參數的值為5。
**********************
打個比方說,你輸入一個地址叫 www.iron-feet.cn/?page=2
$_GET["page"]就是獲得地址上這個page的值,即得到2