2013-02-10 59 views
1

所以我有這個下拉列表在我的形式拉「標籤」,從數據庫中值下拉選項:如何防止在PHP呼應相同值的兩倍

<select name="cartags"> 
    <?php $result = mysql_query("SELECT * FROM Products WHERE ID > '0'"); 
    while($row = mysql_fetch_array($result)) 
    { 
     echo "<option value=\""; echo $row['Tag']; echo "\""; echo ">"; echo $row['Tag']; echo "</option>"; 
    } 
    ?> 
</select> 

什麼是我的問題嗎?我的問題是,我將大量產品添加到我的數據庫中,即使它們具有相同的標籤,我的代碼也會爲所有此產品使用標籤下拉列表。所以我需要的是解決方案如何防止相同的標籤在我的下拉菜單中出現兩次。

我對PHP很新,這是我的第一個問題,所以我真的希望我能很好地解釋我的問題。

在此先感謝!

回答

0

WHERE ID > '0'的用途是什麼?如果ID是自動增量,那麼它總是正數。如果不是,應該是。

爲什麼你使用mysql_fetch_array然後只使用關聯密鑰?您應該使用mysql_fetch_assoc

爲什麼每次要輸出變量時都使用新的echo?只是連接。

爲什麼在value中設置相同的字符串作爲選項的文本?沒有任何價值,它無論如何都默認爲文本。

爲什麼不在列名和表名中使用反引號?

試試這個:

<select name="cartags"> 
<?php 
    $result = mysql_query("SELECT DISTINCT `Tag` FROM `Products`"); 
    while(list($tag) = mysql_fetch_row($result)) { 
     echo "<option>".$tag."</option>"; 
    } 
?> 
</select> 
+0

在我看來,反引號是醜陋的,因爲當你使用保留的關鍵字時你只需要它們。 – 2013-02-10 23:42:21

+0

所以你對這樣的事情感到滿意嗎? 'SELECT id,name,'timestamp' FROM'table''' – 2013-02-10 23:45:25

+0

非常感謝您回答我的問題+指出我的錯誤。那麼,我是PHP的noob和一些我錯誤的方式學習的東西,這是所有你的答案「爲什麼你......」的問題。 再次感謝您在我的帳戶(B)上喝一杯虛擬啤酒。 – 2013-02-10 23:50:35

0

試試這個

<select name="cartags"> 
<?php $result = mysql_query("SELECT Tag, COUNT(Tag) tg Products WHERE ID > '0' GROUP BY Tag HAVING COUNT(Tag)>0 ORDER BY tg DESC"); 
while($row = mysql_fetch_array($result)) 
{ 
    echo "<option value=\""; echo $row['tg']; echo "\""; echo ">"; echo $row['tg']; echo " </option>"; 
} 
?> 
</select> 

它也將顯示在該最先頂部標籤。

+0

謝謝,我也會對此進行測試。可能這會幫助我進一步處理這個問題。乾杯! – 2013-02-11 00:02:11

相關問題