Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> галерея, дописать скрипт 
:(
    Опции темы
PARROT
  Дата 25.6.2005, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 1
Всего: 50



Совместными усилиями написали скрипт для вывода галереи:
Код

<?php
$Sec = mysql_query("SELECT id_name, title, img FROM gall") or die(mysql_error());
// Выбор всех категорий
?>
<script>
        var photos        = new Array();
        var current        = new Array();
        function NextImage(idSec) {
                // Функция сменяющая изображения
                // все фотки категории находятся в массиве photos[ид категории] = array('foto/foto1.jpg', 'foto/foto2.jpg'); и т.п.
                if(current[idSec] != null) {
                        if(current[idSec] == photos[idSec].length-1) {
                                current[idSec] = 0;
                        } else {
                                current[idSec] = current[idSec] + 1;
                        }
                } else {
                        current[idSec] = 0;
                }

                var i = current[idSec];

                document.getElementById(idSec).src = photos[idSec][i];

        }
</script>
<table width="100%" border="1">
<?

while($sRow = mysql_fetch_row($Sec)) {

echo <<<HTML
<tr>
        <td>{$sRow[1]}<br><img id="{$sRow[0]}" src="{$sRow[2]}">
        <br>
        <a href="javascript:NextImage({$sRow[0]});">Следующая</a>
        </td>
</tr>
HTML;

$frs = mysql_query("SELECT img FROM galleri WHERE id_name={$sRow[0]}");
       echo "<script>";
        echo "photos[{$sRow[0]}] = new Array();\r\n";
        $i = 0;
        while($img = mysql_fetch_row($frs)) {
                echo " photos[{$sRow[0]}][{$i}] = '{$img[0]}';\r\n ";
                // Заполняем javascrip массив.
                $i++;
        }
        echo "</script>";

}
?>
</table>

Можно ознакомиться здесь: http://www.avtodiesel.spb.ru/index.php?page=exhibition
Скрипт ошибок не дает, но смена фотографий не происходит.
Помогите пожалуйста исправить скрипт.
Спасибо!!!



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Sardar
Дата 25.6.2005, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Ошибка в том что ты ID картинок указала как просто число. Бродилки этого не любят, дай всем картинкам префикс img, всё заработает smile
Также хорошо бы перед путём поставить ./ , хотя ошибок здесь быть не должно.

А вообще замечания по коду, у тебя смена картинки происходит мгновенно, если она не подгрузилась, какое то время юзер будет видеть белое пятно. К тому же размеры не указанны, некторые бродилки сразу дадут размер стандартного "крестика", что будет портить дизайн. Но это так, мелочи smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Ciber SLasH
Дата 25.6.2005, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Ты лучше запости сгенерированную страницу.
Т.е. если ты в IE работаешь, то пости сюда то, что выдал "Просмотр HTML кода".
Добавлено @ 22:23
ИМХО без массива current вполне можно было бы обойтись...
PM   Вверх
PARROT
Дата 25.6.2005, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 1
Всего: 50



Sardar
Ciber SLasH, а можно исправить мой скрипт? Честно говорю, писала не я!
Яваскрипт понимаю с трудом.
HTML код выдал следущее:
Код

<td width=20>&nbsp;</td>
<td valign=top>
<script>
        var photos        = new Array();
        var current        = new Array();
        function NextImage(idSec) {
                // Функция сменяющая изображения
                // все фотки категории находятся в массиве photos[ид категории] = array('foto/foto1.jpg', 'foto/foto2.jpg'); и т.п.
                if(current[idSec] != null) {
                        if(current[idSec] == photos[idSec].length-1) {
                                current[idSec] = 0;
                        } else {
                                current[idSec] = current[idSec] + 1;
                        }
                } else {
                        current[idSec] = 0;
                }

                var i = current[idSec];

                document.getElementById(idSec).src = photos[idSec][i];

        }
</script>
<table width="100%" border="1">
<tr>
        <td>К-700Р<br><img id="1" src="gal/k700r/2.jpg">
        <br>
        <a href="javascript:NextImage(1);">Следующая</a>
        </td>
</tr><script>photos[1] = new Array();
 photos[1][0] = 'gal/k700r/6.jpg';
  photos[1][1] = 'gal/k700r/5.jpg';
  photos[1][2] = 'gal/k700r/4.jpg';
  photos[1][3] = 'gal/k700r/3.jpg';
  photos[1][4] = 'gal/k700r/1.jpg';
 </script><tr>
        <td>К-700ТД-04<br><img id="2" src="gal/k700td/3.jpg">
        <br>
        <a href="javascript:NextImage(2);">Следующая</a>
        </td>
</tr><script>photos[2] = new Array();
 photos[2][0] = 'gal/k700td/6.jpg';
  photos[2][1] = 'gal/k700td/5.jpg';
  photos[2][2] = 'gal/k700td/4.jpg';
  photos[2][3] = 'gal/k700td/2.jpg';
  photos[2][4] = 'gal/k700td/1.jpg';
 </script><tr>
        <td>К-703МА-12-03<br><img id="3" src="gal/k703/3.jpg">
        <br>
        <a href="javascript:NextImage(3);">Следующая</a>
        </td>
</tr><script>photos[3] = new Array();
 photos[3][0] = 'gal/k703/7.jpg';
  photos[3][1] = 'gal/k703/6.jpg';
  photos[3][2] = 'gal/k703/5.jpg';
  photos[3][3] = 'gal/k703/4.jpg';
  photos[3][4] = 'gal/k703/2.jpg';
  photos[3][5] = 'gal/k703/1.jpg';
 </script><tr>
        <td>К-703МА-12-01<br><img id="4" src="gal/ma/1.jpg">
        <br>
        <a href="javascript:NextImage(4);">Следующая</a>
        </td>
</tr><script>photos[4] = new Array();
 photos[4][0] = 'gal/ma/3.jpg';
  photos[4][1] = 'gal/ma/2.jpg';
 </script></table>

<td width=20>&nbsp;</td>
</td>



--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Ciber SLasH
Дата 25.6.2005, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



Кстати Sardar дело говорит: поменяй ID картинок, ставь перед цифрой буквы. Например img1
Добавлено @ 22:48
Хм, у меня всё заработало, т.е. сгенерированный html-код -- рабочий.
PM   Вверх
IZ@TOP
Дата 25.6.2005, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(Sardar @ 25.6.2005, 23:11)
Ошибка в том что ты ID картинок указала как просто число. Бродилки этого не любят, дай всем картинкам префикс img, всё заработает

Это моя ошибка smile Не знал этого.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ciber SLasH
Дата 25.6.2005, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 24
Всего: 67



А может задать перед </head> тег <base 'http://твоя_пага.ru' /> ?
PM   Вверх
PARROT
Дата 25.6.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 1
Всего: 50



Так правильно? У меня работает. Ошибок не дает. smile
Код

<?php
$Sec = mysql_query("SELECT id_name, title, img FROM gall") or die(mysql_error());
// Выбор всех категорий
?>
<script>
        var photos        = new Array();
        var current        = new Array();
        function NextImage(idSec) {
                // Функция сменяющая изображения
                // все фотки категории находятся в массиве photos[ид категории] = array('foto/foto1.jpg', 'foto/foto2.jpg'); и т.п.
                if(current[idSec] != null) {
                        if(current[idSec] == photos[idSec].length-1) {
                                current[idSec] = 0;
                        } else {
                                current[idSec] = current[idSec] + 1;
                        }
                } else {
                        current[idSec] = 0;
                }

                var i = current[idSec];

                document.getElementById('img'+idSec).src = photos[idSec][i];

        }
</script>
<table width="100%" border="1">
<?

while($sRow = mysql_fetch_row($Sec)) {

echo <<<HTML
<tr>
        <td>{$sRow[1]}<br><img id="img{$sRow[0]}" src="{$sRow[2]}">
        <br>
        <a href="javascript:NextImage({$sRow[0]});">Следующая</a>
        </td>
</tr>
HTML;

$frs = mysql_query("SELECT img FROM galleri WHERE id_name={$sRow[0]}");
       echo "<script>";
        echo "photos[{$sRow[0]}] = new Array();\r\n";
        $i = 0;
        while($img = mysql_fetch_row($frs)) {
                echo " photos[{$sRow[0]}][{$i}] = '{$img[0]}';\r\n ";
                // Заполняем javascrip массив.
                $i++;
        }
        echo "</script>";

}
?>
</table>




--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Sardar
Дата 25.6.2005, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Чую уже разобрались, но свой код написал smile Писал в слепую, так что с первого раза может не заработать smile

Код
<!-- Этот скрипт лучше вынести во внешний файл -->
<script type="text/javascript">
/** проверяем есть ли требуемый метод у картинки, если надо устанавливаем */
function checkChangeAPIAvaible(img) {
  if(!img.changeSrc) img.changeSrc=changeSrcH;
}
/** реализация метода  changeSrc */
function changeSrcH(src) {
  if(src==null) { //если параметров не было, то покажи предидущую удачно загруженную картинку
    if(this.backSrc) this.src=this.backSrc;
    return;
  }
  if(this.complete) this.backSrc=this.src; //если предидущая картинка была удачно загруженна, то сохрани адрес на случай возврата
  if(!this.tempLoadImage) { //обьект Image который загрузит наш файл
     this.tempLoadImage=new Image();
     this.tempLoadImage.onload=changeSrcOL; //как только картинка загрузится
     this.tempLoadImage.parentImage=this; //ссылка на предка, понадобится в обработчике onload
  }
  this.tempLoadImage.src=src;
}
function nextImage(secid) {
  if(typeof(imdata))=="undefined"||!imdata[secid]) return;
  var img=document.getElementById("img"+secid);
  img.currImage=(img.currImage==null)? 0: img.currImage+1;
  img.currImage=(img.currImage>=imdata[secid].length])? 0: img.currImage;
  checkChangeAPIAvaible(img);
  img.changeSrc(imgdata[img.currImage]);
}
</script>
<script type="text/javascript">
var imdata=[];
<?php
  //раз разбивки по страницам нет, подргужаем всё
  $frs = mysql_query("SELECT galleri.img as path, gall.id_name as secid FROM galleri LEFT JOIN gall ON galleri.id_name=gall.id_name ORDER BY secid");
  $prevsec=-1;
  while($row=mysql_fetch_assoc($frs)) {
    if($prevsec!=$row['secid']) {
      if($prevsec>=0) echo "];";
      echo "imdata[{$row['secid']}] = [\r\n\"{$row['path']}\"\r\n";
      $prevsec=$row['secid'];
    } else echo ",\"{$row['path']}\r\n";
  }
  if($prevsec>=0) echo "];";
