Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

переход между объектами

17.07.2006, 12:35
ks
Джетон

Зарегистрирован:
2005-01-21
Сообщений: 10

Есть задача сделать переход между объектами в Полном выводе, т.е. у нас есть Галерея, на страничке со списком - превьюшки фотографий, переходим на одну из картинок в полный вывод, там большая картинка и хотим сделать ссылки на соседние картинки, а кроме того на первый объект и последний объект. Как это реализуется? Как выглядят ссылки на соседний объект и на первый/последний в данном разделе?
17.07.2006, 13:13
ks
Джетон

Зарегистрирован:
2005-01-21
Сообщений: 10

может быть кто-то уже делал такой вариант навигации - это не редкость в интернет, только на неткате не совсем ясно как это реализуется.
17.07.2006, 14:36
Гость
Гость

Встроенных средств для реализации подобной функциональности нет. Будем напрямую запрашивать данные из БД:

Код:

";
$res = @mysql_query("SELECT Message_ID, Name FROM Message$classID WHERE Subdivision_ID = $sub AND Sub_Class_ID = $cc AND Checked = 1 AND Priority < $f_Priority AND Message_ID != $f_RowID ORDER BY Priority DESC LIMIT 1");
if ($res) {
list($prev_id, $prev_name) = mysql_fetch_row($res);
mysql_free_result($res);
}
echo "


В данном случае мы получили ID предыдущего объекта, а также любое нужное кол-во свойств (столбцов таблицы) этого объекта (в данном примере это только Name). Обратите внимание на предложение ORDER BY и на одно из условий (Priority < $f_Priority). Здесь подразумевается, что объекты в списке сортируются по полю приоритета. Если в вашем случае параметры сортировки другие, их надо будет указать в запросе, как в предложении WHERE так и в ORDER BY.

Код для получения следущего объекта будет выглядеть так:

Код:

";
$res = @mysql_query("SELECT Message_ID, Name FROM Message$classID WHERE Subdivision_ID = $sub AND Sub_Class_ID = $cc AND Checked = 1 AND Priority > $f_Priority AND Message_ID != $f_RowID ORDER BY Priority ASC LIMIT 1");
if ($res) {
list($next_id, $next_name) = mysql_fetch_row($res);
mysql_free_result($res);
}
echo "


И далее, в нужном месте полного вывода объекта, можно будет вставить следующий код:

Код:

".opt($next_id, "<a href='".$current_sub[Hidden_URL].$cc_keyword."_".$next_id.".html'>следующий объект $next_name</a>")."


Это будет ссылкой на след. объект. С предыдущим, надеюсь, трудностей не возникнет улыбка
17.07.2006, 15:42
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Вы можете упростить указанный выше sql-запрос, уходя от "Priority < $f_Priority AND Message_ID != $f_RowID"... Вам достаточно лишь указать параметр LIMIT, а-ля:
Код:

# пред. объект
select .... limit ".($curPos+$f_RowNum).",1

# след. объект
select .... limit ".($curPos+$f_RowNum+2).",1


Temet nosce...
28.07.2006, 16:52
Гость

Зарегистрирован:
1970-01-01
Сообщений: 665

Получилось?
28.07.2006, 17:01
jedi

Зарегистрирован:
2005-01-26
Сообщений: 35

да. все нормально. подсмотрел в документации, что такая вставка PHP кода возможна лишь в полном выводе. В остальных случаях там пишется не echo", а result.=

Так что проблема отпала. =)
28.07.2006, 18:10
VitAShka
БГТУ

Зарегистрирован:
2005-02-09
Сообщений: 49

ОГРОМНОЕ СПАСИБО вам и от меня!
Супер вещь подсказали как сделать, мне она тоже как раз пригодилась!!!

BSTU
198 196 2006-07-28 18:10:41 8647
Описание проекта