佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 997|回复: 12

PHP高手请帮帮忙... 2

[复制链接]
发表于 24-9-2008 08:44 PM | 显示全部楼层 |阅读模式
// how many rows to show per page
$rowsPerPage = 10;

// by default we show first page
$pageNum = 1;

// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
        $pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;

$query  = "SELECT name FROM student LIMIT $offset, $rowsPerPage";
$result = mysql_query($query) or die('Error, query failed');

这是个普通的paging 开头 script.. 小弟不明白的是 $offset的出现
可以教教吗?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 24-9-2008 09:19 PM | 显示全部楼层
// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);

// print the link to access each page
$self = $_SERVER['PHP_SELF'];
$nav = '';
for($page = 1; $page <= $maxPage; $page++)
{
        if ($page == $pageNum)
        {
                $nav .= " $page ";   // no need to create a link to current page
        }
        else
        {
                $nav .= " <a href=\"$self?page=$page\">$page</a> ";
        }
}

以上的script,出来的 $nav output 是 1 2 3 4 5 6 7 8 9 10 pages,可是如果我想把 output 出来的 $nav limit 去 5 个而已应该怎样?
就好像 forum 里或google 的 paging system,show 出来的只有10个页数而







[ 本帖最后由 crliuh4 于 24-9-2008 09:25 PM 编辑 ]
回复

使用道具 举报

发表于 25-9-2008 07:45 PM | 显示全部楼层
原帖由 crliuh4 于 24-9-2008 08:44 PM 发表
// how many rows to show per page
$rowsPerPage = 10;

// by default we show first page
$pageNum = 1;

// if $_GET['page'] defined, use it as page number
if(isset($_GET['page']))
{
        $pageNum = ...


去看看 MySQL 對 LIMIT 的應用, 自然你就知道為甚麼要 $offset 變數的出現


原帖由 crliuh4 于 24-9-2008 09:19 PM 发表
// how many pages we have when using paging?
$maxPage = ceil($numrows/$rowsPerPage);

// print the link to access each page
$self = $_SERVER['PHP_SELF'];
$nav = '';
for($page = 1; $page  


for($page = 1; $page <= $maxPage; $page++)
控制 for 迴圈中的初始值和條件值即可, PHP 中 for 的教學可以從 w3schools 獲得
回复

使用道具 举报

 楼主| 发表于 25-9-2008 11:50 PM | 显示全部楼层
谢谢你的回复
在jbtalks也看到你回我
LIMIT 我知道是LIMIT 显示出来的DATA,可是

// how many rows to show per page
$rowsPerPage = 2;

// by default we show first page
$pageNum = 1;

// if $_GET['page'] defined, use it as page number
if(!empty($_GET['page']))
{
        $pageNum = $_GET['page'];
}

// counting the offset
$offset = ($pageNum - 1) * $rowsPerPage;

$query  = "SELECT name FROM student LIMIT $offset, $rowsPerPage";

$rowsPerPage 不是已经limit 了吗?
本人比较笨点

for($page = 1; $page <= $maxPage; $page++)
控制 for 迴圈中的初始值和條件值即可, PHP 中 for 的教學可以從 w3schools 獲得

还不是很明白,在w3schools看过了很多遍,还是一样

可是在lowyat有人帮我加了点东西
他帮我加

$beginPage = 1;
$maxLimit = 5;   //must be an odd number or else it might have some problems
$endPage = $maxLimit;
$halfLimit = floor($maxLimit / 2);

//scenario 2
if($maxPage > $maxLimit && ($pageNum + $halfLimit) > $maxPage ) {
$beginPage = $maxPage - $maxLimit;
$endPage = $maxPage;
}
//scenario 3
else if($maxPage > $maxLimit) {
$beginPage = $pageNum - $halfLimit;
$endPage = $pageNum + $halfLimit;
}
// print the link to access each page
$self = $_SERVER['PHP_SELF'];
$nav = '';
for($page = $beginPage; $page <= $endPage; $page++)

这样
真的可以,可是1st page的output 成这样 " -1 0 1 2 3 [Next] [Last Page] " 可是还是要谢谢他
谢谢你 谢谢vampcheah
回复

使用道具 举报

发表于 26-9-2008 12:38 AM | 显示全部楼层
看你的写法,我有个疑问,

你怎样知到你查询的资料有多少列来做分页?
回复

使用道具 举报

发表于 26-9-2008 09:39 AM | 显示全部楼层
原帖由 crliuh4 于 25-9-2008 11:50 PM 发表
谢谢你的回复
在jbtalks也看到你回我  
LIMIT 我知道是LIMIT 显示出来的DATA,可是

// how many rows to show per page
$rowsPerPage = 2;

// by default we show fi ...



你的開始頁數會從 -1 開始是因為你的 scenario 2 或 3 改變了 $beginPage,  去查查看你哪個值錯誤了.
回复

使用道具 举报

Follow Us
 楼主| 发表于 26-9-2008 06:02 PM | 显示全部楼层

回复 5# blue333 的帖子

$query  = "SELECT name FROM student LIMIT $offset, $rowsPerPage";
你是说这个吗?
回复

使用道具 举报

发表于 26-9-2008 08:46 PM | 显示全部楼层
原帖由 crliuh4 于 26-9-2008 06:02 PM 发表
$query  = "SELECT name FROM student LIMIT $offset, $rowsPerPage";
你是说这个吗?



如果你要每页显示 10 列资料

如果符合的资料列有 50 列,你 limit 了 10 列,

最终你得到 10 列,那如果要做分页,怎样分法呢?
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 27-9-2008 02:05 AM | 显示全部楼层
for($page = 1; $page <= $maxPage; $page++)
{
        if ($page == $pageNum)
        {
                $nav .= " $page ";   // no need to create a link to current page
        }
        else
        {
                $nav .= " <a href=\"$self?page=$page\">$page</a> ";
        }
}
这个帮我分page 的页数出来
有了它 就可以显示 1 2 3 4 5 6 7 8。。。
回复

使用道具 举报

发表于 27-9-2008 03:57 AM | 显示全部楼层
$maxPage = ceil($numrows/$rowsPerPage);

我的意思是那个 $numrows 的数值你是从那里得来?
回复

使用道具 举报

 楼主| 发表于 27-9-2008 02:46 PM | 显示全部楼层
原帖由 blue333 于 27-9-2008 03:57 AM 发表
$maxPage = ceil($numrows/$rowsPerPage);

我的意思是那个 $numrows 的数值你是从那里得来?

// how many rows we have in database
$query = "SELECT COUNT(id) AS numrows FROM student";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];




这个吗?
回复

使用道具 举报

 楼主| 发表于 28-9-2008 11:58 PM | 显示全部楼层

SESSION 问题

请问下,我用registered id login了,可是我怎样知道我是以这个id login?
例如我想显示出我 login 的 id
$sql = " SELECT nameID FROM user ";
$result1 = mysql_query($sql) or die('Error, no user detected.' . mysql_error());
$user = mysql_fetch_assoc($result1);

echo $user['nameID'];

output ===> random user name 而不是我login 的id
请问下$sql = " SELECT nameID FROM user "; 这里要改什么东西?还是别的地方要加东西?
回复

使用道具 举报

 楼主| 发表于 29-9-2008 02:01 AM | 显示全部楼层
搞定了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 23-12-2025 01:25 AM , Processed in 0.123556 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表