2015-11-22 73 views
1

我的代碼連接到我的數據庫,並按照字母順序顯示我的表中的圖像列表,例如按類別對MySQL輸出進行分組

圖像A,圖像B,圖像C等

相反,我想按字母順序顯示這些圖像以及由與每個圖像例如相關聯的類別組織

類別1 圖像A,圖像B

類別2 圖像C

我還要動態地顯示每個類別的每個組的圖像的上面的標題。

在我的表中的列:Link_ID,Link_Image,LINK_TEXT,LINK_URL,Link_Category

我找到了一個類似的問題,這在這裏:Output MySQL list of records, grouped by category?,但我不知道如何使用此給出的解決方案實例(或顯示動態標題)。

$db_host = 'XXXX'; 
$db_user = 'XXXX'; 
$db_pwd = 'XXXX'; 
$database = 'XXXX'; 
$table = 'home'; 

if (!mysql_connect($db_host, $db_user, $db_pwd)) 
    die("Can't connect to database"); 

if (!mysql_select_db($database)) 
    die("Can't select database"); 

// sending query 
$result = mysql_query("SELECT * FROM {$table} ORDER BY Link_Text ASC"); 
if (!$result) { 
    die("Query to show fields from table failed"); 
} 
?> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<meta name="robots" content="noindex"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Title</title> 
<style type="text/css"> 
.linkcontent { 
    margin: auto; 
    width: 720px; 
    height: 714px; 
} 
.linkcontent a img { 
    float: left; 
    margin: 2px; 
    border-top-style: none; 
    border-right-style: none; 
    border-bottom-style: none; 
    border-left-style: none; 
} 
.linkcontent a img:hover { 
    float: left; 
    border: 2px solid #999; 
    margin: 0px; 
} 
.linkcontent_title { 
    font-family: Arial, Helvetica, sans-serif; 
    font-size: 24px; 
    font-weight: normal; 
    color: #999; 
    text-align:left; 
    text-decoration: none; 
    padding-bottom: 5px; 
    float: left; 
    height: 24px; 
    width: 100%; 
    clear:right;} 
</style> 
</head> 
<body><div class="linkcontent"><div class="linkcontent_title">Category Title</div> 
<?php 
while($row = mysql_fetch_array($result)) 
    {?> 
<a href="<?php echo $row['Link_URL']?>" ><img src="<?php echo $row['Link_Image']?>" alt="<?php echo $row['Link_Text']?>" width="175" height="175" border="0" /></a> 
    <?php }?> 
</div> 
</body> 
</html> 
<?php 
mysql_close(); 
?> 
+0

簡單的解決方案:使用兩個查詢,一個獲取所有類別,然後(在循環中)創建,其獲取用於一個給定類別中的所有數據的第二查詢。爲每個類別重複創建第二個查詢。 – maxhb

+0

@maxhb這是一個不好的做法。這可以通過1個查詢和1個循環完成。沒有理由做2. – Sean

+0

@你會介意提供一個如何做到這一點的例子嗎? – user3220812

回答

1

首先,讓你由Link_Category訂購您的結果,然後由Link_Text改變您的查詢。

SELECT * FROM {$table} ORDER BY Link_Category ASC, Link_Text ASC 

然後,當你遍歷你的結果,把你的<div class="linkcontent_title">Category Title</div>你的循環中。要在類別更改時更改Link_Category,只需使用存儲當前類別的簡單php變量,即。 $currentCategory

<body> 
<?php 

    $currentCategory = ""; //use this to change the Category Title 

    while($row = mysql_fetch_array($result)) 
    { 
     if($row['Link_Category'] != $currentCategory) // was wrong on the first draft 
     { 
      if($currentCategory != "") //if this is not the 1st, close the last <div> 
      { ?> 
      </div> 
    <?php } // ends not 1st Category Title if{} ?> 
      <div class="linkcontent"> 
       <div class="linkcontent_title"><?php echo $row['Link_Category']?></div> 
    <?php $currentCategory = $row['Link_Category']; //Set the Current Category 
     } // ends the Category Title if{} ?> 
       <a href="<?php echo $row['Link_URL']?>" > 
        <img src="<?php echo $row['Link_Image']?>" alt="<?php echo $row['Link_Text']?>" width="175" height="175" border="0" /> 
       </a> 
    <?php }?> 
      </div> 
</body> 
+0

除了每個圖像都重複分類標題這一事實之外,這種方法非常有效。是否有可能只爲每個類別顯示一次? – user3220812

+0

對不起,我有2個錯誤。 (1)if($ row ['Link_Category']!= $ currentCategory)'(2)忘了添加'$ currentCategory($ row ['Link_Text']!= $ currentCategory)'currentCategory = $ row ['Link_Category'];'這會將當前類別重置爲當前行的類別,這將阻止它對每個圖像重複。 – Sean