|
|
|
|
|
|
для: cheops
(01.02.2007 в 12:38)
| | Вы знаете, приведенная Вами конструкция у меня к сожалению не работает. Вы уж простите меня, но я архитектор, и для меня проще спроектировать небосреб, чем заставить работать этот скрипт. Подкажите в чем ошибка.
По понятным причинам привожу лишь две части скрипта:
Панель администрирования:
///НАЧАЛО ДОКУМЕНТА
<table ><tr><td>
<a class="menu" href=addphotoform.php?id_catalog=<? echo $id_parent ?>>Добавить фотографию в новости</a>
</td></tr></table>
<table align=left class=bodytable width="550" border="0" >
<?php
// Выбираем из базы данных фотографии
$query = "SELECT * FROM photo
WHERE id_catalog=$id_parent
ORDER BY id_photo ASC";
$prt = mysql_query($query);
if(!$prt)
{
echo "error : ".mysql_error()."<br>";
echo $query;
puterror("Ошибка #1");
}
// Если в текущей группе фотографии имеется хотя бы одна
// фотография - формируем таблицу с фотографиями
if(mysql_num_rows($prt) > 0)
{
// Выводим заголовок таблицы
while($par = mysql_fetch_array($prt))
{
// Выясняем скрыта фотография или нет
$styletable="";
if($par['hide'] == "hide")
{
$showhide = "<a href=showphoto.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Отобразить</a>";
$styletable="class='hiddenrow'";
} else $showhide = "<a href=hidephoto.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Скрыть</a>";
// Формируем переменную $image, несущую ответственность за вывод
// уменьшенного изображения, являющегося ссылкой на увеличенное
if(!empty($par['small']) &&
$par['small']!="-" &&
file_exists("../".$par['small']))
{
$size = getimagesize("../".$par['big']);
$image = "<a href=# onclick=\"show_img('".$par['big']."',".$size[0].",".$size[1].",'true'); return false \" ><img src=../".$par['small']." border=0 vspace=3></a>";
}
else $small = "Нет";
// Если значение временной переменной равно 0
// выводим тэг начала строки таблицы <tr>
if ($td == 0) echo "<tr>";
// Выводим фотографию
echo "<td $styletable><table align=left border=0 width=170><tr >
<td colspan=2 align=center><p><small>".$par['name']."</small></p></td></tr>
<tr>
<td align=center>$image</td></tr>
<tr><td align=center>
<p><small>id:".$par['id_catalog']."".$par['id_photo']."</small>
<p>$showhide
<a href=editphotoform.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Исправить</a>
<a href=delphoto.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Удалить</a><br>
<a href=top.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Вверх</a>
<a href=bottom.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Вниз</a>
</td>
</tr></table></td>";
// Увеличиваем значение временной переменной $td
$td++;
// Если временная переменная $td принимает значение
// равное 3, следовательно строка завершена, и необходимо
// вывести завершающий тэг </tr>, а значение самой
// переменной обнулить
if ($td == 3)
{
echo "</tr>";
$td = 0;
}
}
}
?>
</table>
///ВУАЛЯ...
Управление перемещением:
///НАЧАЛО ДОКУМЕНТА
<?php
// Устанавливаем соединение с базой данных
require_once ("../config.php");
include "util.php";
// Извлекаем позицию текущей фотографии
$query = "SELECT pos FROM photo
WHERE id_photo = $_GET[id_photo]
LIMIT 1";
$cat = mysql_query($query);
if(!$cat) exit("Ошибка при извлечении позиции фотографии #1");
if(mysql_num_rows($cat)) $pos_current = mysql_result($cat, 0);
// Извлекаем позицию предыдущей фотографии
$query = "SELECT pos FROM photo
WHERE pos < $pos_current
ORDER BY pos DESC
LIMIT 1";
$cat = mysql_query($query);
if(!$cat) exit("Ошибка при извлечении позиции фотографии #2");
if(mysql_num_rows($cat))
{
$preview = mysql_fetch_array($cat);
$query = "UPDATE photo SET pos = $preview[pos]
WHERE pos = $_GET[pos]
LIMIT 1";
@mysql_query($query);
$query = "UPDATE photo SET pos = $pos_current
WHERE pos = $preview[pos]
LIMIT 1";
@mysql_query($query);
}
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=$id_catalog'>
</HEAD></HTML>";
?>
///ФИНИШ
Заранее благодарю за помощь! | |
|
|
|
|
|
|
|
для: Ramzero
(01.02.2007 в 10:22)
| | Да, совершенно верно, следует добавить управляющие ссылки, которые вы привели, можно даже их оформить в виде рисунков со стрелками вверх и вниз. | |
|
|
|
|
|
|
|
для: Ramzero
(01.02.2007 в 10:22)
| | Добрый день, мне нужно что-то вроде Вашей фотогалереи, можно с Вами связаться по аське??? | |
|
|
|
|
|
|
|
для: cheops
(30.01.2007 в 10:56)
| | Спасибо огромное, общий принцип понятен, единственно чего не могу понять, как подобную конструкцию увязать с интерфейсом панели администрирования.
Предполагаю, что я должен использовать похожую на приведенные ниже конструкции, а приведенные вами два кода должен разместить в двух отдельных файлах:
<a href=top.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Вверх</a>
<a href=bottom.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Вниз</a>
Если я не прав, поправьте меня пожалуйста.
На всякий случай размещаю код станицы администрирования фотогалереи.
//КОД СТРАНИЦЫ
<table ><tr><td>
<a class="menu" href=addphotoform.php?id_catalog=<? echo $id_parent ?>>Добавить фотографию</a>
</td></tr></table>
<table align=left class=bodytable width="550" border="0" >
<?php
// Выбираем из базы данных фотографии
$query = "SELECT * FROM photo
WHERE id_catalog=$id_parent
ORDER BY id_catalog";
$prt = mysql_query($query);
if(!$prt)
{
echo "error : ".mysql_error()."<br>";
echo $query;
puterror("Ошибка!");
}
// Если в текущей группе фотографии имеется хотя бы одна
// фотография - формируем таблицу с фотографиями
if(mysql_num_rows($prt) > 0)
{
// Вспомогательная переменная для вывода
// фотографий по 3 штуки в строке
$td == 0;
// Выводим заголовок таблицы
while($par = mysql_fetch_array($prt))
{
// Выясняем скрыта фотография или нет
$styletable="";
if($par['hide'] == "hide")
{
$showhide = "<a href=showphoto.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Отобразить</a>";
$styletable="class='hiddenrow'";
} else $showhide = "<a href=hidephoto.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Скрыть</a>";
// Формируем переменную $image, несущую ответственность за вывод
// уменьшенного изображения, являющегося ссылкой на увеличенное
if(!empty($par['small']) &&
$par['small']!="-" &&
file_exists("../".$par['small']))
{
$size = getimagesize("../".$par['big']);
$image = "<a href=# onclick=\"show_img('".$par['big']."',".$size[0].",".$size[1].",'true'); return false \" ><img src=../".$par['small']." border=0 vspace=3></a>";
}
else $small = "Нет";
// Если значение временной переменной равно 0
// выводим тэг начала строки таблицы <tr>
if ($td == 0) echo "<tr>";
// Выводим фотографию
echo "<td $styletable><table align=left border=0 width=170><tr >
<td colspan=2 align=center><p><small>".$par['name']."</small></p></td></tr>
<tr>
<td align=center>$image</td></tr>
<tr><td align=center>
<p><small>id:".$par['id_catalog']."".$par['id_photo']."</small>
<p>$showhide
<a href=delphoto.php?id_photo=".$par['id_photo']."&id_catalog=$id_parent>Удалить</a></td>
</tr></table></td>";
// Увеличиваем значение временной переменной $td
$td++;
// Если временная переменная $td принимает значение
// равное 3, следовательно строка завершена, и необходимо
// вывести завершающий тэг </tr>, а значение самой
// переменной обнулить
if ($td == 3)
{
echo "</tr>";
$td = 0;
}
}
}
?>
</table>
//КОНЕЦ КОДА СТРАНИЦЫ | |
|
|
|
|
|
|
|
для: Ramzero
(30.01.2007 в 09:24)
| | Для стрелочек нужно примерно следующую схему (вверх)
<?php
// Извлекаем позицию текущего каталоаг
$query = "SELECT pos FROM $menu_catalog
WHERE id_catalog = $_GET[id_catalog]
LIMIT 1";
$cat = mysql_query($query);
if(!$cat) exit("Ошибка при извлечении позиции каталога");
if(mysql_num_rows($cat)) $pos_current = mysql_result($cat, 0);
// Извлекаем позицию предыдущего каталога
$query = "SELECT id_catalog, pos FROM $menu_catalog
WHERE pos < $pos_current
ORDER BY pos DESC
LIMIT 1";
$cat = mysql_query($query);
if(!$cat) exit("Ошибка при извлечении позиции каталога");
if(mysql_num_rows($cat))
{
$preview = mysql_fetch_array($cat);
$query = "UPDATE $menu_catalog SET pos = $preview[pos]
WHERE id_catalog = $_GET[id_catalog]
LIMIT 1";
@mysql_query($query);
$query = "UPDATE $menu_catalog SET pos = $pos_current
WHERE id_catalog = $preview[id_catalog]
LIMIT 1";
@mysql_query($query);
}
?>
|
Вниз
<?php
// Извлекаем позицию текущего каталога
$query = "SELECT pos FROM $menu_catalog
WHERE id_catalog = $_GET[id_catalog]
LIMIT 1";
$cat = mysql_query($query);
if(!$cat) exit("Ошибка при извлечении позиции каталога");
if(mysql_num_rows($cat)) $pos_current = mysql_result($cat, 0);
// Извлекаем позицию следующего элемента
$query = "SELECT id_catalog, pos FROM $menu_catalog
WHERE pos > $pos_current
ORDER BY pos
LIMIT 1";
$cat = mysql_query($query);
if(!$cat) exit("Ошибка при извлечении позиции каталога");
if(mysql_num_rows($cat))
{
$next = mysql_fetch_array($cat);
$query = "UPDATE $menu_catalog SET pos = $next[pos]
WHERE id_catalog = $_GET[id_catalog]
LIMIT 1";
@mysql_query($query);
$query = "UPDATE $menu_catalog SET pos = $pos_current
WHERE id_catalog = $next[id_catalog]
LIMIT 1";
@mysql_query($query);
}
?>
|
Только использовать соответствующие названия таблиц и первичных ключей. | |
|
|
|
|
|
|
| Помогите пожалуйста решить две непростые для меня задачи.
Суть первой состоит в модификации скрипта загрузки фотографий. Заказчику не нравится набирать ручками позицию фотографии, да и скрипт ваш работает не слишком корректно, может показывать на двух разных фотографиях одну и ту же позицию. Закзчик попросил поставить стрелочки, при помощи которых он мог бы перемещать фотографии в панели администрирования. Подскажите пожалуйста, как можно добавить подобную функцию в панель, модифировав скрипт галереи.
Вторая задача может быть проще, но я так и не смог ее реализовать своими силами. При просмотре большой фотографии мы используем скрипт photo.js. Заказчик же хочет, чтобы в раскрывающемся окне было отображено название фотографии (параметр name) и стрелки-ссылки, позволяющие листать все фотографии данного раздела (id_catalog). Подозреваю, что модифицировать скрипт photo.js не получится, поскольку требуется извлечение информации из базы данных. Подскажите, что я могу сделать для реализации идеи.
Заранее благодарю за помощь. | |
|
|
|
|