Php 如何在codeigniter中创建动态链接下拉列表
我想在codeigniter中创建多个下拉列表,在我的情况下,当用户选择国家时,下一个列表应提供该国家的州选项,在用户选择州后,下一部分应提供城镇选项等。。。我希望通过使用一些脚本来提供列表或选项,当用户最终完成选择时,应该在数据库中更新列表。是否可以使用脚本而不是从数据库加载选项来提供选项列表。下面是我想要在其上实现动态下拉列表的视图和模型文件 form_model.phpPhp 如何在codeigniter中创建动态链接下拉列表,php,jquery,codeigniter,Php,Jquery,Codeigniter,我想在codeigniter中创建多个下拉列表,在我的情况下,当用户选择国家时,下一个列表应提供该国家的州选项,在用户选择州后,下一部分应提供城镇选项等。。。我希望通过使用一些脚本来提供列表或选项,当用户最终完成选择时,应该在数据库中更新列表。是否可以使用脚本而不是从数据库加载选项来提供选项列表。下面是我想要在其上实现动态下拉列表的视图和模型文件 form_model.php function r_ins() { $session_user=$this->session->
function r_ins()
{
$session_user=$this->session->userdata('logged_in');
$sysdat = date("Y-m-j H:i:s");
$data= array(
'id' => $this->input->post('id'),
'name' => $this->input->post('name'),
'country' => $this->input->post('country'),
'state' => $this->input->post('state'),
'town' => $this->input->post('town'),
'village' => $this->input->post('village'),
'c_name' => $session_user['username'],
'c_date' => $sysdat
);
$this->db->insert('r_info',$data);
return $this->input->post('id');
//echo "<pre>";
// print_r($_POST);
}
函数r_ins()
{
$session_user=$this->session->userdata('logged_in');
$sysdat=日期(“Y-m-j H:i:s”);
$data=数组(
'id'=>this->input->post('id'),
'name'=>this->input->post('name'),
“国家”=>$this->input->post('country'),
'state'=>this->input->post('state'),
'town'=>this->input->post('town'),
“村庄”=>this->input->post('village'),
'c_name'=>$session_用户['username'],
“c_日期”=>sysdat美元
);
$this->db->insert('r_info',$data);
返回$this->input->post('id');
//回声“;
//打印(邮政美元);
}
view.php
<script type="text/javascript">
function getXMLHTTP() { //function to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getDoc(strURL) {
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById('my_div').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
</script>
ID:
姓名:
国家:
选择国家
美国
澳大利亚
日本
韩国
声明:
城市:
城镇:
函数getXMLHTTP(){//返回xml http对象的函数
var xmlhttp=false;
试一试{
xmlhttp=新的XMLHttpRequest();
}
第(e)款{
试试{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
捕获(e){
试一试{
xmlhttp=新的ActiveXObject(“Msxml2.xmlhttp”);
}
渔获物(e1){
xmlhttp=false;
}
}
}
返回xmlhttp;
}
函数getDoc(strURL){
var req=getXMLHTTP();
如果(请求){
req.onreadystatechange=函数(){
如果(req.readyState==4){
//只有在“OK”的情况下
如果(请求状态==200){
document.getElementById('my_div')。innerHTML=req.responseText;
}否则{
警报(“使用XMLHTTP:\n“+req.statusText时出现问题”);
}
}
}
请求打开(“获取”,strURL,true);
请求发送(空);
}
}
这就是魔法发生的地方。在我的第一个下拉列表中,我放置了一个onChange属性。这将调用我的getdocjavascript函数,该函数有一个PHP函数作为参数
require_once('dbcon.php');
$query="select doctorName from doctors where specialty= '$spec'";
$result=mysqli_query($conn,$query);
?>
<select name="docName">
<?php
while( $row = mysqli_fetch_row($result)) {
echo "<option type='hidden' value='$row[0]'>$row[0]</option>";
} ?>
</select>
选择专业
一般的
儿科学
医师
心脏病专家
肺的
现在,您需要在HTML中使用一个DIV,它从另一个页面获取数据,然后在当前页面中将其作为DOM返回。这样,您的原始页面不会刷新,但仍然可以从服务器获取数据
getSpec.php 显示在php工作表下发生的事情
require_once('dbcon.php');
$query=“从医生中选择医生姓名,其中专业='$spec';
$result=mysqli\u查询($conn,$query);
?>
你必须使用ajax。互联网上有很多关于这个主题的教程。谢谢@siddhesh,我会用谷歌搜索它。从数据库加载下拉列表并使用ajax脚本有什么优势吗?我已经看到ajax需要在客户端浏览器中启用javascript(将用户重定向到如何启用java脚本的页面)…您无法以任何方式管理客户端的浏览器。如果可以的话,这将是安全问题。现在大多数(如果不是全部的话)浏览器都默认启用了JavaScript。人们禁用JS:的原因是可以理解的。明白你的意思了@Tpojka。谢谢!谢谢@Gokigoooks,我能在我的phpcodeigniter项目中实施你的建议吗?是的,你能。这是一种程序性的方法,所以说“是”是安全的。再次感谢@gokigoooks。。。我会想办法试一下。。。谢谢你
<select name="docSpec" id="docSpec" onChange="getDoc('getSpec.php?spec='+this.value)">
<option>pick a specialization</option>
<option value="General">General</option>
<option value="pediatrics">pediatrics</option>
<option value="Physician">Physician</option>
<option value="Cardiologist">Cardiologist</option>
<option value="Pulmonary">Pulmonary</option>
</select>
<div id="my_div" style="display:inline;">
<!--content from getSpec.php goes here--->
</div>
require_once('dbcon.php');
$query="select doctorName from doctors where specialty= '$spec'";
$result=mysqli_query($conn,$query);
?>
<select name="docName">
<?php
while( $row = mysqli_fetch_row($result)) {
echo "<option type='hidden' value='$row[0]'>$row[0]</option>";
} ?>
</select>