-2

a 有一个网站,目录中有 400 多张图片。我想在每页上按 12 列出它们。我怎样才能做到这一点?这是我的实际代码:

 <!doctype html>
<html lang="hu">
    <head>
        <title>Amatőr</title>
        <meta charset="utf-8"/>
    </head>
    <body>
        <h2><a href="../php/upload_picture.php" style="font-size:15pt; color:#ff00e8; text-decoration: none;">Vannak jó képeid? Töltsd fel őket és kikerülhetnek az oldalra!</a></h2>
        <article>
            <header>
                Amatőr Lányok
            </header>
            <div id="kepek">
                <?php
                $imgdir = '../img/blog/img/amator/'; //Pick your folder
                $allowed_types = array('png','jpg','jpeg','gif'); //Allowed types of files
                $dimg = opendir($imgdir);//Open directory
                while($imgfile = readdir($dimg))
                {
                  if( in_array(strtolower(substr($imgfile,-3)),$allowed_types) OR
                      in_array(strtolower(substr($imgfile,-4)),$allowed_types) )
                /*If the file is an image add it to the array*/
                  {$a_img[] = $imgfile;}
                }


                 $totimg = count($a_img);  //The total count of all the images
                //Echo out the images and their paths incased in an li.
                 for($x=0; $x < $totimg; $x++){ echo "<a onclick='Lightbox.start(this, false, false, false, false); return false;' rel='lightbox[amator]' href='" . $imgdir . $a_img[$x] . "'><img class='kep_listaz' width='200px' height='160px' src='" . $imgdir . $a_img[$x] . "' /></a>";}
                ?>
            </div>
        </article>
    </body>
</html>

Thanks!
4

2 回答 2

0

所以这实际上更像是一道数学题。您需要获取图像的总数,然后将其除以每页的最大图像数(确保这样ceil()做)。

您现在拥有查看所有这些图像所需的最大页面数。您现在需要做的是确定您是想要 page=1/page=2 等还是作为开始和结束。两者都相对容易,但是,使用您需要做的页面

$page = (int)$_GET['page'];
$start = $page * $max_items_per_page;
$end = $start + $max_items_per_page;

这样可能更省钱。还要添加额外的代码以确保您不会超出请求的页面的范围。

现在是获取文件数组(我建议您使用glob())并从头到尾使用array_slice()它的问题。

最后只有上一页/下一页,或列出所有(或部分)页面。获取下一个和上一个就像添加/删除 1 到$page,即$next = $page + 1;和一样简单$prev = $page-1;。再次,对于这两个,仔细检查你没有越界。如果它们超出范围,最好不要显示下一个/上一个。

于 2012-07-01T12:12:59.330 回答
0

有两种方法可以对这种数据进行分页:在前端发送所有数据,JavaSctipt 一次只向用户显示一部分,或者在后端,页面只呈现一部分时间,你重新加载整个页面以获得更多。

让它工作的最快方法是使用后端方法:

在你的 for 循环之前添加$page = isset($_GET['page']) ? $_GET['page']-1 : 0;

将循环的参数更改为 $x=$page*12; $x < $totimg && $x < ($page+1)*12; $x++

然后您可以通过添加?page=3到 url来操作页面

如果提交了无效的页码,您还需要添加一些错误处理。

于 2012-07-01T12:13:50.937 回答