Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Консультация по фотогалерее 1.1.2 - изменение позиции фотографии

Сообщения:  [1-7] 

 
 автор: cheops   (07.02.2007 в 16:52)   письмо автору
 
   для: Ramzero   (07.02.2007 в 12:17)
 

Обсуждение перенесено в тему по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=32191.

   
 
 автор: Ramzero   (07.02.2007 в 12:17)   письмо автору
 
   для: 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>";
?>
///ФИНИШ

Заранее благодарю за помощь!

   
 
 автор: cheops   (01.02.2007 в 12:38)   письмо автору
 
   для: Ramzero   (01.02.2007 в 10:22)
 

Да, совершенно верно, следует добавить управляющие ссылки, которые вы привели, можно даже их оформить в виде рисунков со стрелками вверх и вниз.

   
 
 автор: slvvv   (01.02.2007 в 12:37)   письмо автору
 
   для: 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>

//КОНЕЦ КОДА СТРАНИЦЫ

   
 
 автор: cheops   (30.01.2007 в 10:56)   письмо автору
 
   для: 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($cat0);
  
// Извлекаем позицию предыдущего каталога
  
$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($cat0);
  
// Извлекаем позицию следующего элемента
  
$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);
  }
?>

Только использовать соответствующие названия таблиц и первичных ключей.

   
 
 автор: Ramzero   (30.01.2007 в 09:24)   письмо автору
 
 

Помогите пожалуйста решить две непростые для меня задачи.
Суть первой состоит в модификации скрипта загрузки фотографий. Заказчику не нравится набирать ручками позицию фотографии, да и скрипт ваш работает не слишком корректно, может показывать на двух разных фотографиях одну и ту же позицию. Закзчик попросил поставить стрелочки, при помощи которых он мог бы перемещать фотографии в панели администрирования. Подскажите пожалуйста, как можно добавить подобную функцию в панель, модифировав скрипт галереи.
Вторая задача может быть проще, но я так и не смог ее реализовать своими силами. При просмотре большой фотографии мы используем скрипт photo.js. Заказчик же хочет, чтобы в раскрывающемся окне было отображено название фотографии (параметр name) и стрелки-ссылки, позволяющие листать все фотографии данного раздела (id_catalog). Подозреваю, что модифицировать скрипт photo.js не получится, поскольку требуется извлечение информации из базы данных. Подскажите, что я могу сделать для реализации идеи.
Заранее благодарю за помощь.

   

Сообщения:  [1-7] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования