如何在Codeigniter中创建动态链式下拉列表

业力

我想在codeigniter中创建多个下拉列表,在我的情况下,当用户选择国家/地区时,下一个列表应提供该国家/地区的州选项,而在用户选择州/省之后,下一部分应提供城镇选项等。希望使用某些脚本提供列表或选项,并且当用户最终完成选择时,应在数据库中更新列表。是否可以通过使用脚本而不是从数据库中加载选项来提供选项列表。这是我要在其上实现动态下拉列表的视图和模型文件

form_model.php

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);

}

view.php

 <label> ID:<span id="r_id" style="font-size:12px;float:right;"></span></label>
     <input type="text" name="id" id="r_id" placeholder="ID" required/>    

     <label >Name:</label>
     <input type="text" name="name"  placeholder="Name" required/>

     <label >Country:</label>
     <select name="country" >
         <option>Select Country</option>
         <option value="USA">USA</option>
         <option value="AUS">Austrailia</option>
         <option value="Jap">Japan</option>
         <option value="Korea">Korea</option>
     </select><br/><br/>                                

     <label >State:</label>
     <input type="text" name="state" placeholder="State" required/>

     <label >City:</label>
     <input type="text" name="city" placeholder="City" required/>
     <label >Town:</label>
     <input type="text" name="town" placeholder="Town" required/>         

     <input type="submit" value="Save" id="re_submit" class="button"><br/>

 </form>
Gokigooooks
  1. 如果您希望下拉菜单的内容是动态的,那么我相信如果不通过指定查询来访问数据库就无法实现这一点。
  2. 根据我对您的问题的理解,您需要一个动态下拉菜单,其中的内容由其之前的下拉菜单过滤。那么最好的选择是使用AJAX,因为PHP仅能运行服务器访问功能而无需POSTGET,而这需要刷新页面。

这是一个ajax演示

<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>

这就是魔术发生的地方。在我的第一个下拉菜单中,我放置了一个onChange属性。这将调用我的getDoc javascript函数,该函数具有PHP FUNCTION作为参数。

    <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>

现在,您需要HTML中的DIV,该DIV可以从另一个页面获取数据,然后以DOM形式将其返回到当前页面中。这样,您的原始页面不会刷新,但仍会从服务器获取数据。


getSpec.php以显示在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> 

我希望这段代码对您有所帮助。您可以根据自己的需要进行调整。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在同一表的Codeigniter中创建动态/链接下拉列表

如何在 Excel 中创建动态下拉列表

如何在angularjs中创建动态下拉列表

如何在Laravel中创建简单的动态下拉列表?

如何在jQuery中创建动态多级下拉列表

如何在PHP中创建动态下拉列表?

如何在Laravel Blade中创建动态生成的下拉列表

如何在codeigniter中创建动态菜单

如何在React中使用Formik创建动态下拉列表?

如何在带有文字和角度的动态下拉列表中创建“子菜单”?

如何在R中创建链式均值?

如何在Python中创建动态列表?

如何在Codeigniter的下拉列表中删除索引号?

如何在 PHP 的动态下拉列表中显示选定的值

如何在Angular FormArray中动态绑定ngSelect下拉列表

如何在AngularJS中删除动态创建的下拉选项?

如何在 Angular 8 中创建动态下拉菜单

如何在动态添加的表行中创建级联下拉列表并保存在数据库中

如何从嵌套对象创建动态下拉列表

如何获得动态创建的下拉列表的价值?

您如何在 Google Sheets App Script 中创建第二个动态依赖下拉列表?

如何在Codeigniter中创建动态站点地图

如何在Django表单中创建从属下拉列表?

如何在Javascript / HTML中创建级联下拉列表?

如何在Razor语法中创建静态下拉列表?

如何在使用模板的Word文档中创建下拉列表?

如何在垂直导航栏中创建下拉列表

如何在 ASP.Net MVC 中创建下拉列表

如何在特定数据的 foreach 中创建下拉列表