2012-05-27 4 views
1

На моем сайте есть изображение в определенном месте, и когда пользователь перезагружает страницу, он должен увидеть другое изображение на том же месте. У меня есть 30 изображений, и я хочу изменить их случайным образом при каждой перезагрузке. Как мне это сделать?Как показать произвольное изображение на веб-странице?

+2

как вы храните путь к изображению? базы данных или из файловой системы? –

+2

, на каком языке у вас есть эти изображения; в массиве js/php, получить из базы данных? также, [что вы пробовали] (http://www.whathaveyoutried.com) –

+0

не из db. я просто вставляю картинки вручную на страницу, но когда пользователь посещает мой сайт, он видит только одну картинку вместо всех фотографий. –

ответ

2

Фактический акт выбора случайного изображения потребует случайного числа. Есть несколько способов, которые могут помочь в этом:

Вы можете придумать вторую функцию как ярлык для использования первого, если вы конкретно имеете дело с массивом. Так, например, если у вас есть массив изображения путей, из которых выбрать тот, который вы хотите отобразить, вы можете выбрать случайный один такой:

$randomImagePath = $imagePaths[array_rand($imagePaths)]; 

Если вы храните/извлечения изображений в каким-либо другим способом, который вы не указали, тогда вы не сможете использовать array_rand() так же легко. Но, в конечном счете, вам нужно создать случайное число. Поэтому для этого можно было бы использовать rand().

+0

array_rand() просто возвращает ключ/индекс, а не сам элемент. Исправьте меня, если я ошибаюсь, но я думаю, что ответ oyur не работает – Sliq

+0

@Panique: Я думаю, вы можете быть правы. Ответ обновлен. Благодаря! – David

+0

it worksss thankyou so much .... но как я могу дать другой путь изображения ??? Я даю вот так: $ images = glob ("images/fb.png", GLOB_BRACE); \t $ images = glob ("images/ld.png", GLOB_BRACE); –

5

Сделать массив с «информацию о фото» (имя файла или путь) у вас есть, как

$pictures = array("pony.jpg", "cat.png", "dog.gif"); 

и случайно называют элемент этого массива с помощью

echo '<img src="'.$pictures[array_rand($pictures)].'" />'; 

Выглядит странно, но работает ,

+0

где я должен сделать массив? в db? –

+1

Прежде, чем вы, ребята, спросите:;) => array_rand() возвращает код INDEX KEY массива, а не сам элемент! см. http://php.net/manual/en/function.array-rand.php – Sliq

+0

@UmairJaved: Если данные хранятся в базе данных, вы должны извлекать их из базы данных в массив PHP. Затем вы можете просто случайно выбрать из этого массива, как в этом ответе. Мы не знаем, где/как хранятся ваши данные, так что это зависит от вас. – David

1

Если хранить информацию в базе данных, вы можете также выбрать случайное изображение:

MySQL:

SELECT column FROM table 
ORDER BY RAND() 
LIMIT 1 

PgSQL:

SELECT column FROM table 
ORDER BY RANDOM() 
LIMIT 1 

Бест, Philipp

+0

Большое спасибо. Это работает !!!:) –

0

Простым способом создания случайных изображений во всплывающем меню является этот метод ниже.

(Примечание: Вы должны переименовать изображения в «1.png», «2.png» и т.д.)

<?php 
//This generates a random number between 1 & 30 (30 is the 
//amount of images you have) 
$random = rand(1,30); 

//Generate image tag (feel free to change src path) 
$image = <<<HERE 
<img src="{$random}.png" alt="{$random}" /> 
HERE; 
?> 

* Content Here * 

<!-- Print image tag --> 
<?php print $image; ?> 

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

Надеюсь, это поможет! ;)

+0

это показывает мне 29 на моем сайте .. :(нет изображения .. –

+0

не могли бы вы уточнить свой код ??? –

+0

Этот кусок кода должен работать. Убедитесь, что вы ** переименовали ** изображения типа "1 .png "," 2.png "," 3.png "и т. д. – zeldarulez

0

Я недавно написал это, которое загружает другой фон на каждую страницу. Просто замените константу на путь к вашим изображениям.

Что он делает, это цикл через ваш imagedirectory и случайным образом выбирает файл из него. Таким образом, вам не нужно отслеживать свои изображения в массиве или db или что-то еще. Просто загрузите изображения в свой imagedirectory, и они будут выбраны (случайно).

вызова, как:

$oImg = new Backgrounds ; 
echo $oImg -> successBg() ; 


<?php 

class Backgrounds 
{ 

    public function __construct() 
    { 
    } 

    public function succesBg() 
    { 
    $aImages = $this->_imageArrays(\constants\IMAGESTRUE, "images/true/") ; 
    if(count($aImages)>1) 
    { 
     $iImage = (int) array_rand($aImages, 1) ; 
     return $aImages[$iImage] ; 
    } 
    else 
    { 
     throw new Exception("Image array " . $aImages . " is empty"); 
    } 
    } 


    private function _imageArrays($sDir='', $sImgpath='') 
    { 
    if ($handle = @opendir($sDir)) 
    { 
     $aReturn = (array) array() ; 
     while (false !== ($entry = readdir($handle))) 
     { 
     if(file_exists($sDir . $entry) && $entry!="." && $entry !="..") 
     { 
      $aReturn[] = $sImgpath . $entry ; 
     } 
     } 
     return $aReturn ; 
    } 
    else 
    { 
     throw new Exception("Could not open directory" . $sDir . "'"); 
    } 
    } 

} 

?>