我正在尝试创建一个网页,每次显示存储在目录中的10个文件。我不想为它使用数据库。这就是我到目前为止所做的。
<?php
$exclude = array("index.php");
$cssfiles = array_diff(glob("*.php"), $exclude);
foreach ($cssfiles as $cssfile) {
$filename = "http://example.com/lessons/css/".$cssfile;
outputtags($filename,true,true);
}
?>
这打印出所有结果,我无法弄清楚如何仅显示前十个结果,之后用户在不使用数据库的情况下单击下一个10个结果。我认为仅仅为此目的使用数据库是没有意义的。
编辑我想这样做的原因是因为我收到了max_user_connection错误。
答案 0 :(得分:0)
您可以将文件存储到数组中并按照您的意愿对其进行排序,如下所示:
$exclude = array("index.php");
$cssfiles = array_diff(glob("*.php"), $exclude);
$files = array();
foreach ($cssfiles as $cssfile) {
$filename = "http://example.com/lessons/css/".$cssfile;
$files[] = $filename;
}
asort($files);
// Pagination start from here
$page = 1; // You will get this parameter from the url using $_GET['page'] for instance
$limit = 10; // Number of files to display.
$offset = (($page-1) * $limit);
$max = ($page * $limit);
$max = $max > count($files) ? count($files) : $max;
for ($i=$offset; $i<$max; $i++) {
echo $files[$i] . PHP_EOL;
}
echo 'Total Pages : ', count($files). PHP_EOL;
echo 'Page number : ' , $page;
也许您可以使用ajax并提取分页页面以避免每次都抓取所有文件。
答案 1 :(得分:-1)
这取决于您希望如何选择这十页。可以使用for
循环将文件0-9列为,并且可以从10-19,......开始计算,取决于用户请求的页面范围。
但是,添加文件时,系统会出现故障。在这种情况下,将一些排序信息加载/保存到会话/ cookie可以解决问题。
编辑:然而,使用数据库是此类任务的标准。即使您不喜欢它们,您也很可能需要它们来处理需要排序,搜索或连接多个数据集的更复杂的任务,这些数据集太复杂,无法通过文件系统功能实现。