0

最初に、私の前の質問に肯定的な回答をくださった皆さんに感謝します。

今、助けが必要な別の質問があります。

アイテムのリストを含むドロップダウン メニューがあります。リストは while ループ内で生成されます。コードは次のとおりです。

$query = "SELECT Key, Short FROM product WHERE Active = 1 OR Short LIKE 'Blue%'";
$run = mysql_query($query) or die(mysql_error());

echo 'Product: <br />';
?>

<select id="select2" name="select2">
<?php
$ids = 0;
echo "<option selected='selected'>-Select product-</option>";
while($rows = mysql_fetch_assoc($run)) {
    echo "<option value=$ids>".$rows['Short']."</option>";
    $ids++;
}
?>
</select><br /><br />

次に、このドロップダウン メニューの下に別のドロップダウン メニューを作成し、ドロップダウン メニューから選択したオプションに応じてコントラクトを表示する必要があります。選択した各アイテムには、キーと呼ばれる番号もあります。ここで、contracts という別のテーブル内に、すべてのコントラクトを同じ値 Key で保存しました。したがって... 2 番目のドロップダウン メニューでは、最初のドロップダウン メニューの項目で選択したキーに基づいてコントラクトを表示する必要があります。

理解できるほど明確であることを本当に願っていますが、少し混乱しています。

更新: わかりました、ここに新しいコードがあります:

index.php

$("select#select2").change(function(){
    $.ajax({
        type: "GET",
        url: "process.php",
        data: "selected_key=" + $(this).val(),
        success: function(result) {
            $("select#text2").html(result);
        }
    });
});

</script>

<select id="text2" name="text2">

</select>

そして、ここに私のprocess.phpがあります

<?php ## URL_TO_GET_CONTRACTS_FOR_KEY ##
$selectedKey = $_GET['selected_key'];
$query = "SELECT * FROM contacts WHERE Key = '".$selectedKey."'";
$run = mysql_query($query);
while($row = mysql_fetch_assoc($run)) {
    echo "<option value='..'>..</option>";
    } ?>

しかし、text2 ドロップダウン メニューに何も表示されません。

4

3 に答える 3

2

最初のドロップダウン メニューでオプション値 $rows['Key'] を使用し、選択した値を取り、そのキーに対応するコントラクトを取得する jQuery セレクターを追加するのが最善だと思います。

このようなものでなければなりません..

PHP コード

$query = "SELECT Key, Short FROM product WHERE Active = 1 OR Short LIKE 'Blue%'";
$run = mysql_query($query) or die(mysql_error());
echo 'Product: <br />'; ?>
<select id="select2" name="select2">
<?php
echo "<option selected='selected'>-Select product-</option>";
while($rows = mysql_fetch_assoc($run)) {
    echo "<option value='".$rows['Key']."'>".$rows['Short']."</option>";
}
?>
</select>

jQueryコード

$("select#select2").change(function(){
    $.ajax({
        type: "GET",
        url: "URL_TO_GET_CONTRACTS_FOR_KEY",
        data: "selected_key=" + $(this).val(),
        success: function(result) {
            $("select#NEWSELECT").html(result);
        }
    });
});

説明: URL_TO_GET_CONTRACTS_FOR_KEY は、作成する必要がある PHP ファイルへの URL です。そのファイルでは、$_GET['selected_key'] にアクセスできます。その値を使用して、そのキーのコントラクトを取得します。そのファイルでは、2 番目の選択の "" タグをエコーする必要があります。このような:

<?php ## URL_TO_GET_CONTRACTS_FOR_KEY ##
$selectedKey = $_GET['selected_key'];
$query = ..
$run = ..
while($row = mysql_fetch_assoc($run)) {
    echo "<option value='..'>..</option>";
} ?>

NEWSELECT は、返されたオプションを配置する選択の ID に置き換える必要があります。

于 2012-12-20T08:36:56.450 に答える
1

php はサーバー側であり、ajax が必要な場合は php だけではこれを行うことはできません (ページを更新せずにそうしたい場合)

選択ドロップダウンでajax呼び出しを行い、別のものを表示するだけです


ノート

  1. ext/mysqlプレフィックス mysql_ で名前が付けられたすべての関数を提供する PHP 拡張機能全体は、PHP v5.5.0 で正式に非推奨となり、将来的に削除される予定です。したがって、またはのいずれPDOかを使用しますMySQLi

よく読んだ

  1. mysql 拡張機能は非推奨であり、将来削除される予定です。代わりに mysqli または PDO を使用してください
于 2012-12-20T08:33:17.913 に答える
0

これを行う方法はありますが、AJAX に比べて面倒で面倒です。(つまり、必要なすべてのデータを最初に取得するという意味ですが、これは悪い考えです)。

AJAX を使用する理由

AJAX は、ページ全体をリロードしなくても、他のページからデータを送受信できます。上記で作成した PHP は、HTML のみをブラウザーに出力します。そのため、さらに PHP を実行するには、追加のコードをファイルに保存して実行する必要があります。

それの使い方

簡単な方法は、jQuery を使用することです。これは、クライアント側の jQuery と一緒に使用されます

$("select#select2").change(function(){
$.ajax({
    type: "POST",
    url: "url_to_contacts",
    data: "reqd_key=" + $(this).val(),
    success: function(result) {
        $("select#select3").html(result);
      }
   });
});

上記の別の PHP ファイルがあります。変数は次を使用して取得でき$_POSTます。これにはクエリが含まれ、HTML が出力されます。この出力 HTML は、新しい行によって HTML を選択すると配置されます。$("select#select3").html(result);

これを試す前にAJAXについて調査し、ページを動的に編集する方法を理解することをお勧めします

于 2012-12-20T08:42:55.133 に答える