|
|
|
| Здраствуйте.
Есть фотогалерея, при показе фотографии есть 2 ссылки "Предыдущее фото" ну и "Следующее фото" соответственно. Я смог додуматься только через цикл for с 10 кратным повтором делать запрос и выушивать, есть ли запись и id фото - 1, - 2 и т.д.
Сегодня решил сделать нечно типа:
$id = $fid-10;
$query = "SELECT pid FROM `photo` WHERE *** LIMIT ".$id.",20";
$r = mysql_query($query);
while ($row = mysql_fetch_assoc($r)) {
}
//$fid = ид фотографии
|
Вопрос собственно в том как проверить какие записи существуют. Просто скажем есть альбом, а так бах и удалили 20 фото идущих подряд и вся моя навигация тогда все равно падает. Как сделать так чтобы независимо ниотчего можно было выудить следующую запись в бд по задданыым условиям, а если нет то всё "Конец альбома".
Заранее спасибо. | |
|
|
|
|
|
|
|
для: Proger
(31.07.2008 в 14:17)
| |
SELECT id FTOM tbl WHERE id > $id AND ... ORDER BY id ASC LIMIT 10
|
SELECT id FTOM tbl WHERE id < $id AND ... ORDER BY id DESC LIMIT 10
|
| |
|
|
|
|
|
|
|
для: Trianon
(31.07.2008 в 15:15)
| | хм...
переделав под себя получил:
SELECT pid
FROM `photo`
WHERE pid > 169
AND aid =12
AND gid =3
ORDER BY pid ASC
LIMIT 10
|
Результат:
pid = 170
Это верно, в альбоме всего 170 фото.
Один вопрос... а можно эти два запроса сконтачить? Попробовал так:
SELECT pid
FROM `photo`
WHERE (pid > 169 OR pid < 169)
AND aid =12
AND gid =3
ORDER BY pid ASC
LIMIT 10
|
Получил бред...иды с нуля и до 10 соответственно.
Просто насколько мне известно, чем меньше запросов, тем лучше. ИМХО.
А неужели нет команды типа NEXT какой-нить, чтобы просто выбрать следующий элемент? | |
|
|
|
|
|
|
|
для: Proger
(31.07.2008 в 15:43)
| | (pid > 169 OR pid < 169) значит то же что и pid не равно 169
А Вы хотите первые 10 вслед за N (или непосредственно перед...N)
В таблицах нет предыдущих/следующих строк (элеменов).
Все строки лежат внавал.
>Просто насколько мне известно, чем меньше запросов, тем лучше. ИМХО
Если б это правило было верным, запосов к БД не было бы вообще. | |
|
|
|
|
|
|
|
для: Trianon
(31.07.2008 в 15:48)
| | Спасибо за ответы. Учту и буду знать! :) | |
|
|
|