?>
</script>

<table width="100%" border="1">
<?php
//Где разбивка по страницам если записей много и почему die(mysql_error)? не солидно...
$Sec = mysql_query("SELECT id_name, title, img FROM gall") or die(mysql_error());
// Выбор всех категорий
while($sRow = mysql_fetch_row($Sec)) {
echo <<<HTML
<tr>
        <td>{$sRow[1]}<br><img id="img{$sRow[0]}" src="{$sRow[2]}">
        <br>
        <a href="javascript: void(0);" onclick="nextImage({$sRow[0]});">Следующая</a>
        </td>
</tr>
HTML;
}
?>
</table>


Если нужно, примочка типа надписи Loading... дописываеться за 2 минуты.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Guest
Дата 27.6.2005, 05:55 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Кстати, Sardar подскажи как таку примочку сотворить? Желательно выкинь плззз код!
  Вверх
Sardar
Дата 28.6.2005, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



PARROT не ходи под Guest'ом smile
Здесь полный код с примочкой: http://forum.vingrad.ru/index.php?showtopic=47159



--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
PARROT
Дата 29.6.2005, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 1
Всего: 50



Цитата(Sardar @ 28.6.2005, 23:18)
PARROT не ходи под Guest'ом smile
Здесь полный код с примочкой: http://forum.vingrad.ru/index.php?showtopic=47159

