Немного обо всем интересном
На главную Обратная связь Поиск
Главная
Форум
 
 
 
  Статьи Файлы Видео Кулинарные рецепты Города и Страны Разное  
Отдых и развлечения Юмор Видео, ТВ и музыка Непознанное Литература Спорт Игры Хобби
Окружающий мир Люди Страны и города География Флора и фауна Космос
Технологии Hardware Операционные системы Софт Интернет Мобильные устройства Сети и сетевая безопасность Разное
Дизайн и программирование Веб-строительство Дизайн и графика

Все статьи Список статей Добавить статью
 
Вниз
Следующая/Предыдущая при просмотре картинок


В данной статье опишу способ, как сделать в галерее кнопки Следующая и Предыдущая. Возможно, это пригодится где-то еще.

Самый простой способ, это прибавить и отнять от ID рисунка 1 и запросить ранний и поздний. Но так делать нельзя, т.к. такого ID может не быть (к примеру, если рисунок был удален).

Тут рассмотрим рабочий способ на примере модуля InGallery для PHP-Nuke. Программный код тут очень простой и может быть использован в других CMS и собственных разработках.

Для лучшего понимания процесса рассмотрим также просто отдельный PHP код, запросы в БД в котором, производятся как в системе PHP-Nuke, измените под свою CMS при необходимости.


Функция просмотра изображения в модуле InGallery:

<?php
function pic($id) {
global
$prefix, $db, $module_name, $admin_file, $pagetitle, $admin, $datetime, $user;

$id = intval($id); //проверяем переменную на цифру
include("modules/$module_name/config"); //подключаем настройки

if ($block3 == 1) {//В зависимости от настроек показывем правый блок
define('INDEX_FILE', true);
}

if (
is_admin($admin)) {//Запрос в базу для админа
$result2 = $db->sql_query("SELECT pid, title, bodytext, date, active, pic, w, h, psize, view FROM ".$prefix."_ingallery WHERE pid='$id'");
} else {
//Запрос в базу для остальных
$result2 = $db->sql_query("SELECT pid, title, bodytext, date, active, pic, w, h, psize, view FROM ".$prefix."_ingallery WHERE pid='$id' and active!='0'");
}

if (
$db->sql_numrows($result2) == 0) {//Если ничего не запросилось, перебрасываем пользователя на главную модуля
Header("Location: modules.php?name=$module_name");
exit;
}
//Присваиваем переменным данные из базы данных
$row2 = $db->sql_fetchrow($result2);
$pid = intval($row2['pid']);
$title = filter($row2['title'], "nohtml");
$bodytext = filter($row2['bodytext'], "nohtml");
$pic = filter($row2['pic'], "nohtml");
$wd = intval($row2['w']);
$hd = intval($row2['h']);
$view = intval($row2['view']);
$date = $row2['date'];
formatTimestamp($date);
$psize = intval($row2['psize']);
$psize = round($psize/1024, 2);
$active = intval($row2['active']);

if (
$w > $wd) {$w = $wd;}//сверяем ширину изображения с настройками

if (empty($title)) {$title = _NONAME;} //если у изображения нет имени, называем ее "Без имени"
if (!empty($bodytext)) {$bodytext = "<br><br><font class=\"storytitle\">"._BODY.":</font><br>$bodytext";}//Если есть описание оформляем и показываем его
$pagetitle = "- "._GALLERY." - $title"; //заголовок страницы

include("header.php"); //подключаем верхнюю часть сайта
title(""._GALLERY." - $title"); //Выводим заголовок

//Если администратором закрыт доступ к изображению для гостей, выдаем гостю не картинку, а предупреждение, что нужно зарегистрироваться.
if (($active == 2) AND (!is_user($user))) {
OpenTable();
echo
"<center><b><font color=\"red\">"._TOUSER2."</b></font><br><br>"._REG."<br><br>"._GOBACK."</center>";
CloseTable();

include(
"footer.php"); //Нижняя часть сайта
}

//Ниже мы выводим информацию о картинке и саму картинку
OpenTable();
echo
"<table border=\"0\" width=\"100%\"><tr><td align=\"center\">";
echo
"<img border=\"0\" src=\"InImage/$pic\" alt=\"$title\" width=\"$w\">";
echo
"</td></tr><tr><td>";
echo
"<b>"._SIZE.":</b> $wd x $hd "._PIX."";
echo
"</td></tr><tr><td>";
echo
"<b>"._SIZE2.":</b> $psize "._KB."";
echo
"</td></tr><tr><td>";
echo
"<b>"._DATE.":</b> $datetime";
echo
"</td></tr><tr><td>";

echo
"<b>"._VIEW.":</b> $view";
echo
"</td></tr><tr><td>";

if (
$active == 0) {
echo
"<b><font color=\"red\">"._TOADMIN."</b></font>";
echo
"</td></tr>";
} else {
echo
" ";
echo
"</td></tr>";
}

//Если админ, то ниже покажем ему функции для управления
if (is_admin($admin)) {
echo
"<tr><td align=\"right\">";
echo
"<a href=".$admin_file.".php?op=InGalDelImages&pid=$pid>" . _DELETE . "</a>  |  <a href=".$admin_file.".php?op=InGalEditImages&pid=$pid>" . _EDIT . "</a>";
echo
"</td></tr>";
}
echo
"</table>$bodytext";
CloseTable();

//Плюсуем 1 к кол-ву просмотров изображения
$db->sql_query("update ".$prefix."_ingallery set view=view+1 WHERE pid='$id'");
//Показываем низ сайта.
include("footer.php");
}
?>

