如何根据优先选择下拉列表填充选择下拉列表

时间:2018-08-03 14:55:05

标签: javascript php jquery html mysqli

我读过许多与此相关的文章,包括https://www.9lessons.info/2010/08/dynamic-dependent-select-box-using.htmlhttp://blog.chapagain.com.np/using-jquery-ajax-populate-selection-list/

但这对我不起作用,我也不知道为什么。

HTML

div class="col-sm-6">
                        <label for="selectComplvl" class="regions" >Region</label></div>
                    <div class="col-sm-6">
                      <select class="form-control levelbox" id="region" value="" name="region">
                        <option value="base">---Select---</option>
                        <?php
                          $region_sql = "SELECT * FROM `regions`";
                          $region_res = mysqli_query($con, $region_sql);
                          if(mysqli_num_rows($region_res) > 0){
                             while($region_row = mysqli_fetch_array($region_res)){
                                  echo "<option value='".$region_row[id]."'>".$region_row[region]."</option>";
                              } 
                          }

                        ?>

                      </select>
                      <div class="help-block with-errors"></div>
                    </div>
                  </div>
                </div>

                <div class="form-group col-sm-3">
                  <div class="row">
                    <div class="col-sm-6">
                        <label for="compEntered" class="comp">compeition Entered</label></div>
                    <div class="col-sm-6">
                      <select class="form-control" id="compEntered" name="compEntered">
                        <option value="base">Please choose a Region</option>

                      </select>
                      <div class="help-block with-errors"></div>
                    </div>
                  </div>
                </div>
            </div>

getcomp.php

<?php
if($_POST['id'])
{
$id=$_POST['id'];
$sql=mysqli_query("select * from comp_entered where region_id='$id'");
while($row=mysqli_fetch_array($sql))
{
    echo '<option value="'.$row['region_id'].'">'.$row['comp_entered'].'</option>';
}
}
?>

JS

$(document).ready(function(){ 
$("#region").change(function()

                                             {
                            var id=$(this).val();
                            var dataString = 'id='+ id;
                            $.ajax
                            ({
                                type: "POST",
                                url: "getcomp.php",
                                data: dataString,
                                cache: false,
                                success: function(html)
                                {
                                    $("#compEntered").html(html);
                                }
                            });
                        });
});

TABLE区域

| id | 区域 |

| 1 |中美洲|

| 2 |大西洋中部|

| 3 |美国南部|

TABLE comp_entered

| id | region_id | comp_entered |

| 1 | 1 | compA |

| 2 | 1 | compB |

| 3 | 2 | comp C |

| 4 | 2 | compD |

| 5 | 3 | comp E |

| 6 | 3 | comp F |

我的代码有什么问题?使这项工作最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

我发现了我的问题!感谢Jordan指出我应该检查我的错误日志!!问题出在我的getcomp.php文件中。

如果有人遇到类似问题,我会在这里发布答案。

这是正确的代码:

if($_POST['id'])
{
$id=$_POST['id'];
$sql= "select * from comp_entered where region_id='$id'";
$res= mysqli_query($con, $sql);
while($row=mysqli_fetch_array($res))
{
    echo '<option value="'.$row['region_id'].'">'.$row['comp_entered'].'</option>';
}
}
?> 

再次感谢乔丹