2016-09-27 10 views
1

javascriptで複数のデータベースドロップダウンリストがあり、ドロップダウンメニューに結果を表示したい。しかし、現時点では、何も表示されません。別のファイル(php、mysql、javascript)のドロップダウンリストにデータを表示

<html> 
<body> 

<script type="text/javascript" src="jquery-3.1.1.min.js"></script> 
<script type="text/javascript"> 
function abc(){ 
     var e = document.getElementById("Region_ID"); 
     var val = e.options[e.selectedIndex].value; 
     $.post("getSecondDropDown.php",{ Region_ID:val}, function(data) { 
     $("#Country_ID").html(data); 

    }); 
} 
</script> 


<form action="/NewService.php" id="ServiceForm" method="post"> 
    Name:<input type="text" name="Service_Name"></br> 
    Region: <select name="Region_ID" id="Region_ID" onchange="abc()" form="ServiceForm"> 
<?php 

include('config.php'); 

try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare("SELECT Region_ID, Region_Name FROM Regions"); 
    $stmt->execute(); 

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

    foreach($stmt as $v) { 
    echo "<option value='" . $v['Region_ID'] ."'>" . $v['Region_Name'] ."</option>"; 

} 
} 
catch(PDOException $e) { 
    echo "Error: " . $e->getMessage(); 
} 
$conn = null; 

?> 
</select></br> 


Country: <select name="Country_ID" form="ServiceForm"> 
<script>document.write($("#Country_ID"))</script> 
</select></br> 


    <input type="submit"> 
</form> 

</body> 
</html> 

セカンドPHPファイル:それは

私のコアコード(Iドロップダウンメニューを国につながる表示したい)(ドロップダウンメニュー)(ドロップダウンメニュー)領域を示しているが、dosn'tショーの国(getSecondDropDownMenu.php):

<?php 
    $Region_ID =$_POST['Region_ID']; 
    $option=""; 
       try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare("SELECT Country_ID, Country_Name FROM Countries WHERE Region_ID ='$Region_ID'"); 
    $stmt->execute(); 

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

    foreach($stmt as $v) { 

    echo "<option value='" . $v['Country_ID'] ."'>" . $v['Country_Name'] ."</option>"; 

} 
     echo $option; 
    ?> 

私はその問題はここにあると思いますが、実際にそれを知らない:

Country: <select name="Country_ID" form="ServiceForm"> 
<script>document.write($("#Country_ID"))</script> 
</select></br> 
+0

をforeachの操作を行うには、タグを選択するにはid属性を追加します。 –

+0

@JobinSKumarまだ何もありません。 – Crelix

+0

@ crelix1234私は自分の答えを更新しました。チェックしてください –

答えて

0

は、それが(「getSecondDropDownMenu.php」)を含ん 類;

$arrayForSecondDropdown[] = functionName(); 

を行い、その後のような

foreach($arrayForSecondDropdown as $v){ 
     echo $v; 
} 
+0

こんにちは。私は次のようなことをしました:Country:
Crelix

+0

