单击创建下一个图像:上一个和下一个

时间:2011-08-05 05:22:07

标签: php database arrays image multidimensional-array

我有一个场景,如果我有一个缩略图图像网格并且用户点击图像,他们可以点击下一个(从网格中查看下一个图像)或之前(反之亦然)。

我是否在mysql中有一个单独的表来获取这些图像源的列表,或者你会使用像数组这样的东西,还是有其他更好的选择?我想这就是长期错误,如果有数百万张图片,它会减慢服务器的速度吗?

您是否愿意展示一个例子?

谢谢!

3 个答案:

答案 0 :(得分:0)

我不确定为什么会出现问题......如果您正在显示网格,这意味着您已经可以访问上一张/下一张图片,对吧?根据您拥有的用户数量,您可以简单地将显示的网格中的图像ID列表放入会话中,然后您甚至不需要访问数据库(除了拉动图像本身)。当用户滚动图像时(使用prev / next),如果用户开始接近结尾,则只需添加到列表中。

答案 1 :(得分:0)

是的,你需要这张桌子 因为您不应将所有文件存储在一个目录中 - 因为目录具有文件计数限制。所以你不能只从文件夹中读取“下一个”文件,因为该文件可以在另一个文件夹中。 有关其他信息,请查看此处: PHP security and unique naming conventions

答案 2 :(得分:-1)

我不认为你需要有一个多维数组。您的图像应该仍然具有从1到n的顺序ID,因此可以轻松实现next()和prev()函数。

例如,我的MySQL查询得到了这个结果。

Array
(
[0] => Array
    (
        [title] => Title test
        [src] => /images/1.jpg
    )

[1] => Array
    (
        [title] => Title
        [src] => /images/12123.jpg
    )

[2] => Array
    (
        [title] => Image
        [src] => /images/32132.jpg
    )

[3] => Array
    (
        [title] => Image test
        [src] => /images/332.jpg
    )    
)

然后在视图中处理网格生成。

$width = 2; // max_width of your grid
echo "<table border=1>\n";
foreach ($main as $id => $img)
{
  if ($id % $width == 0)
    echo "<tr>\n"; // create a new row if the width has been reached
  echo "<td>".$img['src']."</td>";
}
echo '</table>';

然后你的javascript在图像之间切换应该会更容易,因为你只需要增加和减少ID,而不是在你有

时为它计算
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]