我有一个场景,如果我有一个缩略图图像网格和用户点击图像,他们可以点击下一个(从网格中看到下一个图像)或先前(反之亦然)。创建下一个图像点击:上一个和下一个
我会在mysql中为这些图像源的列表设置一个单独的表,还是使用类似数组的东西,还有其他更好的选择吗?我在长时间错误地思考这个问题,如果有数百万的图像,它会减慢服务器的速度?
你愿意也举一个例子吗?
谢谢!
我有一个场景,如果我有一个缩略图图像网格和用户点击图像,他们可以点击下一个(从网格中看到下一个图像)或先前(反之亦然)。创建下一个图像点击:上一个和下一个
我会在mysql中为这些图像源的列表设置一个单独的表,还是使用类似数组的东西,还有其他更好的选择吗?我在长时间错误地思考这个问题,如果有数百万的图像,它会减慢服务器的速度?
你愿意也举一个例子吗?
谢谢!
我不确定为什么会出现问题...如果您显示的是网格,那意味着您已经可以访问上一张/下一张图片,对吗?根据您有多少用户,您可以简单地将显示的网格中的图像ID列表放入会话中,然后您甚至不需要击中数据库(除了将图像本身拉出)。当用户滚动浏览图片时(使用prev/next),只要用户开始接近结尾就添加到列表中。
是的,你需要桌子。
因为您不应该将所有文件存储在一个目录中 - 因为目录具有文件数量的限制。所以你不能只从文件夹中读取“下一个”文件,因为该文件可以在另一个文件夹中。 欲了解更多信息,请看这里: PHP security and unique naming conventions
我不认为他想将它们从文件夹中拉出来,我想他希望用户搜索图像并进行扫描。 –
我不认为你需要有一个多维数组。你的图像仍然应该有从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]
[facepalm](http://i384.photobucket.com/albums/oo281/CooperDaKat/facepalmLion.jpg) –
即使显示此格,他需要表(要有文件列表)。 –