[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Отображение рисунков попеременно
Koval
Помогите кто чем может!!!
Я только начинаю изучать php и вот у меня есть такое задание.

Есть форма в которой есть раздвижной список. В этом списке цифры от 1 до 10. Эти цифры соответствуют имени файла (т.е. 1.jpg и т.д.)

Так вот когда выбираешь из списка кол-во картинок и нажимаешь на кнопку ПОКАЗАТЬ, то в одной и той же области, попеременно, отображается картинки.

Поясню: я выбираю 5, значит отображается сначала 1-я, потом 2-я и т.д. до 5-й, а затем переходит на первую и все продолжается сначала.

Это задание нужно было сделать сначала на JavaScript, а второе на php. С JavaScript проблем не было, а вот с php я не знаю как сделать чтоб картинка отображалась в одной и той же области.

Вырезки из скрипта:
PHP
// $maximumFoto – эта переменная хранит выбранное кол-во фоток
pokaz(0,$maximumFoto-1);
function 
pokaz($i,$MF)
    {        
        if (
$i>$MF) {return;}
        else
        {
            
$source=array("1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg","8.jpg","9.jpg","10.jpg");    
            echo 
"<img src='$source[$i]'><br>";
            
$i++;
            
pokaz($i,$MF);        
        
        }    
    }


В этом случае он просто выдает картинки одну за другой, а как сделать чтоб в одной области?



Спустя 1 час, 32 минуты, 31 секунда (5.07.2009 - 11:51) jetistyum написал(а):
а что значит в одной области? и еще, попробуй все это сделать обычным циком, а не рекурсией

Спустя 14 часов, 52 минуты, 18 секунд (6.07.2009 - 02:44) Koval написал(а):
Цитата (jetistyum @ 5.07.2009 - 08:51)
а что значит в одной области? и еще, попробуй все это сделать обычным циком, а не рекурсией

В одной области – это подразумевает, что изображение будет показано вместо предыдущего с задержкой времени. Т.е. показана картинка 1.jpg, через интервал к примеру, в секунду отображается вместо 1.jpg – 2.jpg и так до тех пор, пока недостигнут максимального выбранного значения.

В JavaScript это реализовывалось элементарно (рекурсивная функция и задержка setTimeout("ФУНКЦИЯ",ВРЕМЯ)).

С циклом результат тот же. К стати циклом почему то даже в JavaScript не получалось.

Спустя 2 минуты, 9 секунд (6.07.2009 - 02:46) kirik написал(а):
Цитата (Koval @ 5.07.2009 - 18:44)
В JavaScript это реализовывалось элементарно

С помощью JS это и нужно организовывать / создавать гиф-анимацию.

Тему перенес в JS.

UPD
Цитата (Koval @ 5.07.2009 - 18:44)
К стати циклом почему то даже в JavaScript не получалось.

потому что цикл отрабатывается за тысячные доли секунды, тут, как ты сказал, нужно через setTimeout или setInterval делать.

Спустя 4 часа, 28 минут, 20 секунд (6.07.2009 - 07:14) Koval написал(а):
kirik

Еще раз поясню: У меня два задания одно то что я опысывал выше надо сделать при помощи JS, а второе цитирую «Сценарий полностью соответствует варианту А.5, только действия пользователя (щелчки мышью на кнопках или ссылках) передаются серверу, на котором формируется HTML страница с соответствующим рисунком и отправляется обратно клиенту.»

Может я что-то не догоняю, если честно я вообще многое в php не понимаю????

Получается, что нужно изменить работу выполненную на JS. А какие изменения надо внести??

Основная функция в JS


HTML
function Pokaz_Foto() //функция кнопки Показать
{
var pic=document.getElementById("MyIMG");//ищим картинку по id

if(pic == null) // проверяем а есть ли картинка
return;
pic.src=source[Counter++];//меняем адрес ресурса

if(Counter >= maximumFoto) Counter=0; //Если максимальный, то показываем первый

if (running) {
idPokaz=setTimeout("Pokaz_Foto()",1000);
}

}



 ! 
sergeiss
я тут форматирование добавил - просьба пользоваться этой фичей, т.к. читать удобнее код.

Спустя 26 минут, 58 секунд (6.07.2009 - 07:41) glock18 написал(а):
Koval
изврат, конечно, на php это делать.

но если надо, то так: (это когда тебе отправляется число картинок, которые показывать)
1. пишешь в сессию это число и номер текущей картинки (1 в самом начале).
2. выбираешь и выводишь нужную картинку.
3. ставишь header refresh на сколько нужно секунд на этот же урл. Это заставит страницу обновляться каждый, скажем, 10 секунд. Картинка будет обновляться вместе с ней, соответственно.

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

Спустя 1 час, 5 минут, 46 секунд (6.07.2009 - 08:47) sergeiss написал(а):
Еще дополнение к тому, что было сказано.

Можно изменяемую часть сделать в iframe. А там уж как угодно: или через хедер-рефреш делать, или по ссылке менять. Как угодно. Можно даже совместить. И всё будет красиво работать smile.gif

Тогда основная часть страницы будет статичная, а часть - динамично изменяемая.

Чуть подробнее.
В том скрипте, который в и-фрейме находится, вывод картинки делаем или по таймеру (номер текущей картинки передаем через сессию), или по номеру (или имени) передаваемому через GET.
А в основном скрипте делаем обработчик нажатия, например на кнопке. Кнопку можно сделать для перехода на первую картинку в перечне. При нажатии изменяем (через JS), например, кукис, и при следующем обращении вложенного через и-фрейм скрипта тот видит, что что-то изменилось, и использует это изменение.
Если откинуть предыдущий абзац smile.gif, то тогда останется ПХП в чистом виде.

PS. Примерчик.
Основной скрипт:
Код
<?php echo 'Время запуска:'.date( Y-m-d, H:i:s' ).'<br>'; ?>
<iframe src="t.php" ></iframe>


Скрипт t.php:
PHP
header('Refresh: 1');
echo 'Текущее время'.date( 'Y-m-d, H:i:s' );

Спустя 39 минут, 26 секунд (6.07.2009 - 09:26) Koval написал(а):
glock18
На счет изврата согласен blink.gif !!!

glock18 и sergeiss

Спасибо за помощь biggrin.gif , сегодня после работы буду пробовать

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.