создать следующее изображение по клику: предыдущий и следующий - PullRequest
0 голосов
/ 05 августа 2011

У меня есть сценарий, в котором, если у меня есть сетка миниатюрных изображений и пользователь щелкает изображение, они могут щелкнуть следующее (чтобы увидеть следующее изображение в строке из сетки) или предыдущее (наоборот).

Буду ли я иметь в MySQL отдельную таблицу для списка этих источников изображений, или вы будете использовать что-то вроде массива, или есть какие-то другие лучшие варианты?Я думаю, что это неправильно, если есть миллионы изображений, это замедлит работу сервера?

Хотели бы вы показать пример?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 05 августа 2011

Да, вам нужна таблица.
Потому что не следует хранить все файлы в одном каталоге - потому что в каталогах есть ограничения на количество файлов.Таким образом, вы не можете просто прочитать «следующий» файл из папки, потому что этот файл может быть в другой папке.Дополнительную информацию смотрите здесь: Безопасность PHP и уникальные соглашения об именах

0 голосов
/ 05 августа 2011

Я не думаю, что вам нужно иметь многомерный массив для этого.Ваши изображения должны по-прежнему иметь последовательный идентификатор от 1 до n, поэтому будет легко реализовать вашу функцию 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 для переключения между изображениями должен быть намного проще, поскольку вам нужно только увеличивать и уменьшать идентификатор, а не вычислять его, когда у вас есть

[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
0 голосов
/ 05 августа 2011

Я не уверен, почему возникает проблема ... если вы показываете сетку, это означает, что у вас уже есть доступ к предыдущему / следующему изображению, верно?В зависимости от того, сколько у вас пользователей, вы можете просто поместить список идентификаторов изображений из отображаемой сетки в сеанс, тогда вам даже не нужно будет обращаться к базе данных (кроме как для извлечения самого изображения).Поскольку пользователь прокручивает изображения (используя prev / next), просто добавьте в список, если пользователь начинает приближаться к концу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...