2017-01-13 16 views
3

データベースから列(jobTitle)をエコーアウトしている選択を持っています。別のhtml selectで表示しようとしていますが、別の列(company_name)最初のhtml選択に関連しています。MYSQL HTMLベースの選択オプション

私は間違いをしていません。最初のhtml選択値は渡されていますが、何らかの理由で2番目の選択の値に基づいてdbから選択していません。

問題は私の2番目のSQLクエリであると思っています。

P.誰かがこれを行うより効果的な方法を知っていれば、私は最も感謝して見つけます。

PHP & HTML:

<select name="jobtitle_select" class="jobtitle_select"> 
    <option class="" name="" value="" >-- Job title --</option> 
    <?php 
    $sql = $dbh->prepare("SELECT * FROM jobs_list"); 
    if($sql->execute()) { 
     $sql->setFetchMode(PDO::FETCH_ASSOC); 
    } 
    while($row = $sql->fetch()) { 
     $jobTitle = $row['jobTitle']; 
     echo "<option class='' name='' value='$jobTitle' > $jobTitle </option>"; 
    } // end of while // ?> 
</select> 
<?php 
$jobtitle_select = $_POST['jobtitle_select']; 
if ($jobtitle_select){ 
    $sql = $dbh->prepare("SELECT * FROM jobs_list WHERE company_name = :jobtitle_select"); 
    $sql->bindParam(':jobtitle_select', $jobtitle_select, PDO::PARAM_STR); 
    if($sql->execute()) { 
     $sql->setFetchMode(PDO::FETCH_ASSOC); 
    } 
?>  
<select class="company_name_select" > 
    <option class="" name="" value="" >-- Company name --</option>  
    <?php while($row = $sql->fetch()) { 
     $company_name = $row['company_name']; 
     echo "<option class='' name='' value='$company_name'> $company_name </option>"; 
    } // end of while //   
}?> <!-- end of if --> 
</select> 

のjQuery:

$('.jobtitle_select').change(function(){ 
     $.ajax({ 
      //create an ajax request to load_page.php 
      type: "POST", 
      data:$('.jobtitle_select'),  
      dataType: "html", //expect html to be returned     
      success: function(date){ 
       $('.company_name_select').html(date); 
      } 
     }) 
    }); 

答えて

1

あなたのAJAX呼び出しが正しくない、またはそれは完全ではないと言います。 urlと投稿された変数に名前と値を指定する必要があります。

$('.jobtitle_select').change(function(){ 
    $.ajax({ 
     //create an ajax request to load_page.php 
     url: "load_page.php", 
     type: "POST", 
     data: {jobtitle_select: $('.jobtitle_select').val()},  
     dataType: "html", //expect html to be returned     
     success: function(date){ 
      $('.company_name_select').html(date); 
     } 
    }) 
}); 

とあなたのload_page.phpファイルが選択の唯一内側の部分を表示するには、データベースおよびhtmlコードからデータを読み込むためのコードのPHPを持っている必要があります。

<?php 
$jobtitle_select = $_POST['jobtitle_select']; 
if ($jobtitle_select){ 
    $sql = $dbh->prepare("SELECT * FROM jobs_list WHERE company_name = :jobtitle_select"); 
    $sql->bindParam(':jobtitle_select', $jobtitle_select, PDO::PARAM_STR); 
    if($sql->execute()) { 
     $sql->setFetchMode(PDO::FETCH_ASSOC); 
    } 
?>  

    <option class="" name="" value="" >-- Company name --</option>  
    <?php while($row = $sql->fetch()) { 
     $company_name = $row['company_name']; 
     echo "<option class='' name='' value='$company_name'> $company_name </option>"; 
    } // end of while //   
}?> <!-- end of if --> 
+0

私はドン」私は同じページに送信している場合は、URLが必要です。 defactt ajaxはそれを同じページに送ります。 – bob

+1

上記のコードを一緒に入れて動作させました。同じページに呼び出しを送る場合、 'success'関数は'