2015-09-09 242 views
0

我有一個mysql數據庫,其中包含多個圖像(路徑)在單獨的列下,即id,image1,image2,image3等。從MySQL DB獲取圖像路徑

我使用下面的代碼來檢索基於URL中的ID圖像,並顯示在PHP頁面上的滑塊。

$query = "SELECT * FROM `images` WHERE ` id`='" . $id . "'"; 
$result = mysql_query($query); 
while($fetch = mysql_fetch_assoc($result)){ 
$image1 = $fetch['image1']; 
$image2 = $fetch['image2']; 
$image3 = $fetch['image3']; 
$image4 = $fetch['image4']; 
$image5 = $fetch['image5']; 
$image6 = $fetch['image6']; 
$image7 = $fetch['image7']; 
$image8 = $fetch['image8']; 
$image9 = $fetch['image9']; 
$image10 = $fetch['image10']; 
} 

並顯示圖像:

echo '<a data-Img='.$image1.' href='.$image1.'>';echo '<img class="Tmb" alt="" src='.$image1.'></a>'; 
echo '<a data-Img='.$image2.' href='.$image2.'>';echo '<img class="Tmb" alt="" src='.$image2.'></a>'; 
echo '<a data-Img='.$image3.' href='.$image3.'>';echo '<img class="Tmb" alt="" src='.$image3.'></a>'; 
echo '<a data-Img='.$image4.' href='.$image4.'>';echo '<img class="Tmb" alt="" src='.$image4.'></a>'; 
echo '<a data-Img='.$image5.' href='.$image5.'>';echo '<img class="Tmb" alt="" src='.$image5.'></a>'; 
echo '<a data-Img='.$image6.' href='.$image6.'>';echo '<img class="Tmb" alt="" src='.$image6.'></a>'; 
echo '<a data-Img='.$image7.' href='.$image7.'>';echo '<img class="Tmb" alt="" src='.$image7.'></a>'; 
echo '<a data-Img='.$image8.' href='.$image8.'>';echo '<img class="Tmb" alt="" src='.$image8.'></a>'; 
echo '<a data-Img='.$image9.' href='.$image9.'>';echo '<img class="Tmb" alt="" src='.$image9.'></a>'; 
echo '<a data-Img='.$image10.' href='.$image10.'>';echo '<img class="Tmb" alt="" src='.$image10.'></a>'; 

該工程確定,但不是在數據庫中的所有項目有10個圖像,以便與唯一項目,例如5張,空白圖像佔位符顯示?這可以防止或將需要一種不同的方法來存儲圖像?

+0

什麼會預期的結果是?沒有輸出的圖像丟失?你需要將它們保存在某種網格中嗎? – DeDee

+0

應該沒有輸出丟失的圖像 –

+0

顯示您的表格圖像值。 –

回答

-1

你的db結構部分錯誤。如果有,他們與相同ID不止一個圖像,你應該在不同的表存儲它們像

images_table

img_id | img_path 
100 | path1 
100 | path2 
101 | path3 
102 | path3 

所以,你將有機會增加11或20的圖像你相同的ID 。如果你有100張相同ID的圖片,你會爲他們創建+90列嗎?

-1

正如有人告訴你的,只要有一個可變數量的記錄列,最好將表分成兩部分,通過字段(外鍵)將它們關聯起來。

+--------+  +---------+ 
| Table1 |  | Table2 | 
+--------+  +---------+ 
| row |<-----| idRow | 
+--------+  +---------+ 
       | image | 
       +---------+ 

SELECT t1.row, t2.image FROM table1 t1 
         JOIN table2 t2 ON t1.row = t2.idRow 

此SQL查詢應該返回類似

+-------+----------+ 
| row1 | image1 | 
+-------+----------+ 
| row1 | image2 | 
+-------+----------+ 
| row1 | image3 | 
+-------+----------+ 
| row1 | image4 | 
+-------+----------+ 
| row1 | image5 | 
+-------+----------+ 
| row2 | image1 | 
+-------+----------+ 
| row2 | image2 | 
+-------+----------+ 
| row2 | image3 | 
+-------+----------+ 
| row3 | image1 | 
+-------+----------+ 
-1

您的系統顯示影像單獨列每個圖像是無效的。

根本沒有效果。

----- ----- ---------- 
    | ID | Name | Path  | 
    ----- ----- ---------- 
    | 1 | Home | 1.jpg | 
    | 2 | Logo | 2.jpg | 
    | 3 | .... | 3.jpg | 
    ---- ------ ---------- 

它更快,更高效,更實用。

我不明白你的問題,你有具體的解釋嗎?

1

根據您的數據庫設計,您可以將圖像的名稱存儲在數組中而不是十個不同的變量。因此,如果表格行中只有五個圖像,則數組將只填充五個圖像名稱。在顯示時,您可以使用「foreach」循環來提取圖像名稱。

示例代碼: 在陣列存儲圖像

$query = "SELECT * FROM `images` WHERE ` id`='" . $id . "'"; 
$result = mysql_query($query); 
while($fetch = mysql_fetch_array($result)){ 
$image[1] = $fetch['image1']; 
$image[2] = $fetch['image2']; 
$image[3] = $fetch['image3']; 
$image[4] = $fetch['image4']; 
$image[5] = $fetch['image5']; 
$image[6] = $fetch['image6']; 
$image[7] = $fetch['image7']; 
$image[8] = $fetch['image8']; 
$image[9] = $fetch['image9']; 
$image[10] = $fetch['image10']; 
} 

顯示圖像

foreach($image as $pic) { 
echo '<a data-Img='.$pic.' href='.$pic.'>';echo '<img class="Tmb" alt="" src='.$pic.'></a>'; 
} 

希望這將有助於...

+0

謝謝,如果我將數據庫設計更改爲兩列ID&Path,我仍然可以使用此代碼檢索並存儲並顯示圖像嗎? DB中的圖像路徑根據行的ID命名,即200-1.jpg,200-2.jpg,200-3.jpg –

+0

是的,你可以使用數組格式。在這種情況下嘗試這樣的代碼。while($ fetch = mysql_fetch_array($ result)){ $ image_array [] = $ fetch ['image']; } –

+0

謝謝,但這不顯示任何圖像?數據庫中有5個圖像在「圖像」列下。所有的都被分配爲200的ID,該ID是該頁面的URL中的ID。我已經在原始答案中使用了第二段代碼以及$ image_array [] = $ fetch ['image'];上面的查詢,但沒有顯示? –