我有一个场景,如果我有一个缩略图图像网格并且用户点击图像,他们可以点击下一个(从网格中查看下一个图像)或之前(反之亦然)。
我是否在mysql中有一个单独的表来获取这些图像源的列表,或者你会使用像数组这样的东西,还是有其他更好的选择?我想这就是长期错误,如果有数百万张图片,它会减慢服务器的速度吗?
您是否愿意展示一个例子?
谢谢!
答案 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]