1

MYSQL データベースから入力される一連のドロップダウン ボックスを作成しようとしています。

データベースに2つのテーブルがあり、

  1. ID、名前 -
    1|ホット
    2|コールド
    3|ワーム

  2. ID、テーブル #1 の ID (1、3、4) -
    1|1、3、...
    2|2、3、...
    3|1、2、...

テーブル 2 からレコードを選択し、テーブル 1 の名前を使用してドロップダウン メニューを作成する必要があります。

次のコードを使用してドロップダウン リストを作成しましたが、ドロップダウン リストが 1 つだけ表示されて停止します。

どんな助けでも大歓迎です

    <?php
    $getRss = mysql_query("SELECT * FROM optionals_groups where resid=".$_SESSION['restaid']." order by id asc");
    while ($rss = @mysql_fetch_array($getRss)) { ?>
    <select name="a_<?=$rss['id']?>" id="a_<?=$rss['id']?>" >
      <option value="1" >Select Options</option>
      <?php
        $ot=0;
        $last_ot="";
        $goptionals=explode(', ',($rss['goptionals']));  
    $getRss= mysql_query("SELECT * FROM optionals order by id asc");
        while ($rsso = mysql_fetch_array($getRss)) {
            if (in_array($rsso['id'],$goptionals)) {
                $ot++;
                $last_ot=$rsso['optional'];    
    ?>
      <option value="<?=$rsso['id']?>" ><?=$rsso['optional']?></option>
      <?php 
      } 
    }
    ?>
    </select>
    <br />
    <?php } ?>

アップデート

これが私がこれまでにいる場所です。テーブル 2 を使用してドロップダウン リストを作成できました。テーブル 2 からリストした各 ID について、テーブル 1 から名前を取得する方法を理解する必要があります。

join を使用するとうまくいく気がしますが、よくわかりません。

何か案は?

    <?php
      $getRss = mysql_query("SELECT * FROM optionals_groups where       resid=".$_SESSION['restaid']." order by id asc");
    while ($rsr = @mysql_fetch_array($getRss)) {
    $goptionals=explode(', ',($rsr['goptionals']));

echo "<select name='a_".$rsr['id']." id='a_".$rsr['id']."' >";
echo "<option value='1' >Select Options</option>";
    foreach($goptionals as $v)
    {
        echo "<option value=".$v." >".$v."</option>";
    }
         echo "</select><br>";       
    }?>
4

2 に答える 2

2

これを行う正しい方法は、join必要なすべての情報を取得するクエリを作成してから、ドロップダウンを作成することです。ループ内でデータベースにクエリを実行しないでください。

その他のヒント:

  • そのように PHP とマークアップを混在させないでください。連結を使用してマークアップを作成し、それをビューに送信してください。
  • エラーサプレッサを使用しないでください@。本当に知りたいエラーを難読化します。
  • 古い安全でない mysql_* API を使用しないでください。代わりに、準備済みステートメントで PDO を使用してください。
于 2012-11-15T16:25:06.927 に答える
0

あなたの例でINNER JOIN は、両方のテーブルに少なくとも1つの一致がある場合に行を返します(id)

の構文INNER JOINは次のとおりです。

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

JOINの説明を参照

于 2012-11-15T17:19:36.947 に答える