0

私のドロップダウン リストでは、各行にデータベースからの 3 つのフィールドがあります。これらを別の SQL ステートメントで参照する別のフォームに渡す必要があります。

それらを渡す方法がわかりません。どんな助けでも本当に感謝しています。

<form action='obtainaprice.php' method='POST'>
<?php

echo "<select name='makes' id='searchtext'>\n";

    $query1 = "SELECT DISTINCT make, type, model FROM device ORDER BY make, type, model";

    $result1 = mysql_query($query1)
       or die ("Couldn't execute query.");

    while ($row1 = mysql_fetch_array($result1))
    {
         $i=0;
             echo "<option value= \"" . $i . "\">" . $row1['make'] . " " . $row1['type'] . " " . $row1['model'] . "</option>";

             $i++;
    }

    echo "</select>\n";
?>
<input type="image" id="buttons" alt="Search" img src="images/button.png">
</form>
4

2 に答える 2

0

オプション要素は1つのもの(文字列)しか返すことができないため、次のSQLステートメントを実行する前に、最初にそれを解析して、make、type、およびmodelを元に戻す必要があります。

なぜあなたは3つの選択された要素を持っていないのですか?メーカー、タイプ、モデルごとに1つ。

値を使用する次のSQLステートメントは何ですか?

于 2012-12-18T23:21:22.890 に答える
0

この場合、オプションの値を行のIDにし、これを選択する必要があります。

"SELECT DISTINCT id, make, type, model FROM device ORDER BY make, type, model"

プライマリインデックスがidと呼ばれると仮定します。

<option value="<?php echo $row['id']; ?>">

次に、次のページで、makesの投稿値に基づいて次のクエリを実行します...

 "SELECT id, make, type, model FROM device WHERE id = ".$_POST['makes']

もちろん、これを消毒する必要があります。mysqliまたはPDOに切り替える必要があります。

補足-htmlを書くためにphpから抜け出す必要があります。それはただきれいです。選択ボックスの途中で死なないように、最初にクエリを実行します。私はmysql_関数の使用を容認しませんが、例としてここに私が意味するものがあります...

<?php
    $query1 = "SELECT DISTINCT id, make, type, model FROM device ORDER BY make, type, model";
    $result1 = mysql_query($query1)
       or die ("Couldn't execute query.");
?>
<form action='obtainaprice.php' method='POST'>
    <select name='makes' id='searchtext'>
    <?php while ($row1 = mysql_fetch_array($result1)): ?>
        <option value="<?php echo $row['id']; ?>"><?php echo $row1['make']; ?> <?php echo $row1['type']; ?> <?php echo $row1['model']; ?></option>
    <?php endwhile; ?>
    </select>
    <input type="image" id="buttons" alt="Search" img src="images/button.png">
</form>
于 2012-12-18T23:21:39.467 に答える