2016-06-23 9 views
1

私は欲しいものがあると思っていますが、それを手助けする方法が必要です。下は風景です。最初のドロップダウンは、正常に動作するDBから取得されます。最初のドロップダウンの変更イベントでは、システムはデータベースに移動し、結果を次のドロップダウンにフェッチします。AjaxとPHPを使用してデータベースからデータを取得し、結果をドロップダウンリストとして返す

if(isset($_POST["loca"])){ 
     include 'includes/session.php'; 
     include 'includes/db_connection.php'; 
     include 'includes/functions.php'; 


     $main = $_POST["loca"]; 


     $gets = "SELECT * FROM tab_fltlocation WHERE mainloc='".$main."'"; 
     $get = mysqli_query($connection,$gets); 
     $gt = mysqli_fetch_array($get); 


     //$nos= $gt['opsNo']; 


      if(mysqli_num_rows($get)>=0) 
      { 
      echo json_encode(array("res"=>$gt));//or do a dropdown using <select name='subloc'><option value=$gt['loc']>$gt['loc']</option></select> 
      }else{ 
      echo json_encode(array("res"=>"0")); 
      } 

     } 
     ?> 

これは私がなりたいものです jQueryのSECTION

<script type="text/javascript" src="includes/scripts/newJquery.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $("#locate").change(function(){ 
     var selectedloc = $("#locate option:selected").val(); 
     $.ajax({type: "POST",url:"process-loc.php",data:{loca:selectedloc}}).done(function(data){ 
      var ans=jQuery.parse(data); 
      //using php-mysql before 
      var ps = ans.res; 
      $("#subloc").html(ps); 

     }); 
    }); 
    }); 
    </script> 

FrontEndの(HTML)

<tr> 
    <th>Primary Location:</th> 
    <?php 
    $result = mysqli_query($connection,"SELECT * FROM tab_location");?> 
    <td> 
    <select name="locate" class="form-control" id="locate"> 
    <option>Select Main Location</option> 
    <?php while($rw = mysqli_fetch_array($result)){ ?> 
    <option value="<?php echo $rw['location_name'];?>"><?php echo $rw['location_name'];?></option> 
     <?php };?> 
    </select> 
    </td> 
    </tr> 
    <tr> 
    <th>Sub Location:</th> 
    <td id="subloc"></td> 
    </tr> 

プロセス-loc.php:私は援助のために、これまで行われてきたものを見ますフロントエンドページに表示されます: $ gt ['loc'] これをどのように実現できますか?このようになり

プロセス-loc.php

/* Above code the same */ 
if(mysqli_num_rows($get)>=0) { 
    $out = '<select id="selSubLoc"><option value="">Choose One:</option>'; 
    foreach($gt AS $loc){ 
     $seld = ($_POST['loca'] == $loc) ' selected' ? : '' ; 
     $out .= '<option value="' .$loc. '" ' .$seld. '>' .$loc. '</option>'; 
    } 
    $out .= '</select>'; 
}else{ 
    $out = 0; 
} 

echo $out; 

をそして、あなたのフロントエンドコードのAJAXルーチンを変更します:

答えて

2
$query = " 
       SELECT 
        tariff_name 
       FROM tariff_setting"; 
     $result = mysqli_query($this->_connection, $query); 

     while ($row = mysqli_fetch_assoc($result)) 
      $response[] = $row['tariff_name']; 
     } 

$tarrifList = json_encode($response); 

// $ tarrifListが応答であるとJSONエンコード形式で送信され、AJAXの成功をデコード

// Javascriptのプロセス

var obj = JSON.parse(resdata); 
    var areaOption = "<option value=''>Select State</option>"; 
    for (var i = 0; i < obj.length; i++) { 
     areaOption += '<option value="' + obj[i] + '">' + obj[i] + '</option>' 
    } 
    $("#patientSelectState").html(areaOption); 
+0

$ tarrifListは、ajaxコールの応答として –

+0

が送信されていない場合は、「var ps = ans.res; console.log(ps)」という応答をajax応答で送信してください。 –

1

あなたはこれを行うには、あなたのAJAXプロセッサを変更することができます

$.ajax({ 
    type: "POST", 
    url:"process-loc.php", 
    data:{loca:selectedloc} 
}).done(function(recd){ 
    $("#subloc").html(recd); 
}); 

dataType:を使用してHTMLを構築することができない限り、PHPから受信したデータはHTML形式になりますPHPの側で、それをちょうど#sublocの表のセルに入れてください。

+0

それは動作しますが、私はちょうど私の願望に合わせてそれを変更しなければならなかったが、あなたの応答は100%OKでした。 – Dave

0

最初のボックスのイベントで呼び出しますデータベースから情報を取得するajaxを含む関数です。このajax呼び出しは、最初の入力に従ってデータを取得します。 データベースを照会し、結果をforeachループでエコーします(タグはそこにのみ作成できます)。 ajax 'success:'でデータをキャッチして表示します。

//from the database 
foreach ($info as $product) 
{ 
echo "<option value=".$product['childsticker_id'].">".$product['name']</option>"; 
} 

     //ajax call page 
     success: function(result) 
     { 
     $("#states").html(result); 
     } 

http://www.9lessons.info/2010/08/dynamic-dependent-select-box-using.html

関連する問題