2011-08-05 15 views
0

私は、サムネイル画像のグリッドがあり、ユーザーが画像をクリックすると、次の画像をクリックして(グリッドから次の画像を見る) (逆に)。クリックして次の画像を作成:

これらのイメージソースのリストをmysqlに別のテーブルを持っているか、配列のようなものを使用したいのですか他にも良いオプションがありますか?私はこれを長い間間違って考えています。何百万もの画像があれば、サーバーの速度が遅くなりますか?

例も表示しますか?

ありがとうございました!

答えて

0

なぜ問題があるのか​​分かりません...グリッドを表示している場合は、以前の画像/次の画像にアクセスできていることを意味します。あなたが持っているユーザーの数に応じて、表示されたグリッドからのイメージIDのリストをセッションに入れるだけで、データベースにヒットする必要はありません(イメージ自体をプルする場合を除く)。ユーザーが画像をスクロールするとき(prev/nextを使用)、ユーザーが最後まで近づいてきたらリストに追加するだけです。

+0

を持っているときに画像を切り替えるためにあなたのJavascriptをしても、彼が必要とするこのグリッドを表示する代わりに、それのためのコンピューティングの、はるかに簡単であるべきテーブル(ファイルのリストを持つ)。 –

0

はい、テーブルが必要です。
ディレクトリにはファイル数の制限があるため、すべてのファイルを1つのディレクトリに保存しないでください。したがって、そのファイルは別のフォルダに存在する可能性があるため、単に「次の」ファイルをフォルダから読み取ることはできません。 詳細については、こちらをご覧ください: 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>'; 

あなただけのIDをインクリメントし、デクリメントする必要があるとして、あなたは

[0][0] [0][1] [0][2] 
[1][0] [1][1] [1][2] 
+0

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

関連する問題