2016-08-02 9 views
-3

2番目の選択リストの値が入力されないネストされた選択リストを実行しようとしています。ここに私のコードです。私が選択し、その値に基づいてgetter.php(動作しない)第2の選択ボックスここ最初の選択リストの値に基づいて2番目の選択リストを設定します

<div class="col-sm-3"> 
    <label for="rg">Region</label> 
</div> 
<div class="col-sm-9"> 
    <select id="region" name="region"> 
     <option value="">Select Region</option> 
     <option value="AR">Ashanti</option> 
     <option value="BRONG+AHAFO">Brong Ahafo</option> 
     <option value="CENTRAL">Central</option> 
     <option value="EASTERN">Eastern</option> 
     <option value="GREATER+ACCRA">Greater Accra</option> 
     <option value="NORTHERN">Northern</option> 
     <option value="UPPER+EAST">Upper East</option> 
     <option value="UPPER+WEST">Upper West</option> 
     <option value="VOLTA">Volta</option> 
     <option value="WESTERN">Western</option> 
    </select> 
</div> 

<div class="col-sm-3"><label for="tw">Town</label></div> 
<div class="col-sm-9"> 
    <select id="town" name="town"> 
     <option value="">Select Town</option> 

    </select> 
</div> 


<script type="text/javascript"> 
$(document).ready(function() { 
    $("#region").change(function() { 
     $("#town").load("getter.php?choice=" + $("#region").val()); 
    }); 
}); 
</script> 

を移入するために動的に呼び出されたが、これは何をされ

<?php 
include "../areashoppers/includes/cs_functions.php"; 
$sql = "SELECT distinct town FROM oic_areas_full WHERE region = '".$choice."' ORDER BY town ASC"; 
$st = $sc_conn->query($sql); 
while ($r = $st->fetch()) { 
    echo "<option>" . $r['town'] . "</option>"; 
} 
?> 

getter.phpである第一移入します私のDSNはcs_functionsで定義されたエラー・ログに表示さ

[02-Aug-2016 18:39:50 UTC] PHP Notice: Undefined variable: choice in /home/areashoppers/public_html/nylb/getter.php on line 3

[02-Aug-2016 18:39:50 UTC] PHP Fatal error: Call to a member function fetch() on boolean in /home/areashoppers/public_html/nylb/getter.php on line 5

$ sc_connがされ

+2

エラーは明らかです。 '$ choice'にはどこに値を割り当てますか?これを修正すると、2番目のエラーが消えて魔法が起きるはずです。 –

+0

申し訳ありませんが、私はjavascriptを初めて使っています。どのように私はそれをgetter.phpに割り当てますか? – user3449007

+1

これはあなたの質問に答えませんが、使用している構造に関連するセキュリティリスクを認識しておく必要があります。 '$ _GET'変数と変数をSQL文字列に連結することは、悪意のある攻撃につながります。 –

答えて

0

GETメソッドによりURLから選択を取得する必要があります。

<?php 
include "../areashoppers/includes/cs_functions.php"; 
$choice = $_GET['choice']; 
$sql = "SELECT distinct town FROM oic_areas_full WHERE region='$choice' ORDER BY town ASC"; 
$st = $sc_conn->query($sql); 
while ($r = $st->fetch()) { 
    echo "<option>" . $r['town'] . "</option>"; 
} 
?> 
+1

もう一度見てください、元の質問にはなかったここには駄目なエラーがあります – RiggsFolly

+0

それは、_DVが削除されました_ – RiggsFolly

+0

感謝のための情報@RiggsFolly –

2

$choiceが定義されていない場合、クエリは失敗するため、Undefined variable: choiceは2番目のエラーの原因になる可能性が最も高いです。

$choice = $_GET['choice']; 

PHPスクリプトの冒頭にエラーをクリアする必要があります。 getter.php?choice=somethingのようなクエリ文字列内の変数を含める

は自動的に$choice変数を作成していないが、それは$_GET['choice']に値を格納ありません。

クエリで変数$choiceを安全に使用したい場合は、それをエスケープする心配はありません。準備されたステートメントを使用してください。 $sc_connが作業PDO接続であると仮定すると、それは次のようになります:

$sql = "SELECT distinct town FROM oic_areas_full WHERE region=? ORDER BY town ASC"; 
$st = $sc_conn->prepare($sql); 
$st->execute([$choice]); 
+0

特別な文字をエンコードするためにurlencode($ _ GET ['choice'])を実行します – user3449007

+1

@ user3449007 $ _GETと$ _POSTにはPHPのすべてのコンテンツに対して既に 'urldecode()'が既に行われていません。 – RiggsFolly

+0

'urlencode'を使う正しい場所。 –

関連する問題