2017-01-11 36 views
0

我有一個圖像數據庫,其中的鏈接與每個圖像相關。我現在按月過濾它們。所以上個月,我有7個圖像的鏈接。此代碼將隨機選擇其中一個圖像及其鏈接進行顯示。當我在這個月只有一張圖片時,我遇到了問題。當有多個圖像時,它按照我喜歡的方式工作。但由於某種原因,當我只有一個圖像時,圖像不會顯示出來。如果只有一個圖像,我希望能夠每次顯示一個圖像,或者如果有多個圖像,每次都會顯示一個隨機圖像。腳本使用多個項目但不是一個

require_once $_SERVER['DOCUMENT_ROOT'] . '/SQL.php'; 
    use myDatabase\SQL; 

    $group = variable_get('govdocs_images_group'); 

    // get ids of images in this group 
    $images = SQL::select('SELECT `id`, `link` FROM `govdocs_images` WHERE `group` = FROM_UNIXTIME(' . $group . ')'); 

// pick a random number between 0 and $image_count - 1 for seeking. 
$rand = rand(0, count($images) - 1); 

// print link and image html. 
echo '<a href="' . $images[$rand]['link'] . '">'; 
echo '<img src="/myFilePath/img.php?id=' . $images[$rand]['id'] . '"/>'; 
echo '</a>'; 
+0

爲什麼不使用'array_rand()'函數? – Barmar

+0

當只有一個圖像時,'$ rand'應該始終爲'0'。你取而代之的是什麼? – Barmar

回答

0

改爲嘗試此方法。

require_once $_SERVER['DOCUMENT_ROOT'] . '/SQL.php'; 
use myDatabase\SQL; 
$rand = 0; 
$group = variable_get('govdocs_images_group'); 
// get ids of images in this group 
$images = SQL::select('SELECT `id`, `link` FROM `govdocs_images` WHERE `group` = FROM_UNIXTIME(' . $group . ')'); 
// pick a random number between 0 and $image_count - 1 for seeking. 
if(count($images) > 1) { 
    $rand = rand(0, count($images)-1); 
} 
// print link and image. 
    echo '<a href="' . $images[$rand]['link'] . '">'; 
    echo '<img src="/myFilePath/img.php?id=' . $images[$rand]['id'] . '"/>'; 
    echo '</a>'; 
+0

當我有多個圖像時,會打印每張圖像。我想隨機選擇一張圖像進行打印。由於某種原因,它也無法使用一個圖像。 – threebubblesoup

+0

@threebubblesoup我將相應地編輯 –

+0

@threebubblesoup你使用一些框架?在內部檢查方法'SQL :: select',或找到它併發布它的代碼。 –

1

我不知道爲什麼你的代碼失敗了,但是你可以通過在MySQL而不是PHP中隨機選擇來改善它。

$images = SQL::select('SELECT `id`, `link` 
         FROM `govdocs_images` 
         WHERE `group` = FROM_UNIXTIME(' . $group . ') 
         ORDER BY RAND() 
         LIMIT 1'); 
$row = $images[0]; 
// print link and image html. 
echo '<a href="' . $row['link'] . '">'; 
echo '<img src="/myFilePath/img.php?id=' . $row['id'] . '"/>'; 
echo '</a>'; 
相關問題