2011-08-05 86 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) –

相關問題