我在数据库中有2个表
这是我的表格: my table from database and the relation
这是我的控制器
public function add_form(){
$login = $this->session->userdata('logged_in');
if(!$login){
$this->load->view('4dm1n-mtma/login');
}else{
$kab = $this->m_lokasi->select_kab();
$prov = $this->m_lokasi->select_prov();
$max = $this->m_lokasi->select_max();
$conf = array(
'max' => $max,
'kab'=>$kab,
'prov' => $prov
);
$this->load->view('4dm1n-mtma/v_add_lokasi',$conf);
}
}
这是我的模特
public function select_all(){
$this->db->select('id_lw,judul_lw,deskripsi_lw,longitude_lw,
latitude_lw,nama_p,nama_k,status_lw,gambar_lw');
$this->db->join('provinsi', 'provinsi.IDProvinsi = lokasi_wisata.IDProvinsi');
$this->db->join('kabupaten', 'kabupaten.IDKabupaten = lokasi_wisata.IDKabupaten');
return $this->db->get('lokasi_wisata')->result_object();
}
public function select_prov(){
$this->db->select('IDProvinsi,nama_p');
return $this->db->get('provinsi')->result_object();
}
public function select_kab(){
$this->db->select('IDKabupaten,nama_k,nama_p');
$this->db->join('provinsi', 'provinsi.IDProvinsi = provinsi.IDProvinsi');
return $this->db->get('kabupaten')->result_array();
}
这是我的观点
javascript的代码:
<script>
function populate(s1,s2){
var s1 = document.getElementById(s1);
var s2 = document.getElementById(s2);
s2.innerHTML = "";
if(s1.value){
var optionArray = ["<?php echo $value->nama_k?>"];
}
for(var option in optionArray){
var pair = optionArray[option].split("|");
var newOption = document.createElement("option");
newOption.value = pair[0];
newOption.innerHTML = pair[1];
s2.options.add(newOption);
}
} </script>
选择选项的代码:
<div class="form-group">
<label class="col-sm-2 control-label">Provinsi</label>
<div class="col-sm-6">
<select name="provinsi" id="sel1" type="text" class="form-control" onchange="populate(this.id,'sel2')">
<<option value=""> </option>}
option
<?php
foreach($prov as $value){ ?>
<option value = "<?php echo $value->IDProvinsi; ?>"><?php echo $value->nama_p ?></option>";
<?php }
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Kabupaten</label>
<div class="col-sm-6">
<select name="level" id="sel2" type="text" class="form-control">
</select>
</div>
</div>
iam询问如何在IDprovinsi onChange时从表kabupaten显示字段nama_k?以及如何将此代码的值赋予控制器
if(s1.value){
var optionArray = ["<?php echo $value->nama_k?>"];
}
thx stackoverflow
答案 0 :(得分:0)
如果我理解你的需要,你需要一个ajax请求
将onchange侦听器绑定到select字段。
在onchange事件处理程序中发送一个ajax请求,作为参数选择IDprovinsi并绑定一个oncomplete事件处理程序,以指定在请求完成时应用的逻辑(即向选择字段添加一个选项值) nama_k字段)。如果视图的访问受到限制,请注意在请求的标题中指定cookie会话。
在控制器中添加一个方法,通过从ajax请求发送的IDprovinsi过滤来自DB的结果,并在标准输出中回显nama_k字段值(建议JSON交换格式用于客户端/服务器通信)
修改
在客户端
$('#sel1').bind('change', function(evt){
var IDProvinsi = $(this).val();
var url = "http://localhost/index.php/filter_by_id/" + IDProvinsi;
$.getJSON(url, function(data){
// data contains the result of the db request
// custom logic here: populate the s2 field
}).fail(function() {
console.log( "error" );
});
}
在服务器端
public function filter_by_id($IDProvinsi)
{
$result = $this->m_lokasi->select_by_provinsi_id($IDProvinsi);
if($result){
header("HTTP/1.1 200 OK");
echo json_encode($result);
}else{
header("HTTP/1.1 404 Not Found"); // or a custom code
}
die();
}
答案 1 :(得分:0)
使用此代码
我的js:
<script type="text/javascript">
function fetch_select(val){
$.ajax({
type: 'post',
url: 'fetch_data',
data: {
get_option:val
},
success: function (response) {
document.getElementById("sel2").innerHTML=response;
}
});
}
</script>
我的选择选项:
<div class="form-group">
<label class="col-sm-2 control-label">Provinsi</label>
<div class="col-sm-6">
<select onchange="fetch_select(this.value);" name="provinsi" type="text" class="form-control">
<option value="">PILIH PROVINSI</option>
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
mysql_connect($host, $user, $pass);
mysql_select_db('db_mtma');
$select=mysql_query("select nama_p,IDprovinsi from provinsi group by IDprovinsi");
while($row=mysql_fetch_array($select))
{
echo "<option value=".$row['IDprovinsi'].">".$row['nama_p']."</option>";
}
?>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-2 control-label">Kabupaten</label>
<div class="col-sm-6">
<select name="kabupaten" id="sel2" type="text" class="form-control">
</select>
</div>
</div>
我的控制员:
public function fetch_data(){
if(isset($_POST['get_option']))
{
$host = 'localhost';
$user = 'root';
$pass = '';
mysql_connect($host, $user, $pass);
mysql_select_db('db_mtma');
$IDProvinsi = $_POST['get_option'];
$find=mysql_query("select IDKabupaten,nama_k from kabupaten where IDProvinsi=$IDProvinsi");
while($row=mysql_fetch_array($find))
{
echo "<option value=".$row['IDKabupaten'].">".$row['nama_k']."</option>";
}
exit;
}
}