2011-05-11 141 views
0

我有关于PHP分页脚本对于平面文件数据库,我发现了几个问题。 我已经发布了下面的脚本。帮助PHP脚本分页对于平面文件数据库

<?php 
echo '<html><body>'; 

// Data, normally from a flat file or some other source 
$data = "Item1|Item2|Item3|Item4|Item5|Item6|Item7|Item8|Item9|Item10"; 
// Put our data into an array 
$dataArray = explode('|', $data); 
// Get the current page 
$currentPage = trim($_REQUEST[page]); 
// Pagination settings 
$perPage = 3; 
$numPages = ceil(count($dataArray)/$perPage); 
if(!$currentPage || $currentPage > $numPages) 
    $currentPage = 0; 
$start = $currentPage * $perPage; 
$end = ($currentPage * $perPage) + $perPage; 
// Extract ones we need 
foreach($dataArray AS $key => $val) 
{ 
    if($key >= $start && $key < $end) 
     $pagedData[] = $dataArray[$key]; 
} 

foreach($pagedData AS $item) 
    echo '<a href="/'. $item .'/index.php">'. $item .'</a><br>'; 

if($currentPage > 0 && $currentPage < $numPages) 
    echo '<a href="?page=' . ($currentPage - 1) . '">« Previous page</a><br>'; 
if($numPages > $currentPage && ($currentPage + 1) < $numPages) 
    echo '<a href="?page=' . ($currentPage + 1) . '" class="right">Next page »</a><br>'; 

echo '</body></html>'; 
?> 

我的第一个问题似乎是在第9行,我可以改变行:

$currentPage = trim(@$_REQUEST[page]); 

但这种变化不会修正这个错误,它只是将其隐藏。第9行需要做些什么来摆脱我的错误页面?

其次,我想以不同的方式来获取在第5行中的数据。我想从文本文件中获取数据,我们将其称为“items.txt”,它具有如下的条目,每行一个。

Fun 
Games 
Toys 
Sports 
Fishing 
Pools 
Boats 

请推荐备用代码来获取所需的数据。

最后,我想包括指向“第一页”和“最后一页”以及“上一页”和“下一页”,为的是当前的代码。

我为我的马虎发帖道歉,但将是真正的赞赏人谁可以帮助我了解生产所需的我需要的结果的变化。谢谢.....

回答

1

问题,9号线

$_REQUEST[page]有两个独立的问题。

1)page被解读为一个常量的名称,因为它没有加引号。 PHP然后注意到有没有叫page不变,所以它需要一个猜测,你的意思是串page - 它是如果page被引述 - 并触发一个错误时通知您。因此,请改用$_REQUEST['page']

2)'page'不一定是$_REQUEST一个关键,因为数据不能保证给出。因此,在确保它存在之前,您不能参考$_REQUEST['page']。这可以通过isset($_REQUEST['page'])完成。

然后,你的最终代码应该看起来像这样。

if (isset($_REQUEST['page'])) { 
    $currentPage = $_REQUEST['page']; 
} else { 
    $currentPage = 'some default value'; 
} 

问题数据源

file()函数读取文件的行成阵列 - 例如,所述阵列的第四值也是在该文件中的第四行。因此,您可以将$dataArray设置为$dataArray = file('text.dat');

+0

谢谢!到现在为止还挺好。我已经修复了所述的错误,现在我正在从文本文件中获取数据。如果当前页面URL包含它自己的查询字符串呢?这将是一个问题,对吗?那么该怎么办? – mobilestimulus 2011-05-11 18:55:59

+0

我不完全了解你的新问题。至于Stackoverflow的性质,分别询问每个问题是非常有益的。否则,这使得未来的搜索者很难找到答案。 – erisco 2011-05-11 19:31:42

+0

假设这个脚本显示在一个名为site.com/index.php?member=156的页面上,点击Next Page链接后,成员变量将会消失。这有帮助吗? – mobilestimulus 2011-05-11 20:25:13