【问题标题】:show option count in dependent select在相关选择中显示选项计数
【发布时间】:2019-12-04 06:40:05
【问题描述】:

我想在选择框附近显示选项计数。以下代码显示了相关的选择框。 为了更清楚,我想按如下方式显示计数。

Province : 选择一个省份 (9) 区 : 选择一个区 (25)

如果选择了一个省份,则必须显示所选省份下的地区数量,并且必须显示地区名称作为选择选项。

下面是javascript代码

$('.act').change(function(){
      if($(this).val() != '')
      {
       var action = $(this).attr("id");
       var query = $(this).val();
       var result = '';
       if(action == "province")
       {
        result = 'district';
       }
       else if(action == "district")
       {
        result = 'ds';
       } 
       else if(action == "ds")
       {
        result = 'gn_div';
       }

       else if(action == "gn_div")
       {
        result = 'village';
       }
       $.ajax({
        url:"views/fetch.php",
        method:"POST",
        data:{action:action, query:query},
        success:function(data){
         $('#'+result).html(data);
        }
       })
    }
});

以下php代码用于获取所需记录

<?php
//fetch.php

require ('../config/dbconnection.php');

$a=0;

if(isset($_POST["action"]))
{

 $output = '';
 $count = '';
 if($_POST["action"] == "province")
 {
  $query = "SELECT * FROM `district` WHERE province_id= '".$_POST["query"]."' AND approved='1'";
 // echo $query;
  $result = mysqli_query($conn, $query);
  $output .= '<option value="">Select a District</option>';
  while($row = mysqli_fetch_array($result))
  {
    $output .= '<option value="'.$row["id"].'">'.$row["district_code"].': '.$row['name_english'].'</option>';
}
 }
 if($_POST["action"] == "district")
 {
  $query = "SELECT * FROM `divisional_secretariat` WHERE district_id = '".$_POST["query"]."' AND approved='1'";
  $result = mysqli_query($conn, $query);
  $output .= '<option value="">Select a Divisional Secretariat</option>';
  while($row = mysqli_fetch_array($result))
  {

   $output .= '<option value="'.$row["id"].'">'.$row["divisional_secretariat_code"].': '.$row['name_english'].'</option>';
  }
 }

 if($_POST["action"] == "ds")
 {
  $query = "SELECT * FROM `grama_niladhari_division` WHERE divisional_secretariat_id = '".$_POST["query"]."' AND approved='1'";
  $result = mysqli_query($conn, $query);
  $output .= '<option value="">Select a Grama Niladhari Division</option>';
  while($row = mysqli_fetch_array($result))
  {
   $output .= '<option value="'.$row["id"].'">'.$row["grama_niladhari_division_code"].': '.$row['name_english'].'</option>';
  }
 }

  if($_POST["action"] == "gn_div")
 {
  $query = "SELECT * FROM `village` WHERE grama_niladhari_division_id = '".$_POST["query"]."' AND approved='1'";
  $result = mysqli_query($conn, $query);
  $output .= '<option value="">Select a Village</option>';
  while($row = mysqli_fetch_array($result))
  {
   $output .= '<option value="'.$row["id"].'">'.$row["village_code"].': '.$row['name_english'].'</option>';
  }
 }
 echo $output;

}
?>

【问题讨论】:

    标签: php ajax


    【解决方案1】:

    您可以使用mysqli_num_rows 获取结果集中的行数。然后返回输出和行数。

    <?php
    
    require ('../config/dbconnection.php');
    
    $a = 0;
    
    if (isset($_POST['action'])) {
        $output = '';
        $count = 0;
    
        if ($_POST['action'] === 'province') {
            $query = "SELECT * FROM `district` WHERE province_id = '{$_POST['query']}' AND approved = '1'";
    
            $output = '<option value="">Select a District</option>';
    
            $result = mysqli_query($conn, $query);
    
            while($row = mysqli_fetch_array($result)) {
                $output .= '<option value="' . $row['id'] . '">' . $row['district_code'] . ': ' . $row['name_english'] . '</option>';
            }
        } elseif ($_POST['action'] === 'district') {
            $query = "SELECT * FROM `divisional_secretariat` WHERE district_id = '{$_POST['query']}' AND approved='1'";
    
            $output = '<option value="">Select a Divisional Secretariat</option>';
    
            $result = mysqli_query($conn, $query);
    
            while($row = mysqli_fetch_array($result)) {
                $output .= '<option value="' . $row['id'] . '">' . $row['divisional_secretariat_code'] . ': ' . $row['name_english'] . '</option>';
            }
        } elseif ($_POST['action'] === 'ds') {
            $query = "SELECT * FROM `grama_niladhari_division` WHERE divisional_secretariat_id = '{$_POST['query']}' AND approved='1'";
    
            $output = '<option value="">Select a Grama Niladhari Division</option>';
    
            $result = mysqli_query($conn, $query);
    
            while($row = mysqli_fetch_array($result)) {
                $output .= '<option value="' . $row['id'] . '">' . $row['grama_niladhari_division_code'] . ': ' . $row['name_english'] . '</option>';
            }
        } elseif ($_POST['action'] === 'gn_div') {
            $query = "SELECT * FROM `village` WHERE grama_niladhari_division_id = '{$_POST['query']}' AND approved='1'";
    
            $output = '<option value="">Select a Village</option>';
    
            $result = mysqli_query($conn, $query);
    
            while($row = mysqli_fetch_array($result)) {
                $output .= '<option value="' . $row['id'] . '">' . $row['village_code'] . ': ' . $row['name_english'] . '</option>';
            }
        }
    
        $count = mysqli_num_rows($result);
    
        echo json_encode([
            'output' => $output,
            'count' => $count
        ]);
    }
    

    您应该在 Javascript 中获得 json 响应:

    $('.act').change(function() {
        if ($(this).val() != '') {
            var action = $(this).attr('id');
            var query = $(this).val();
            var result = '';
    
            if (action === 'province') {
                result = 'district';
            } else if (action === 'district') {
                result = 'ds';
            } else if (action === 'ds') {
                result = 'gn_div';
            } else if (action === 'gn_div') {
                result = 'village';
            }
    
            $.ajax({
                url: 'views/fetch.php',
                method: 'POST',
                contentType: 'application/json;charset=utf-8',
                data: {action:action, query:query},
                success: function(data) {
                    data = JSON.parse(data);
                    $('#' + result).html(data.output);
    
                    /* Use data.count to get number of results returned */
                }
            });
        }
    });
    

    别忘了使用Prepared Statements

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      相关资源
      最近更新 更多