Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод случайной картинки из заданого списка 
V
    Опции темы
Ockonal
Дата 5.9.2008, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

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



Даж не знаю, стоит ли ворошить мой код smile Но раз уж вы взялись:
Название картинок должно быть только таким: 1.jpg, 2.jpg ... 10.jpg ... 100.jpg
И, как я понял, массив нужно объявить массивом, что-то типа такого:
$temp[$num_of_show-1] = Array();
HackMan
Поправьте меня, если что.

--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
NaglfarNight
Дата 5.9.2008, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 10.12.2007
Где: Россия, г. Нижний Новгород

Репутация: нет
Всего: 3



Как не стоит? Работает же, только не совсем так как нужно, значит стоит.
Так...
Данную строчку вставила, но всё равно, как заколдованый выводит по 4 картинки  smile 
Хотя в коде ясно написано 
Код

  $num_of_show = 3;        // Сколько выводить

 
PM MAIL WWW ICQ   Вверх
Ockonal
Дата 5.9.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

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



Цитата

Как не стоит? Работает же, только не совсем так как нужно, значит стоит.

Ок-ок smile Сейчас я у себя протестю.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
Ockonal
Дата 5.9.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

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



У меня все работает. Вот код:
Код

$path_to_img = "images/";    // Дирректория с картинками
$num_of_show = 5;        // Сколько выводить
$imgs = 10;                    // Сколько картинок всего
$temp[$num_of_show-1];    // Хранилище для картинок, которые будем выводить

for( $i=1;$i<=$num_of_show; $i++ ) {
    $rand = rand( 1, $num_of_show );
    $temp[$i] = $path_to_img.$rand.".jpg";
};

for( $i=1;$i<=$num_of_show; $i++ ) {
    echo "<img src=".$temp[$i]." /> <br />";
};





Это сообщение отредактировал(а) Ockonal - 5.9.2008, 18:13
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
NaglfarNight
Дата 5.9.2008, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 10.12.2007
Где: Россия, г. Нижний Новгород

Репутация: нет
Всего: 3



Ockonal
Вот теперь всё работает и у меня.

Вот тут
Код

