2009-08-21 141 views
0

有人問我創建了一個PHP圖片庫,它將從目錄中讀取圖像,然後爲圖庫創建縮略圖。有一個帶縮略圖的目錄,以及一個帶有全尺寸圖像的目錄。PHP圖片庫陣列

我從/ thumb /目錄中讀取文件名,並將每個文件名作爲值插入到thumbArray中。從那裏我回顯縮略圖src(<img src="<?php echo $thumbArray[$i]; ?>" />)中的值,其中$ i只是一個計數器。因此,縮略圖圖像是從數組中產生的,但是當您單擊縮略圖時,它會將?filename查詢到url中。使用$ _SERVER ['QUERY_STRING']我然後讀取所述查詢字符串並將查詢(文件名)插入大<img src"<?php echo $_SERVER['QUERY_STRING']; ?>" />。這是有限的,但。因爲我現在不能讀取數組,作爲參考點,並且不能再指向數組中的前向或後向。

我現在更有意義了嗎?

請幫助...

<?php 
    $i = 0; 

    /* Large file name and thumbnail file name must match */ 
    /* Large image size = 480px x 300px */ 
    echo '<img class="frameImg" src="images/large/'.$_SERVER['QUERY_STRING'].'" />'; 

    ?> 
    <p id="prevNext"><a href="#">&lt;&lt; Prev </a> || <a href="#"> Next &gt;&gt;</a></p> 
    </div> 
    <div id="thumbs"> 
    <ul> 
    <?php 
    /* Must change $dir to the full path of directory all the way from root /home/user/domain/images/thumb */ 
    $dir = "*************************"; 
    $dh = opendir($dir); 

    /* Thumbnail file name and large file name must match */ 
    $thumbArray = array(); 
    while (($file = readdir($dh)) !== false) { 
     if ($file != "." && $file != "..") { 
      $thumbArray[$i]=$file; 
      echo '<li id="'.$i.'"><a href="?'.$thumbArray[$i].'"><img src="images/thumb/'.$thumbArray[$i].'" alt="Alt for '.$thumbArray[$i].'" /></a></li>'; 
      $i++; 
     } 
    } 
    closedir($dh); 
    ?> 

回答

1

如果我理解正確的話,你只需要從$ thumbArray [$ i]數組中選擇下一個和prev值。

例如。

$prevThumb = $thumbArray[($i-1)]; 
$nextThumb = $thumbArray[($i+1)]; 

當然對於第一個和最後一個你必須格外小心。 (和檢查該元素的存在)


編輯: 確定我明白了。

重新排列你的代碼。你必須在每一頁上閱讀你的目錄。那麼爲什麼不把它在你的代碼頂部讀到一個數組中,並循環這個數組來構建縮略圖列表。

對於prev/next按鈕,您現在可以使用已經構建的數組中的索引查找prev/next圖像的文件名。

我讓自己明白嗎?

+0

謝謝。我想我不清楚。下一個和上一個按鈕應該是大圖像。現在,大文件並沒有從數組中讀取,它只是從url中讀取數據,所以我無法做到你所說的。 基本上我遇到的麻煩是從數組中讀取大圖像... – 2009-08-21 22:38:41