Sardar, никогда так не делала, даже в мыслях не было.
Моя галерея работает. Код в наличии. Другой мне не нужен.
Это кто-то спросил или пошутил, но не я...100%!!! smile
Цитата

Кстати, Sardar подскажи как таку примочку сотворить? Желательно выкинь плззз код!

Я так даже к близким людям не обращаюсь. smile
Язык бы не повернулся.

Это сообщение отредактировал(а) PARROT - 29.6.2005, 11:43


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
Aliance
Дата 29.6.2005, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



PARROT
Не переживай. Сардар ошибся. видимо. IP явно не твой ))
PM MAIL WWW ICQ Skype   Вверх
Sardar
Дата 29.6.2005, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Народ не флеймим! smile Ещё один пост не в тему и удалё весь офтоп.

PARROT ко мне можно обращаться как угодно smile
Кстати мой код оптимальнее в несколько раз, так как в твоём делаем в цикле кучу запросов, хотя можно это всё дело разом достать. Впрочем это не фатально, пока записей в твоей БД такое мизерное количество.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
PARROT
Дата 29.6.2005, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 1
Всего: 50



Да я не переживаю. Просто иногда от таких постов или обращений, коробит сильно.
Цитата

Словно как от ларька: Эй Васьк или как тебя там, забыл, а собственно какая разница. Дай выпить!!!

Извиняюсь, за Оффтоп. smile


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.