2012-03-20 136 views
-1

我正在嘗試編寫一個簡單的(用於某些)腳本,該腳本將獲取上傳的文件夾中的圖像,然後用適當的位置填充我的html文檔中的文件名。 我已成功實現文件名的上傳和寫入數據庫(不確定是否需要該部分)。 想了解如何最好地實現這一點,一定要清楚一些。到目前爲止,我已經嘗試了幾件事,但沒有成功。從php文件夾中獲取圖像列表並填充圖像src標籤

<?php 
$hote = 'localhost'; 
$base = '*****'; 
$user = '*****'; 
$pass = 'testuser2012'; 
$cnx = mysql_connect ($hote, $user, $pass) or die(mysql_error()); 
$ret = mysql_select_db ($base) or die (mysql_error()); 
$image_id = mysql_real_escape_string($_GET['ID']); 
$sql = "SELECT image FROM image_upload WHERE ID ='$image_id'"; 
$result = mysql_query($sql); 
$image = mysql_result($result, 0); 

header('Content-Type: text/html'); 
echo '<img src="' . $image . '"/>'; 
exit; 
?> 

但是,也許我應該解釋完整的功能:我需要用戶thier圖像上傳到thier文件夾,然後在PHP圖片庫被調用時,與該文件夾的圖片表示填充它。 我不知道如果我正確地做了,應該從文件夾中讀取文件列表嗎?或者把名字寫到一個數據庫中,然後把它們從那裏拉出來......這就是我的問題所在 上面的代碼就是我試圖使用的代碼,雖然它會返回文件名,但它不會在標籤中回顯它。 ..not知道在那裏我的無能在於:)

的HTML我試圖填充如下:

<div class="slide"> 
       <div class="image-holder"> 
        <img src="img/asoft_table.jpg" alt="" /> 
       </div> 
       <div class="info"> 

        <p>Morbi a tellus lorem, id scelerisque ligula. Maecenas vitae turpis et.</p> 
       </div> 
      </div> 
      <div class="slide"> 
       <div class="image-holder"> 
        <img src="img/soft_table.jpg" alt="" /> 
       </div> 
       <div class="info"> 

        <p>Sed semper, lorem ac lobortis bibendum, magna neque varius augue, vel accumsan.</p> 
       </div> 
      </div> 
      <div class="slide"> 
       <div class="image-holder"> 
        <img src="img/living_room2.jpg" alt="" /> 
       </div> 
+0

然後張貼你做;-) – 2012-03-20 16:53:21

+0

你有文件名的幾件事情,只不過是迴應他們出到標籤的相應部分。你的問題是什麼?你目前有什麼代碼? – Brad 2012-03-20 16:53:46

+0

如何關於與'$圖像= mysql_result($結果,0, '圖像');'? – ianbarker 2012-03-20 17:30:31

回答

1

如果你只希望通過一個目錄,你的圖像路徑將是靜態的。如果將圖像名稱存儲在數據庫中,則只需簡單地執行一個小型查詢即可輸出文件名並附加靜態路徑。

$result = mysql_query("SELECT * FROM Images"); 

while($row = mysql_fetch_array($result)) { 
    echo "<img src='/path/to/images/".$row['image_name']."'/>"; 
} 

要打破這裏究竟發生了什麼 - 本質上MySQL查詢存儲在$result。然後我創建一個循環遍歷從MySQL查詢返回的數組的循環。這陣會是這個樣子:

0 => 'id' => 1, 
     'file_name' => 'foo.jpg', 
     'file_size' => '36.6 kb', 
     'time_stamp' => '14/01/02', 
    1 => 'id => 2, 
     'file_name' => 'bar.jpg', 
     'file_size' => '12.8 kb', 
     'time_stamp' => '14/01/03' 

對於每一個指標,while將輸出其嵌套數組。在這種情況下,它將是數據庫行。然後,我想爲每個數據庫行輸出一個圖像標籤,然後將圖像的名稱附加到標籤上。

在你的HTML中,你已經爲每個圖像創建了一個元素塊。所以在一個靜態頁面上,如果你有100個圖像,你將不得不重複這段HTML 100的不同時間。有了編程,你不必這樣做。在我的例子中,MySQL將返回一個大的array,其中包含您的每個圖像及其行。因此,如果您的桌子上有100張圖片,您的array將有100個項目,因此您的while循環將貫穿並打印出100次。跟隨?

所以使用HTML,您的代碼將如下所示:

<? while($row = mysql_fetch_array($result)) ?> 

<div class="slide"> 
    <div class="image-holder"> 
    <? echo "<img src='img/".$row['image_name']."' alt='' />"; ?> 
    </div> 
    <div class="info"> 
    <p> 
     <? echo $row['image_description']; ?> 
    </p> 
    </div> 
</div> 

<? endwhile; ?> 

所以你可以看到你創建HTML的一個街區,和PHP會通過迴路,並根據返回的變量填充爲你。

如果您想按日期/大小對它們進行排序,則可以在上載時確定這些變量,並將它們附加到數據庫中的某一列。在表中添加時間戳和索引對於從數據庫輸出中進行排序將有很大幫助。我會組織我的表像這樣:

+----+-----------+-----------+------------+ 
| id | file_name | file_size | time_stamp | 
+----+-----------+-----------+------------+ 
| 1 | foo.jpg | 36.6 kb | 14/01/02 | 
+----+-----------+-----------+------------+ 

雖然存儲在數據庫中的文件信息,而不是穿越/通過你的目錄解析可能是你最好的選擇,你還可以檢查出此頁,瞭解目錄信息方法和序列here

編輯:您還可以查看Tizag,其中有全面的教程和學習PHP的人員的資源。

編輯:要回答你關於如何把信息放在正確的位置的問題:這是一個非常廣泛的問題與各種各樣的答案。總之 - 這取決於你想要如何訂購他們以及你想要他們去的地方。您可以使用MySQL queries以特定方式對輸出的數據進行排序。您還可以使用inclusion方法分解並在您的網站上排列數據。

+0

應該將代碼包含在每個圖像src標記的位置嗎? – Jjames 2012-03-20 17:12:54

+0

查看我的更新,解釋'while'循環。您不會爲5個不同的圖像標籤生成變量,並手動添加變量。您將根據數據庫中的條目動態生成內容。 – 2012-03-20 17:31:22

+0

@Jjames - 而且,如果我或其他任何問題,幫助你 - 請接受通過點擊複選框答案。請記住,如果您需要幫助,您可以簡單地在答案的評論中請求闡述。 – 2012-03-20 17:54:45