1

したがって、ドロップダウンオプションの値としてデータベースから「タグ」を取得するフォームに、このドロップダウンリストがあります。

<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>

私の問題は何ですか?私の問題は、データベースに多くの製品を追加していて、コードが同じタグを持っていても、このすべての製品のタグを含むドロップダウン リストを作成していることです。したがって、ドロップダウンに同じタグが2回表示されるのを防ぐ方法が必要です。

私はPHPにかなり慣れていないので、これがここでの最初の質問なので、問題をうまく説明できることを本当に願っています.

前もって感謝します!

4

2 に答える 2

0

の目的はWHERE ID > '0'何ですか? IDが自動インクリメントの場合、常に正になります。そうでない場合は、そうする必要があります。

なぜmysql_fetch_array連想キーを使用してからのみ使用するのですか? mysql_fetch_assoc代わりに使用する必要があります。

echo変数を出力するたびに new を使用するのはなぜですか? 連結するだけ。

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>
于 2013-02-10T23:37:48.497 に答える
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>

また、最初のタグが最も多い上位のタグも表示されます。

于 2013-02-10T23:44:33.510 に答える