Разделение изображения в страницы - PullRequest
0 голосов
/ 31 марта 2012

У меня есть этот код, который показывает все изображения в каталоге '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 ]

2 голосов
/ 31 марта 2012

Разбивка!Вот отправная точка:

// 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 голос
/ 31 марта 2012

Сначала попробуйте заменить эту строку чем-то более грубым.Это вернет все файлы (изображения или что-либо еще), если вы не уверены, что в папке находятся только файлы изображений:

$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>";
?>    

Вы можете следовать тем же правилам, а также сделать видимую ссылку!1010 *

Обратите внимание, что остановка (отключение) СЛЕДУЮЩИХ или видимых ссылок зависит только от вас!

...