2016-07-03 12 views
0

私はPHPを使用してサーバー側をプログラミングしています。データベースから選択したフォームの選択肢を取得

私は、フォームの選択タグを使用して、入力フィールドのセットを作成します。 selectのオプションはデータベースから取得し、最初の入力で選択したオプションは2番目の入力のオプションを決定します。

たとえば、2つのフィールドは国と州です。まず、ユーザは、状態入力フィールドに現れる状態のリストを決定する国名を選択する。ユーザーが国を変更したときにリストが動的に変更されるようにしたい。

答えて

-1

を使用すると、Laravel(推奨)またはCodeIgniterの(これはまだ開発中であるかどうかわからない)などのPHPフレームワークを使用しています。

ので、あなたがその状態のサブアレイと国ごとの2D PHPの配列を構築することができます。

レンダリングページ(ビュー)に直接入れることができます。

var countries_list =<?php echo json_encode($countries_array); ?>; 

のようなものを使用すると、直接国が変更を選択するときに状態が選択移入するために使用することができますjavascript配列にこれを注入します。

または使用アヤックスが、それは遅くなると多くのサーバーをヒットします。

+0

Hmm downvoted説明なし!!!どのようにプロ – Datadimension

0

あなたは、選択するたびに提出PHPでそれを行うことができます。例えば

その後、
<form action="selectState.php" method="post"> 
    <select name="country"> 
    <option value="countryName">countryName</option> 
    ... 
    </select> 
</form> 

あなたはselectState.phpで$ _POST [ '国']の値と印刷は、あなたが望む方法を選択し得ること:

<form action="" method="post"> 
    <select name="state"> 
    <?php 
    // select use $_POST['country'] to customize the select option's 
    ?> 
    </select> 
</form> 

よりユーザーフレンドリーなソリューションは、(それが新しいページを必要とするか、または更新されません)AJAXを使用しています。呼ばれ、現在の値が選択された機能に渡している()は、ユーザーが選択した値のajaxFunctionを変更するには、このたびで

<form action="selectState.php" method="post"> 
    <select name="country" onchange="ajaxFunction(this.value)"> 
    <option value="countryName">countryName</option> 
    ... 
    </select> 
    <select name="state" id="stateList"> 
    <!-- here we'll put the states we want --> 
    </select> 
</form> 

ですから、フォームのこの種を使用することができます。ここで

はajaxFunction(注:この例では、jQueryのを使用していますが、JavaScriptのバニラでそれを行うことができます):ある

function ajaxFunction(val){ 
    $.ajax({ 
    type: 'post', // choose the method 
    url: 'page.php', // choose the 'action' page 
    data: { 
     country:val // send the data 
    }, 
    success: function (response) { 
     // this tell the browser what to do with the response of 'page.php' 
     // in this case we are telling to put everything we get to the HTML element with stateList id 
     document.getElementById("stateList").innerHTML=response; 
    } 
    }); 
} 

あなたは、単にDBを照会し、その「page.php」を必要とする最後の事(NOTE :これは擬似コードです):

<?php 

// Query the DB for the states with country = $_POST['country'] 
while(results){ 
    echo '<option value="results[$i]">results[$i]</option>'; 
} 

?> 
関連する問題