Отдельный PHP код будет выглядеть так:

<?php
$result
= $db->sql_query("SELECT pid, title FROM base WHERE pid='$id'"); //Запрос в базу данных

$row = $db->sql_fetchrow($result));
//Присваиваем переменным значения из базы
$pid = intval($row['pid']);
$title = $row['title'];

echo
"$title"; //Выводим заголовок
?>

Сделаем еще 2 запроса в базу, чтобы определить предыдущую и следующую

В модуле InGallery найдем в самом низу CloseTable();, и выше добавим:

<?php
//////////////////// Находим предыдущую картинку
echo "<div align=\"center\">";
if (
is_admin($admin)) {//Запрос в базу для админа
$result2 = $db->sql_query("SELECT pid FROM ".$prefix."_ingallery WHERE pid<'$id' ORDER by pid DESC");
} else {
//Запрос в базу для остальных
$result2 = $db->sql_query("SELECT pid FROM ".$prefix."_ingallery WHERE pid<'$id' and active!='0' ORDER by pid DESC");
}
if (
$db->sql_numrows($result2) != 0) {//Если результат не равен 0, выводим
//Присваиваем переменным данные из базы данных
$row2 = $db->sql_fetchrow($result2);
$pid2 = intval($row2['pid']);
echo
"<a href=\"modules.php?name=$module_name&in=pic&id=$pid2\">Предыдущая</a> ";
}


//////////////////// Находим следующую картинку

if (is_admin($admin)) {//Запрос в базу для админа
$result3 = $db->sql_query("SELECT pid FROM ".$prefix."_ingallery WHERE pid>'$id'");
} else {
//Запрос в базу для остальных
$result3 = $db->sql_query("SELECT pid FROM ".$prefix."_ingallery WHERE pid>'$id' and active!='0'");
}
if (
$db->sql_numrows($result3) != 0) {//Если результат не равен 0, выводим
//Присваиваем переменным данные из базы данных
$row3 = $db->sql_fetchrow($result3);
$pid3 = intval($row3['pid']);
echo
" <a href=\"modules.php?name=$module_name&in=pic&id=$pid3\">Следующая</a>";
}

echo
"</div>";
?>

Отдельный PHP код будет выглядеть так, его просто нужно добавить ниже:

<?php
//////////////////// Находим предыдущую картинку
echo "<div align=\"center\">";

$result2 = $db->sql_query("SELECT pid FROM base WHERE pid<'$id' ORDER by pid DESC");

if (
$db->sql_numrows($result2) != 0) {//Если результат не равен 0, выводим
//Присваиваем переменным данные из базы данных
$row2 = $db->sql_fetchrow($result2);
$pid2 = intval($row2['pid']);
echo
"<a href=\"url&id=$pid2\">Предыдущая</a> ";
}

//////////////////// Находим следующую картинку

$result3 = $db->sql_query("SELECT pid FROM base WHERE pid>'$id'");

if (
$db->sql_numrows($result3) != 0) {//Если результат не равен 0, выводим
//Присваиваем переменным данные из базы данных
$row3 = $db->sql_fetchrow($result3);
$pid3 = intval($row3['pid']);
echo
" <a href=\"url&id=$pid3\">Следующая</a>";
}
echo
"</div>";
?>

Обратите внимание, добавлять код нужно без

<?php
?>

Он используется тут для подсветки, чтобы было понятнее читать.


Если вы нашли, какие то неточности в коде, или есть какой то другой способ, с радостью выслушаю ваши мнения.

Комментарии к статье весьма ограничены, поэтому если вы хотите поделиться своими кодами, убедительная просьба создать тему на форуме.


Данные:
Просмотров: 6361
Рейтинг: 0
Голосов: 0
Средний бал: 0
Комментариев: -1
Добавлен: 03.03.2008

Оценить:

Функции:



Шрифт:   +  -

Автор: Alexander-V-ShРазместил: Alexander-V-Sh
Посмотреть все статьи этого пользователя
 
Добавить комментарий:

Оставлять комментарии могут только зарегистрированные пользователи.
Возможно заинтересует: • 
Вверх
2006-2010 Интересное.инфо.
При использовании или копировании материалов не забываем ссылку на http://interesnoe.info