2014-01-25 24 views
0

我只是註冊到堆棧溢出,我找了這樣一篇文章,但我發現是一組不同的帖子,但我不夠聰明(還!)以把它們放在一起回答我的問題。獲取一組圖像連接表中的while循環

我喜歡學習編程,在完成我的在線課程或書籍後,讓我們說「真實」的例子。


What I would like to achieve

正如你可以在我的鏈接看到的是我想達到的目標。最初,我將所有數據都放在一張表中,但是我一直在閱讀這個網站,這並不是將逗號分隔的圖像路徑存儲在一個字段中的最佳做法。所以現在我有:

  • 1表與所有信息。
  • 1張桌子(到目前爲止)爲我的第一個廣告的圖片集合。

所以,我的問題是,我不知道我到底要如何加入表格並使用while循環來獲取每個廣告所需的儘可能多的圖片,以便稍後使用Lightbox燈箱中的這些照片...

到目前爲止,我只能爲每個廣告投放1張照片! :S

我的第一張桌子是這樣構造的

| ID | HOUSE-TYPE | CITY | TITLE |描述| PICS | SQRMETER | PRICE |電話| EMAIL

我的第二個表的結構是這樣的:

| ID | PATH | TITLE | ALT |

到目前爲止我的代碼:

$result = mysqli_query($con,"SELECT * FROM t_test"); 

while($row = mysqli_fetch_array($result)) 
    { 
    echo "<div class='ad'>" . 
      "<h2>" . "OFFER " . $row[offer] . $row[house-type] . " in " . $row[city] . 
      "</h2>" . 
      "<h1>" . $row[title] . "</h1>" . 
      "<p>" . $row[description] . "</p>" . 
      "<img src='" . $row[photo] . "'/>" . 
      "<p class='pics-per-ad'>" . "TOTAL PICS" . "</p>" . 
      "<p class='square-meters'>" . $row[sqmeter] . " metros 2" . "</p>" . 
      "<p class='price'>" . $row[price] . " Euros" . "</p>" . 
      "<p class='telephone'>" . $row[telphone] . "</p>" . 
      "<p class='email'>" . $row[email] . "</p>" .         
     "</div>"; 

    } 

mysqli_close($con); 

感謝您的時間傢伙!

+0

哪些列是你想加入嗎? – pregmatch

回答

0

有許多解決方案你正在努力達到什麼。我建議保持這一點很簡單,就是在你的圖片表中有另一個名爲鏈接的列,這會將你的圖片鏈接到你的廣告。

請嘗試並按照以下步驟操作。

  1. 你叫PIC表創建一個列「鏈接」

    ALTER TABLE ads ADD linked VARCHAR(255) 
    
  2. 創建你的照片桌子和廣告的表之間的外鍵關係。 (例如,如果您的廣告被刪除或更新,它也會從圖片表中刪除您的圖片)

  3. 在您的代碼中,通過執行類似操作來加入您的表格。

    $query = ' 
    SELECT ads.*, pics.* FROM ads 
    LEFT JOIN pics ON pics.linked = ads.id 
    '; 
    
    $result = mysqli_query($con,$query); 
    
+0

你好!關於第2步: 我是否必須使用我的圖片列中的「已鏈接」列與廣告表中的「ID」列創建關係? –

+0

是的,這是正確的。設置外鍵不是強制性的。 –

0

每個廣告都可以有多個圖片,因此您需要在數據庫中設置「一對多」關係。你通過使用外鍵來做到這一點。

  • 在廣告表格,每個廣告都有已經是一個唯一的ID
  • 在PICS表,除了每一個有自己獨特的ID,也應該是ads_ID的附加字段,它屬於。
  • 當你去到顯示廣告ID X,那麼你查詢數據庫得到所有圖片與ads_ID X:

「SELECT * FROM圖片WHERE ads_ID = X」