Php 带有数据库数据的Codeigniter级联下拉列表
我需要帮助制作一个包含数据库数据的级联下拉列表 我找到了一个关于这个的教程 和 我试过这个 控制器:Php 带有数据库数据的Codeigniter级联下拉列表,php,jquery,codeigniter,Php,Jquery,Codeigniter,我需要帮助制作一个包含数据库数据的级联下拉列表 我找到了一个关于这个的教程 和 我试过这个 控制器: function ajax_call() { if(!empty($_POST['table'])){ if ($_POST) { $table = $_POST['table']; $arrYear = $this->my_model->get_categories($table); f
function ajax_call() {
if(!empty($_POST['table'])){
if ($_POST) {
$table = $_POST['table'];
$arrYear = $this->my_model->get_categories($table);
foreach ($arrYear as $years) {
$arrFinal[$years->category2 = $years->category2;
}
echo "<p>2nd Category:<br>";
echo form_dropdown('year',$arrFinal);
echo "</p><br>";
}
else
{
echo "<p>2nd Category:<br>";
echo form_dropdown('year','');
echo "</p><br>";
}
}
}
我唯一的问题是,第二个下拉列表在加载时在页面上不可见,只有在我选择第一个下拉列表时才会出现
如何使其显示在页面上而不在第一个下拉列表中选择?
有人能帮忙吗?之所以会发生这种情况,是因为只有在表更改
$('#table').change(function(){…})
后才会触发用于填充表的ajax调用。尝试在不等待更改的情况下填充表;可能在$(document.ready(function(){…})
中,您在代码中添加了一个完全过时的if($\u POST)
。您已经在检查$\u POST中是否存在一个变量,因此在此之后它永远不能为空。这导致ELSE语句与第二个IF相关,而不是第一个IF
function ajax_call() {
if(!empty($_POST['table'])){
$table = $_POST['table'];
$arrYear = $this->my_model->get_categories($table);
foreach ($arrYear as $years) {
$arrFinal[$years->category2 = $years->category2;
}
echo "<p>2nd Category:<br>";
echo form_dropdown('year',$arrFinal);
echo "</p><br>";
}
else
{
echo "<p>2nd Category:<br>";
echo form_dropdown('year','');
echo "</p><br>";
}
}
函数ajax\u call(){
如果(!空($_POST['table'])){
$table=$_POST['table'];
$arrYear=$this->my\u model->get\u categories($table);
foreach($年为$年){
$arrFinal[$years->category2=$years->category2;
}
回声“第二类:
”;
echo form_下拉列表(年份,$arrFinal);
回声“
”;
}
其他的
{
回声“第二类:
”;
回音表单_下拉列表('年','');
回声“
”;
}
}
这就是为什么你应该总是正确地缩进你的代码。好的,我不知道怎么做我想做的。所以我搜索了互联网的深层次,找到了我真正需要的这个小教程
我如何做到这一点?您好,先生,谢谢您的回复,我尝试了您的代码,但没有。当我选择一个空值选项时,它会导致Php错误,然后修改脚本以处理这些错误。如果您正在使用Php,我只能假设您在尝试这些内容之前至少做了一些教程。如果您演示如何使用drop do,会更好乌尔湾views@danielad或者……只需转到并查看
表单下拉列表()
的详细说明和示例(这确实是codeigniter文档)
<script type="text/javascript">
$(document).ready(function(){
$('#table').change(function(){
var selTable = $(this).val(); // selected name from dropdown #table
$.ajax({
url: "ajax_call", // or "resources/ajax_call" - url to fetch the next dropdown
async: false,
type: "POST", // post
data: "table="+selTable, // variable send
dataType: "html", // return type
success: function(data) { // callback function
$('#year').html(data);
}
})
});
});
</script>
function get_categories($table) {
$this->db->select('category2')->from($table);
$query = $this->db->get();
return $query->result();
}
function ajax_call() {
if(!empty($_POST['table'])){
$table = $_POST['table'];
$arrYear = $this->my_model->get_categories($table);
foreach ($arrYear as $years) {
$arrFinal[$years->category2 = $years->category2;
}
echo "<p>2nd Category:<br>";
echo form_dropdown('year',$arrFinal);
echo "</p><br>";
}
else
{
echo "<p>2nd Category:<br>";
echo form_dropdown('year','');
echo "</p><br>";
}
}