将图像结果拆分为Pages

时间:2012-03-31 13:47:30

标签: php html paging

我有这个代码显示'images'目录下的所有图像,但它非常烦人,因为所有图像都显示在一个页面上:/

我怎么能在多个页面上分割这些图像?

这是代码

<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
</head>
<?php 
$files = glob("images/*.*"); 
echo '<div id="design">';

for ($i=0; $i<count($files); $i++) { 
    $num = $files[$i];
        if ($i%3==0){echo '<div class="Row">';}
        echo '<img class="img" width="250px" height="250px" src="'.$num.'" alt="random image" />'; 
        if ($i%3==0){echo '</div>';}
    }

echo '</div>';  
?>

2 个答案:

答案 0 :(得分:2)

分页!这是一个起点:

// glob list of images
$files = glob('images/*');

// for consistency, you'll have to sort the resulting array...
natcasesort($files);

// get a page number from a query string e.g: ?page=1
$page = filter_input(INPUT_GET, 'page', FILTER_VALIDATE_INT);

// filter_input returns null if there is no page value in the qs,
// so let's check that and add a default value if we need to
$page = $page ?: 1;

// slice the array! get a subset of the files array based on
// an offset (page number) and length (results per page)
$resultsPerPage = 5;
$slice = array_slice($files, (($page - 1) * $resultsPerPage), $resultsPerPage);

您现在可以正常显示结果子集。当然,您必须为每个页面提供一系列链接...这很简单:获取$files数组的长度,并使用$resultsPerPage值来确定您需要多少页显示。

希望这会有所帮助:)

答案 1 :(得分:1)

首先,尝试使用更多的rubust替换此行。这将返回所有文件(图像或其他任何内容),除非您确定只有图像文件位于文件夹中:

$files = glob("images/*.*");

$files将生成一个包含图像路径的数组,您可以轻松使用此功能仅显示页面中所需的图像数。

像这样:

<?php     

$imagesPerPage = 10;

if(!isset($_GET["start"]))
{
    $start = 0;
}
else
{
    $start = $_GET["start"];
}

$files = glob("images/*.*");     

for($i = $start; $i < $start + $imagesPerPage; $i++)
{
   if(isset($files[$i]))
   {
       echo "<img src=\"".$files[$i]."\" width=\"100\" height=\"100\" />\r\n";
   }
}

$start = $start + $imagesPerPage;       

echo "<br />\r\n";
echo "<a href=\"index.php?start={$start}\">NEXT</a>";
?>    

您可以遵循相同的规则并建立一个以前的链接!

请注意,停止(禁用)NEXT或Pervious链接取决于您自己!