しかし、それは示しています?致命的なエラー:行に読み込むための[]を使用することはできません:$のforeachのは、($ arrayForSecondDropdown []として$ V){crelix1234 @ – Crelix

+0

はとして$ Vの前に[]奪います私は悪いし、あなたは既にドロップダウン内$ Vをエコーすることができます

0

abc関数をonchange='abc(this.value)'で呼び出すことで簡略化することができます。また、ドロップダウンリストにはID属性が必要です。コールバックを有効にすると、htmlデータが追加されます。また、SQLステートメントに変数を渡していないので、用意されたステートメントは実際には必要ありません。単純なqueryで十分です。選択したタグのIDの助けを借りて表示するコードを書かれているが、あなたが持っているあなたが提供しているスクリプトを1としてselect tag

<script>document.write($("#Country_ID"))</script> 

のための任意のIDを与えられていない

<html> 
    <head> 
     <title>dependant select menu</title> 
     <script type="text/javascript" src="jquery-3.1.1.min.js"></script> 
     <script type="text/javascript"> 
      function abc(value){ 
        $.post("getSecondDropDown.php",{ Region_ID:value }, function(data) { 
         $("#Country_ID").html(data); 
        } 
       ); 
      } 
     </script>  
    </head> 
    <body> 
     <form action="/NewService.php" id="ServiceForm" method="post"> 
      Name:<input type="text" name="Service_Name"></br> 
      Region: <select name="Region_ID" id="Region_ID" onchange="abc(this.value)" form="ServiceForm"> 

      <?php 

       include('config.php'); 

       try { 

        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
        $stmt = $conn->prepare("SELECT Region_ID, Region_Name FROM Regions"); 
        $stmt->execute(); 

        $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

        foreach($stmt as $v) { 
         echo "<option value='" . $v['Region_ID'] ."'>" . $v['Region_Name'] ."</option>"; 
        } 
       } catch(PDOException $e) { 
        echo "Error: " . $e->getMessage(); 
       } 
       $conn = null; 

      ?> 
      </select> 
      </br> 

      Country: <select id='Country_ID' name="Country_ID" form="ServiceForm"></select> 
      </br> 
      <input type="submit"> 
     </form> 
    </body> 
</html> 
0

selectタグにID Attributeを追加します。

特に、ページが読み込まれた後にdocument.writeを使用しないことをお勧めします。予期しない結果につながる可能性があります。ただ、このメソッドを使用します。

これと交換してみてください:

document.getElementById('Country_ID').innerHTML = "something important"; 

しかし、あなたは全体のinnerHTMLを置き換えることを望んでいない場合、あなたはそれに何かを追加することができます:

document.getElementById('Country_ID').insertAdjacentHTML('beforeend', "something added"); 
+0

ありがとう、しかし、これは動作しません。 :) – Crelix

+0

もう一度おねがいしますが、それでもうまくいきません、それは動作しない、何かを試してみませんか? – Crelix

1

私は思いますあなたの2番目のPHPファイル(getSecondDropDownMenu.php)にインクルードする設定ファイルがありません:。したがって、このスクリプトは実行できません。これはなぜこのページがデータベース接続を得ることができることを意味します。ここでデータベース接続が達成されていないので、ここでは地域に基づいてデータベースから国リストを取得しています。にはconfig.phpが含まれています。 PHP変数と文字列 .IEを連結した別のミスをしました。国のクエリを取得するには、正しい構文でリージョン変数を連結する必要があります。以下のコードを参照してください。

第二のphpファイル(getSecondDropDownMenu.php):

<?php 
    include('config.php'); 
    $Region_ID =$_POST['Region_ID']; 
    $option=""; 
       try { 
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $stmt = $conn->prepare("SELECT Country_ID, Country_Name FROM Countries WHERE Region_ID ='".$Region_ID."'"); 
    $stmt->execute(); 

    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

    foreach($stmt as $v) { 

    echo "<option value='" . $v['Country_ID'] ."'>" . $v['Country_Name'] ."</option>"; 

} 
     echo $option; 
    ?> 

私は、これはあなたを助けるかもしれないと思います。あなたが他のファイルに続いて

<?php 
function functionName(){ 
$Region_ID =$_POST['Region_ID']; 
$option[] = null; 
      try { 
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
$stmt = $conn->prepare("SELECT Country_ID, Country_Name FROM Countries WHERE Region_ID ='$Region_ID'"); 
$stmt->execute(); 

$result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 

foreach($stmt as $v) { 

array_push($option, "<option value='" . $v['Country_ID'] ."'>" . $v['Country_Name'] ."</option>"); 

    } 
    return option; 
    } 
?> 

最初のものを関数を作成する必要がある第二のファイル(getSecondDropDownMenu)で

+0

アイデアをありがとう、しかし、まだ、ドンは働いていない。 – Crelix

関連する問題