0

最初のドロップダウンには値が 1 つしかないため、ページの読み込み時に 2 番目のドロップダウンを設定するカスケード ドロップダウンを PHP で作成しようとしています。

私のデータベースには、「city」、「name」、「day」というフィールドを持つ「nights」というテーブルがあります。

最初のボックスを埋めるために、私が使用してSELECT DISTINCT cities from nightsいる etc はうまくいきました。

2番目のボックスを埋めるには、次のようなものが必要ですSELECT name WHERE city = $city-私の問題は、設定方法がわからないことです(タグ$cityの名前です)。この時点でフォームが送信されていないため、<select>使用できません。$_POST['city']

何か案は?

4

4 に答える 4

1

これを動的にしたい場合 (つまり、ユーザーがドロップダウンを変更した後) は、最初に JavaScript を使用して PHP ページをクエリし (おそらくjQuery getを使用)、次にそれに応じてドロップダウンを調整する必要があります。このためのチュートリアルがウェブ上にたくさんあります。

最初のページ データを入力するだけの場合は、クエリから最初の都市を選択し、オプションを選択済みに設定してから、次のクエリでその都市を使用できます。

何かのようなもの:

$first = True;
while($row = mysql_fetch_array($result))
{
    echo "<option" . (($first) ? " selected" : "") . ">" . $row['city'] . "</option>";
    if($first) 
    {
        $first = !$first;
        $city = $row['city'];
    }
}
//now do stuff with with $city
于 2012-06-10T11:15:27.133 に答える
0

これにはAJAXを使用できます。

変更イベントでは、2番目のドロップダウンcaodeを作成するphpスクリプトを呼び出すjavascript-ajax関数を呼び出します。

于 2012-06-10T11:03:17.830 に答える
0

PHPスクリプトからオプションをロードするには、ajaxを使用する必要があります。jqueryと ajax を使用してそれを行う方法の例を次に示します。

于 2012-06-10T13:30:09.740 に答える
0
<?    
$CITIES = query_result("SELECT DISTINCT cities FROM nights;");
if (isset($_POST["city"])) {
  $NAMES = query_result("SELECT name FROM nights WHERE city = '{$_POST[city]}'");
  if (isset($_POST["day"]) 
    $DAYS = query_result("SELECT day FROM nights WHERE city='{$_POST[city]}'".
                         " AND name = '{$_POST[name]}'");
  else
    $DAYS = array();
} else
  $NAMES = array();  

/* now output the <select> markup for $CITIES, $NAMES and $DAYS */
?>

注:query_result関数は自分で定義する必要があります (コードを単純化するために使用しました)。

于 2012-06-10T11:34:03.827 に答える