Проблема логики PHP - PullRequest
1 голос
/ 07 июля 2011

У меня есть таблица sql images, в которой есть столбцы id, imagePath, caption``count.

Для просмотра этих изображений я запрашиваю номер страницы и запрашиваю iamge

$limit=$page-1;
$sel=$mysqli->prepare("SELECT id,imagePath,caption,count from images".
                        " order by id desc limit ".$limit.",1");

Это показывает изображения правильно.

Но у меня есть другая функция, которая показывает 4 случайных миниатюры этих изображений из всех изображений из базы данных. С этими изображениями я также даю тег href, так что когда пользователь нажимает на эту ссылку, он попадает на страницу это изображение.

Теперь проблема с этими ссылками. Предположим, у меня есть подобные изображения в базе данных

id=1
id=2
id=3
id=4
id=5

Чтобы найти номер страницы определенного идентификатора, что я делаю

$newid=$idOfTheCurrentImage-($idOfTheLastImage-1);

Используя эту логику, я получаю

id=1  page=5
id=2  page=4
id=3  page=3
id=4  page=2
id=5  page=1

Это дает правильные результаты, если все идентификаторы в порядке. Но если кто-то из идентификатора удален, эта логика не работает.

Есть ли другое решение?

Ответы [ 2 ]

1 голос
/ 07 июля 2011

Я бы предложил использовать в качестве знаменателя страницы что-то кроме счетчика. Как вы говорите, он может измениться или потерпеть неудачу, если между ними отсутствует число.

Ваши изображения имеют подпись. Вы можете создать из этого «слаг» и использовать его в качестве знаменателя страницы.

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

1 голос
/ 07 июля 2011

Вы можете сделать следующее:

  • Добавление другого поля, «порядкового номера», чтобы у вас были пары ($ id, $ seq_number), и вы выполняете свои вычисления, как выс $ seq_number.Не забудьте обновить поле с порядковым номером при удалении.

  • Получить все идентификаторы в массиве и вычислить там.В этом варианте значение $ id не используется в вычислениях, вы используете только индексы массива.

Надеюсь, это поможет.Приветствия

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