query('SELECT COUNT(*) FROM library.messages')->fetchColumn(0);$sql = 'SELECT * FROM library.messages'." LIMIT $perpage OFFSET ".($offset-1);$result = $db->query($sql);if ($result){foreach ($result->fetchAll() as $row){echo "subject: ".$row[5]."
";}}else{$error = $db->errorInfo();echo "error happened..".$error[2];exit();}buildIndex($perpage, $total);//1,50,3500/////////////////////////////////////////////////////////////////function buildLink($index, $offset){echo "$index";}function buildIndex($perpage, $total){$separator = '|';//buildLink($offset==1, '< $start) ? "$total":"";echo $separator;buildLink("$start-$end", $start);}?>
另一種思路的.....
query('SELECT COUNT(*) FROM library.messages')->fetchColumn(0);$sql = 'SELECT * FROM library.messages LIMIT '. ($offset -1)*$perpage.", $perpage ";$result = $db->query($sql);if ($result){foreach ($result->fetchAll() as $row){echo "subject: ".$row[5]."
";}}else{$error = $db->errorInfo();echo "error happened..".$error[2];exit();}$numpage = $total%$perpage;if($total%$perpage) $numpage++;$cur = $offset;if ($cur < $numpage){echo " Next Page
";}if($cur > 0){echo " Prev Page
";}?>
問題如下:每次點擊下一頁,或者上一頁,顯示的都是同樣的內容,即首頁內容。 當資料表的內容有3000行...是怎麼回事啊?
回複討論(解決方案)
沒有看到你處理傳入的 offset
沒有看到你處理傳入的 offset
$offset = isset($_GET['pid'])?intval($_GET['pid']):1;if(!$offset) $offset = 1;開頭就處理了啊
參考了下往上的,現在修改如下:
";//測試語句$perpage = 30; //每頁顯示30條目資訊$offset = ($offset-1)*$perpage;$db = NEW PDO("mysql:host=localhost; port = 3306; dbname =library", 'root', 'cai123');$total = $db->query('SELECT COUNT(*) FROM library.messages')->fetchColumn(0); //擷取資訊的總數$sql = "SELECT * FROM library.messages LIMIT $offset, $perpage";$result = $db->query($sql);if ($result){foreach ($result->fetchAll() as $row){echo "subject: ".$row[5]."
";}}else{$error = $db->errorInfo();echo "error happened..".$error[2];exit();}$numpage = ceil($total/$perpage);if($total%$perpage) $numpage++;//計算可以顯示為numpage頁if ($numpage > 1){for ($i = 1; $i <= $numpage; $i++){if ($i == $offset) //如果是當前頁{echo "$i";}else{//echo "$i ";echo "$i ";}}}
當我點擊顯示第20頁的內容時,測試資訊顯示的還是第一頁,但是我擷取的是:$_GET['offset']沒有錯啊,怎麼不論點那一頁都顯示是第一頁?
如,我點的是第20頁。瀏覽器地址欄顯示: http://127.0.0.1/php/example/setPage02.php?offset=20
但echo "the current page: $offset
"; 顯示的還是第一頁。
怎麼回事?
42 行有 ...setPage02.php? offset=$i'>$i....
而第 2 行是 $offset = isset($_GET[' ofset']) ? intval($_GET['offset']) : 1;
知道問題在哪了吧?
42 行有 ...setPage02.php? offset=$i'>$i....
而第 2 行是 $offset = isset($_GET[' ofset']) ? intval($_GET['offset']) : 1;
知道問題在哪了吧?
哈哈哈,,,,我已經被自己打敗了,看來我還是要換編輯工具了,這麼明顯的拼字差異沒發現,害得我好一頓糾結...THX
42 行有 ...setPage02.php? offset=$i'>$i....
而第 2 行是 $offset = isset($_GET[' ofset']) ? intval($_GET['offset']) : 1;
知道問題在哪了吧?
現在初學,我是在windows環境下,平時一直都是用EditPlus編輯工具,這麼明顯的差異就這麼放過去了,由衷的蛋碎》。。。