php翻頁
<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_password = '';
$mysql_database = 'testdb';
///*Connect to the local server,可以在函數名前加上 @ 來抑制失敗時產生的錯誤信息。
$link = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die(mysql_error());
mysql_select_db($mysql_database) or die(mysql_error());
//set charset 設定字元集解決漢字問題
mysql_query("set names 'gbk'");
$rowsPerPage = 3; //定義每頁的行數
$row = mysql_fetch_assoc(mysql_query("SELECT count(*) AS c FROM testmsg")); //查詢表中的總記錄數
$rows = $row['c']; //得到表中總記錄數
$pages = ceil($rows / $rowsPerPage); //計算出頁數
$curPage = 1; //當前要顯示第幾頁,默認顯示第1頁
//$_REQUEST變數比較大,一般不用。常用的是$_POST,$_GET,二者與form表單method保持一致。$_GET還支持url傳值
if(isset($_GET['curPage'])) //假如用戶提交了指定的頁數
$curPage = $_GET['curPage']; // 就將欲顯示的頁數設定為用戶指定的值
//倒序查詢
//echo $curPage;
$sql = "SELECT * FROM testmsg ORDER BY id DESC"." LIMIT ".($curPage -1)*$rowsPerPage.", $rowsPerPage"; //修改sql語句,使得可以查詢出指定的結果集
//echo $sql;
$result = mysql_query($sql) or die(mysql_error());
//列表顯示----------顯示部分內容不變
while($row = mysql_fetch_assoc($result)){
echo "<table width = '90%' align = 'center' cellpadding = '1' cellspacing = '1' bgcolor = 'blue'> ";
echo " <tr>";
echo " <td rowspan='2' width = '25%' bgcolor = 'white'>";
echo " <li><span style='color:red;'>編號:</span>{$row['id']}</li>";
echo " <li><span style='color:red;'>用戶:</span>{$row['email']}</li>";
echo " <li><span style='color:red;'>地址:</span>{$row['ip']}</li>";
echo " <li><span style='color:red;'>時間:</span>{$row['time']}</li>";
echo " <li><font color = 'red'>其他:</font>{$row['other']}"; //html舊式寫法
echo " </td>";
echo " <td bgcolor = 'yellow' ><font color = 'red'>標題:</font><a href = modifyMsg.php?id={$row['id']}>{$row['title']}</td>";
echo " </tr>";
echo " <tr>";
echo " <td bgcolor = 'white' >{$row['content']}</td>";
echo " </tr>";
echo "</table>";
echo "<br />";
}
//顯示全部分頁的鏈接
echo "<div align = 'center'>";
for($i=1;$i<=$pages;$i++){ //循環顯示,每個鏈接指定curPage屬性為其指向的頁數就可以了
echo "<a href='testpage201.php?curPage=$i'>$i</a> ";
}
//下拉框分頁
echo "<form name = 'form1' action = 'testpage201.php?curPage=$curPage' method = 'GET'>";
echo " <select name= 'curPage' onchange = 'document.form1.submit();'>";
for($i = 1; $i <=$pages; $i++){
if($i == $curPage)
echo "<option selected>$i</option>";
else
echo "<option>$i</option>";
}
echo " </select>";
echo " </form>";
//首頁、前頁、後頁、末頁的鏈接
if($curPage>1){
echo "<a href = 'testpage201.php?curPage=1'>首頁</a> ";
echo "<a href = 'testpage201.php?curPage=".($curPage-1)."'>前頁</a> ";
}
if($curPage<$pages){
echo "<a href='testpage201.php?curPage=".($curPage+1)."'>後頁</a> ";
echo "<a href = 'testpage201.php?curPage=$pages'>末頁</a> ";
}
echo "</div>";
//列表顯示完畢
mysql_free_result($result);
mysql_close($link);
//$link->close()等同於mysql_close($link);
//$result->free()等同於mysql_free_result($result);
//$link->query($sql)等同於mysql_query($sql,$link);
/*
MySQL limit的實際用法的詳細解析,在我們使用相關的查詢語句的時候,一般都要返回前幾條或是中間的某幾行數據,這時你應如何處理呢?不必擔心,MySQL資料庫已經為我們提供了這樣一個功能。
SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset
LIMIT 子句可以被用於強制 SELECT 語句返回指定的記錄數。MySQL LIMIT 接受一個或兩個數字參數。參數必須是一個整數常量。如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。初始記錄行的偏移量是 0(而不是 1): 為了與 PostgreSQL 兼容,MySQL 也支持句法: LIMIT # OFFSET #。
MySQL> SELECT * FROM table LIMIT 5,10;
檢索記錄行 6-15
為了檢索從某一個偏移量到記錄集的結束所有的記錄行,可以指定第二個參數為 -1:
MySQL> SELECT * FROM table LIMIT 95,-1;
檢索記錄行 96-last.
如果只給定一個參數,它表示返回最大的記錄行數目:
MySQL> SELECT * FROM table LIMIT 5;
檢索前 5 個記錄行。換句話說,LIMIT n 等價於 MySQL LIMIT 0,n。以上的相關內容就是對MySQL limit的用法詳解的介紹,望你能有所收獲。 */
?>
<?php
$link = mysql_connect("localhost","root","");
$sqlstr = "SELECT * FROM testmsg";
$send = mysql_db_query("testdb",$sqlstr);
$fdat = mysql_fetch_row($send);
$fdat = mysql_fetch_row($send); //試試調用兩次的結果?
//mysql_fetch_row() 從和指定的結果標識關聯的結果集中取得一行數據並作為數組返回。每個結果的列儲存在一個數組的單元中,偏移量從 0 開始。
//依次調用 mysql_fetch_row() 將返回結果集中的下一行,如果沒有更多行則返回 FALSE。
//print_r($fdat);
//foreach的兩種寫法
//foreach($fdat as $value){
foreach($fdat as $key => $value){
echo "$key:$value<br />";
}
mysql_data_seek($send,0); //指針所在位置回到第一條記錄上
$fdat = mysql_fetch_row($send);
foreach($fdat as $name => $valu){ //key => value 可以換寫法命名
echo "$name:$valu<br />";
}
mysql_free_result($send);
mysql_close($link);
/*
foreach
PHP 4 引入了 foreach 結構,和 Perl 以及其他語言很像。這只是一種遍歷數組簡便方法。foreach 僅能用於數組,當試圖將其用於其它數據類型或者一個未初始化的變數時會產生錯誤。有兩種語法,第二種比較次要但卻是第一種的有用的擴展。
foreach (array_expression as $value)
statement
foreach (array_expression as $key => $value)
statement
第一種格式遍歷給定的 array_expression 數組。每次循環中,當前單元的值被賦給 $value 並且數組內部的指針向前移一步(因此下一次循環中將會得到下一個單元)。
第二種格式做同樣的事,只除了當前單元的鍵名也會在每次循環中被賦給變數 $key。
自PHP 5 起,還可能遍歷對象。
Note:
當 foreach 開始執行時,數組內部的指針會自動指向第一個單元。這意味著不需要在 foreach 循環之前調用 reset()。
Note:
除非數組是被引用,foreach 所操作的是指定數組的一個拷貝,而不是該數組本身。foreach對數組指針有些副作用。除非對其重置,在 foreach 循環中或循環後都不要依賴數組指針的值。
自 PHP 5 起,可以很容易地通過在 $value 之前加上 & 來修改數組的元素。此方法將以引用賦值而不是拷貝一個值。
*/
?>
<?php
$link1 = mysql_connect("localhost","root","");
$link2 = mysql_connect("localhost","root","");;
//mysql_close();
//如果關閉連接,則無輸出並報錯。
/*
bool mysql_close ([ resource $link_identifier ] )
mysql_close() 關閉指定的連接標識所關聯的到 MySQL 伺服器的非持久連接。如果沒有指定 link_identifier,則關閉上一個打開的連接。
*/
$result = mysql_query("select count(*) from testdb.testmsg"); //查詢結果集
$row = mysql_fetch_row($result); //從結果集中取出一行作為枚舉數組返回
print_r($row); //輸出數據表的總行數的數組信息
echo $row[0];
?>
㈡ 用PHP如何實現分頁並能夠實現上一頁,下一頁,跳轉到()頁的功能
<html><head>
<title>分頁示例(php</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<?php
$pagesize=10; //設定每一頁顯示的記錄數
$conn=mysql_connect("localhost","root","jrq");
mysql_select_db("sj",$conn);
$rs = mysql_query( "select * from `dw_newsdata`",$conn); //這里有第二個可選參數,指定打開的連接
//-----------------------------------------------------------------------------------------------//
//分頁邏輯處理
//-----------------------------------------------------------------------------------------------
$tmpArr = mysql_fetch_array($rs);
$numAL = mysql_num_rows($rs); //取得記錄總數$rs
$pages=intval($numAL/$pagesize); //計算總頁數
if ($numAL % $pagesize) $pages++;
//設置預設頁碼
//↓判斷「當前頁碼」是否賦值過
if (isset($_GET['page'])){ $page=intval($_GET['page']); }else{ $page=1; }//否則,設置為第一頁
//↓計算記錄偏移量
$offset=$pagesize*($page - 1);
//↓讀取指定記錄數
$rs=mysql_query("select * from `dw_newsdata` limit $offset,$pagesize",$conn);//取得—當前頁—記錄集!
$curNum = mysql_num_rows($rs); //$curNum - 當前頁實際記錄數,for循環輸出用
?>
<table border="0" width="80%">
<tr>
<td width="50%" bgcolor="#E0E0E0">標題</td>
<td width="50%" bgcolor="#E0E0E0">發布時間</td>
</tr>
<?php
while ($tmpArr = mysql_fetch_array($rs)) //提取一行,並循環判斷
{
$i=0;
// for($a=0;$a<$ColNum;$a++) //==for結束==
?>
<tr>
<td width="50%"><?= $tmpArr[1]; //$tmpArr["news_title"] ; ?></td>
<td width="50%"><?php echo $tmpArr[2]; //$tmpArr["news_cont"]; ?></td>
</tr>
<?php
}//==while結束==
?>
</table>
<?php
//============================//
// 翻頁顯示 一
//============================//
echo "<p>"; // align=center
$first=1;
$prev=$page-1;
$next=$page+1;
$last=$pages;
if ($page > 1)
{
echo "<a href='?page=".$first."'>首頁</a> ";
echo "<a href='?page=".$prev."'>上一頁</a> ";
}
if ($page < $pages)
{
echo "<a href='?page=".$next."'>下一頁</a> ";
echo "<a href='?page=".$last."'>尾頁</a> ";
}
//============================//
// 翻頁顯示 二
//============================//
echo " | 共有".$pages."頁(".$page."/".$pages.")";
for ($i=1;$i< $page;$i++){echo "<a href='?page=".$i."'>[".$i ."]</a> ";} // 1-先輸出當前頁之前的
if ($page > 0) echo "[".$page."]";; // 2-再輸出當前頁
for ($i=$page+1;$i<=$pages;$i++){echo "<a href='?page=".$i."'>[".$i ."]</a> ";}// 3-接著輸出當前頁之後
echo "轉到第 <INPUT maxLength=3 size=3 value=".($page+1)." name=gotox> 頁 <INPUT hideFocus onclick=\"location.href='?page=gotox.value';\" type=button value=Go name=cmd_goto>";
echo "</p>";
?>
</body>
</html>
㈢ php使用分頁類後翻頁地址後面無限加&page=1&page=2......(分頁可以實現在,但是老是加page)
參數處理的函數有問題。LZ寫的代碼太復雜了。
其他參數和分類的page參數最好分開整合。
寫一個函數,多傳幾個參數進去,就很非常好的設置分頁了。