|
|
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
Зарегистрирован: 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
|