动态下拉列表不起作用

0mkxixxg  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(545)

我试着做一个动态下拉,当在医生下拉列表中选择任何多边形选项时,总是出现同一个医生。
这是动态下拉的代码

  1. <div class="form-group">
  2. <label>Poly : </label>
  3. <select name="poly" id="poly" class="form-control" style="width: 50%">
  4. <option disabled selected>--Choose Poly--</option>
  5. <?php
  6. $sqql = mysqli_query($kon,"SELECT * FROM poly") or die(mysqli_error($kon));
  7. while ($rorow = mysqli_fetch_array($sqql)) {
  8. ?>
  9. <option value="<?php $rorow['id_poly'];?>"><?php echo $rorow['poly']; ?></option>
  10. <?php
  11. }
  12. ?>
  13. </select>
  14. </div>
  15. <div class="form-group">
  16. <label>Doctor : </label>
  17. <select name="doctor" id="doctor" class="form-control" style="width: 50%">
  18. <option disabled selected>--Choose doctor--</option>
  19. </select>
  20. </div>

这是ajax的代码

  1. <script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"> </script>
  2. <script type="text/javascript">
  3. $(document).ready(function(){
  4. $("#poly").change(function(){
  5. var id_poly = $(this).val();
  6. $.ajax({
  7. url:"getdoctor.php",
  8. method:"POST",
  9. data: {id_poly:id_poly},
  10. success:function(data)
  11. {
  12. $("#doctor").html(data);
  13. }
  14. });
  15. });
  16. });
  17. </script>

这是getdoctor.php的代码

  1. $ouput ='';
  2. $dok = mysqli_query($kon,"SELECT * FROM doctor WHERE id_poly = '".isset($_POST["id_poly"])."'") or die(mysqli_error($kon));
  3. $output .= '<option value="" disabled selected>--Choose doctor--</option>';
  4. if (mysqli_num_rows($dok)>0){
  5. while ($row = mysqli_fetch_array($dok)) {
  6. $output .= '<option value="'.$row["id_doctor"].'">'.$row["doctor"].'</option>';
  7. }
  8. }
  9. echo $output;
qacovj5a

qacovj5a1#

不要尝试检查提交的值,并在同一步骤中将其注入到查询中。 isset() 是在构建查询之前执行的合理检查,以避免 Notice ,但它只能 true 或者 false . 这妨碍了你的查询。看看会发生什么。
发回html不像在循环中处理json对象以生成新的html那样干净。
以下是我未经测试的建议代码:
PHP:

  1. // connect with $kon
  2. $result[] = ["", "--Choose doctor--"];
  3. if (isset($_POST["id_poly"])) {
  4. if ($dok = mysqli_query($kon, "SELECT id_doctor, doctor FROM doctor WHERE id_poly = " . (int)$_POST["id_poly"]))
  5. while ($row = mysqli_fetch_assoc($dok)) {
  6. $result[] = [$row["id_doctor"], $row["doctor"]];
  7. }
  8. }
  9. }
  10. echo json_encode($result);

然后回到你的房间 success 功能:

  1. var doctor = $("#doctor");
  2. doctor.empty();
  3. for (var i = 0; i < data.length; ++i) {
  4. doctor.append('<option value="' + data[i][0] + '"' + (i ? "" : " disabled") + '>' + data[i][1] + '</option>');
  5. }
  6. ``` `(i ? "" : " disabled")` <--这是一个零/非零检查,因此只有第一个选项是 `disabled` .
展开查看全部

相关问题