2011-08-05 54 views
0

我有一个场景,如果我有一个缩略图图像网格和用户点击图像,他们可以点击下一个(从网格中看到下一个图像)或先前(反之亦然)。创建下一个图像点击:上一个和下一个

我会在mysql中为这些图像源的列表设置一个单独的表,还是使用类似数组的东西,还有其他更好的选择吗?我在长时间错误地思考这个问题,如果有数百万的图像,它会减慢服务器的速度?

你愿意也举一个例子吗?

谢谢!

回答

0

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

+0

即使显示此格,他需要表(要有文件列表)。 –

0

是的,你需要桌子。
因为您不应该将所有文件存储在一个目录中 - 因为目录具有文件数量的限制。所以你不能只从文件夹中读取“下一个”文件,因为该文件可以在另一个文件夹中。 欲了解更多信息,请看这里: PHP security and unique naming conventions

+0

我不认为他想将它们从文件夹中拉出来,我想他希望用户搜索图像并进行扫描。 –

-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] 
+0

[facepalm](http://i384.photobucket.com/albums/oo281/CooperDaKat/facepalmLion.jpg) –

相关问题