2014-07-14 63 views
0
沒有這樣的文件或目錄

我的圖片生成器包括隨機圖像生成-警告:和getimagesize(圖像/):未能打開流:在

  1. 提取形式從一個數據庫中使用的圖像表格圖像名稱的數組select語句
  2. 一個隨機數發生器,
  3. 和一個爲選定文件構建正確路徑名的字符串。

要選擇一個圖像進行顯示,我生成一個介於1和 數組長度之間的隨機數。

雖然發電機工作時,我注意到了隨機數之一是拋出了這個錯誤:

警告:和getimagesize(圖片/):未能打開流:在

沒有這樣的文件或目錄

陣列的檢查揭示了2個數組元素(表示我的圖片的數目),但一個數組元素爲空(在橫幅表中的第一條目

圖像生成SCRIPT

require_once('connection.inc.php'); 
    $sql = 'SELECT `filename` FROM banner'; 
    $result = $mysqli->query($sql, MYSQLI_STORE_RESULT) or die(mysqli_error()); 
    $row = $result->fetch_array(MYSQLI_ASSOC);//an array of image names 
    $count = $result->num_rows; 
    for ($i = 1; $i <= $count; ++$i) 
    { 
     $row[$i] = $result->fetch_array(MYSQLI_ASSOC); 
    } 
    $i = rand(1, $count); //a random number generator, 
     //The random number is used in the final line to build the correct pathname for the selected file. 
     $selectedImage = "images/{$row[$i]['filename']}"; 
     if (file_exists($selectedImage) && is_readable($selectedImage)) 
     { 
     $imageSize = getimagesize($selectedImage); 
     } 

的var_dump($行)

array (size=1) 
    'filename' => string 'ginsomin2.jpg' (length=13) 
    null 

RANDON圖像顯示

<div id="banner" class="wrapper clearfix"> 
     <img src="<?php echo $selectedImage; ?>" alt="banner"> 
    </div> 

如何我可以從這裏着手任何想法?

謝謝。

回答

0

我用ORDER BY RAND()來選擇一個隨機文件名。結合LIMIT對於從一組行中選擇隨機樣本非常有用。 list()函數用於從映像表中的結果行集合中爲變量($ bannerImage)分配一個隨機值(圖像文件名)。

$sql = 'SELECT `filename` FROM banner ORDER BY RAND() LIMIT 1'; 

    $result = $mysqli->query($sql) or die(mysqli_error()); 
    $ok =$result->fetch_row(); 
    list($chosenFilename) = $ok; 

    $bannerImage = "images/$chosenFilename"; 
    if (file_exists($selectedImage) && is_readable($selectedImage)) 
    { 
     $imageSize = getimagesize($selectedImage); 
    } 

的$ bannerImage使用從而

<div id="banner"> 
     <img src="<?php echo $bannerImage ; ?>" alt="banner"> 
    </div> 

輸出所期望的結果。