for( $i=1;$i<=$num_of_show; $i++ ) {

было 
Код

for( $i=0;$i<=$num_of_show; $i++ ) {


Видимо поэтому выводило неправильное количество. 

Только вот тут: 
Код

     $rand = rand( 0,$num_show );

нужно так?
Код

    $rand = rand( 0,$imgs );



PM MAIL WWW ICQ   Вверх
Ockonal
Дата 5.9.2008, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

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



Да-да smile Вы молодец ;)
А то будет выводить только первые 3 картинки.
Извиняюсь за свои ошибки.

Добавлено @ 18:29
Цитата

Вот теперь всё работает и у меня.

Вот тут

for( $i=1;$i<=$num_of_show; $i++ ) {

было 

for( $i=0;$i<=$num_of_show; $i++ ) {

Все правильно. В первом месте будет 4 итерации, а не 3 как нужно smile Т.е. сколько бы вы ни написали, всегда будет на 1 больше.

Добавлено @ 18:30
Код

srand( (double)microtime()*1000000 );

Вставьте это перед первым for

Код

srand( (double)microtime()*1000000 );
for( $i=1;$i<=$num_of_show; $i++ ) {
    $rand = rand( 1, $imgs );
    $temp[$i] = $path_to_img.$rand.".jpg";
};

Будет лучше генерироваться случайное число.

Добавлено через 6 минут и 19 секунд
Да
Код

 $rand = rand( 0,$imgs );

Если у вас будет картинка 0.jpg, то можете использовать код выше, но если у вас все картинки начинаются с 1.jpg:
Код

 $rand = rand( 1,$imgs );


p.s. Если нужно, чтобы не было выведено одинаковых картинок - пишите.

Это сообщение отредактировал(а) Ockonal - 5.9.2008, 18:32
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
NaglfarNight
Дата 5.9.2008, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 10.12.2007
Где: Россия, г. Нижний Новгород

Репутация: нет
Всего: 3



Ockonal,
Спасибо! Наконец-то всё работает. 
По поводу одинаковых картинок, желательно чтобы не было таковых. Можете с этим помочь?
PM MAIL WWW ICQ   Вверх
HackMan
Дата 5.9.2008, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


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

Репутация: 8
Всего: 9



Ockonal,
Цитата(Ockonal @  5.9.2008,  17:26 Найти цитируемый пост)
$temp[$num_of_show-1] = Array();

Этим кодом ты второму элементу несуществующего массива $temp задаёшь тип данных "массив". Надо делать так:
Код

$temp = array()

Но, вообще, этого делать совсем не обязательно, так как если в PHP присвоишь значение элементу массива с несуществующим индексом - он просто напросто создастся и массив расширит свои рамки.
Цитата(Ockonal @  5.9.2008,  18:28 Найти цитируемый пост)
srand( (double)microtime()*1000000 );

А толку? И что вообще значит "будет лучше генерироваться"? Функция rand() вообще не генерирует случайных чисел. Генерируется одно большое псевдослучайное число которое зависит от системного время. Функция srand() изменяет начальное число генератора псевдослучайных чисел.

NaglfarNight,
Цитата(NaglfarNight @  5.9.2008,  17:02 Найти цитируемый пост)
Вставляю на страничку 
Выделить всёкод PHP
Код


 <?php   
  $images = glob('/images/avatars/*.jpg');
  shuffle($images);
  array_splice($images, 3);
  
 foreach ($images as $image)
    {
      echo '<img src="' . $image . '">';
    }
  ?>


Не работает. Может что-то неверно делаю  smile 

Конечно не работает. /images/avatars/*.jpg - это абсолютный путь. Скрипт будет искать в корне папку images, и ничего не найдёт, потому что там такой нет. Слэш в начале надо убрать


Это сообщение отредактировал(а) HackMan - 5.9.2008, 19:23


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
NaglfarNight
Дата 5.9.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 10.12.2007
Где: Россия, г. Нижний Новгород

Репутация: нет
Всего: 3



HackMan
Так пробовала, тоже не работает.
Пыталась по разному - и абсолютным, и относительным, и со слэшем, и без него.

Ockonal
А от расширения файлов тоже зависит? Все должны быть jpg, так?
Если у меня есть несколько gif, они не будут отображаться?

Это сообщение отредактировал(а) NaglfarNight - 5.9.2008, 19:35
PM MAIL WWW ICQ   Вверх
HackMan
Дата 5.9.2008, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


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

Репутация: 8
Всего: 9



Код

var_dump($images);

что выводит?


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
NaglfarNight
Дата 5.9.2008, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 10.12.2007
Где: Россия, г. Нижний Новгород

Репутация: нет
Всего: 3



HackMan
это куда нужно вставлять? smile 
если ставлю в начало кода, выдаёт: NULL
если в конец: array(0) { }
PM MAIL WWW ICQ   Вверх
HackMan
Дата 5.9.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


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

Репутация: 8
Всего: 9



1) В каком каталоге находится скрипт?
2) В каком каталоге находятся картинки?
3) Что выводит следующий код
Код

echo __FILE__;


Это сообщение отредактировал(а) HackMan - 5.9.2008, 19:44


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
NaglfarNight
Дата 5.9.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 10.12.2007
Где: Россия, г. Нижний Новгород

Репутация: нет
Всего: 3



HackMan

1. /include/sidebar/avatars.php
2. /images/avatars/
3. /home/u18822/naglfarru/www/include/sidebar/avatars.php

Это сообщение отредактировал(а) NaglfarNight - 5.9.2008, 19:54
PM MAIL WWW ICQ   Вверх
Ockonal
Дата 5.9.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Smile
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 9.7.2007
Где: Ukraine::Nikolaev ;

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



Цитата

А от расширения файлов тоже зависит? Все должны быть jpg, так?
Если у меня есть несколько gif, они не будут отображаться?

Да, в том и недостаток моего скрипта - он только для одной цели. 
HackMan
Спасибо за советы/ответы.
--------------------
Ум заключается не только в знании, но и в умении прилагать знание на деле.Самое лучшее из всех доказательств есть опыт.Каждому человеку свойственно ошибаться, но никому, кроме глупца, несвойственно упорствовать в ошибке.
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
HackMan
Дата 5.9.2008, 20:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Юзверь-программист
**


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

Репутация: 8
Всего: 9



Ockonal
всегда пожалуйста  smile 


NaglfarNight
Код

$images = glob('../../images/avatars/*.jpg');

или
Код

$images = glob('/home/u18822/naglfarru/www/images/avatars/*.jpg');


Советую ознакомиться со статьёй "Различие между абсолютными и относительными путями. В файловой системе и на сайте"

Если картинки с несколькими расширениям, тогда комбинировать надо так:
Код

  $images = glob('../images/*.{jpg,gif}', GLOB_BRACE);


Да и вообще это всё можно красиво записать в две (ато и в одну  smile ) строчки следующим образом:
Код

  foreach (array_splice(shuffle(glob('../../images/*.{jpg,gif}', GLOB_BRACE)), 3) as $image)
    echo '<img src="' . $image . '">';

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


Это сообщение отредактировал(а) HackMan - 5.9.2008, 21:07


--------------------

Завтра - это самый загруженный день недели smile

user posted image

user posted image
PM MAIL ICQ   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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