php - CodeIgniter 和 Google 图表 - 基于 mysql 值的下拉列表

标签 php mysql drop-down-menu google-visualization codeigniter-3

我正在使用 code igniter、google charts 以及 php 和 MySQL 来显示图表。它使用固定查询工作。我正在尝试添加一个下拉列表以根据选择的选项(sql 列“status”)显示图表 这是我到目前为止所拥有的。我如何修改它以接受下拉值?

模型.php

public function get_chart_data()  
{
    $query = $this->db->get($this->db_mgmt);
    $this->db->select('rating, COUNT(rating) AS Count');
    $this->db->from('db_mgmt');
    $this->db->where('status =', $status);
    $this->db->group_by('rating'); 
    $query = $this->db->get();
    $results['chart'] = $query->result();
}

Controller .php

$this->load->model('model', 'chart');
public function index() {
        $results = $this->chart->get_chart_data();
        $data['chart'] = $results['chart'];
        $this->load->view('index.php', $data);
}

view.php

<?php 
foreach ($chart as $object) {
$open_all[] = "['".$object->rating."', ".$object->Count."]";
}
?>

  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart_open);

   function drawChart_open() {
    // Create the data table.
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Rating');
    data.addColumn('number', 'Count');
    data.addRows([
    <?php echo implode(",", $open_all);?>
    ]);

    var options = {
      pieSliceText: 'value-and-percentage',
    };

    var chart = new google.visualization.PieChart(document.getElementById('open_div'));
    chart.draw(data, options);

  }

  <div id="open_div" class="chart"></div>

提前致谢!

更新:

我已经使用 ajax 尝试了以下方法,但它似乎不起作用。我绝对确定我在这里做错了什么,但不确定在哪里。在 chrome 中使用 Inspect 也不会出现任何错误。

模型.php

public function fetch_result($status)  
  {
    $query = $this->db->get($this->db_mgmt);
    $this->db->select('rating, COUNT(status) AS Status_Count');
    $this->db->from('db__mgmt');
    $this->db->where('status =', $status);
    $this->db->group_by('rating'); 
    $query = $this->db->get();
    return $query;
  }

Controller .php

$this->load->model('model', 'chart');
public function mychart() {

if(!empty($_POST["val"])) {
    $val=$_POST["val"];
    $result_new=$this->chart->fetch_result($val);

    $array = array();
    $cols = array();
    $rows = array();
    $cols[] = array("id"=>"","label"=>" Rating","pattern"=>"","type"=>"string");
    $cols[] = array("id"=>"","label"=>"Count","pattern"=>"","type"=>"number");  

    foreach ($result_new as $object) {
      $rows[] = array("c"=>array(array("v"=>$object->risk_rating,"f"=>null),array("v"=>(int)$object->Status_Count,"f"=>null)));
   }

    $array = array("cols"=>$cols,"rows"=>$rows);
    echo json_encode($array);

    }

}

view.php

function drawChart_open_all(num) {         
    var PieChartData = $.ajax({
    type: "POST",
    url: "<?php echo base_url(); ?>" + "dashboard/chart/mychart",
    data:'val='+num,
    dataType:"json"
    }).responseText;

    alert(PieChartData);


    // Create the data table.
    var data = new google.visualization.DataTable(PieChartData);
    var options = {
              pieSliceText: 'value-and-percentage',       
    };

    var chart = new google.visualization.PieChart(document.getElementById('open_new'));
    chart.draw(data, options);

  }

<div><span> <b>Pie Chart<br /><br /></span></div>
<form>
  <select name="status" onchange="drawChart_open_all(this.value)">
<option value="WIP">WIP</option>
<option value="Close">Close</option>
  </select>
</form>
<div id="open_new" class="chart"></div>

提前致谢!

最佳答案

认为最简单的方法是发送带有 <option> 的 GET 请求值(value)

首先,回到您的第一个版本。

接下来,发送您的 onchange 中的值事件

function drawChart_open_all(num) {
  location = "<?php echo base_url(); ?>" + "dashboard/chart/mychart?option=" + num;
}

然后在模型中——
get_chart_data()

您应该能够使用 --
访问该值 $_GET['option']

用它来修改你的查询

这是一个具有类似概念的旧答案——不同之处在于它使用 POST 与 GET
和一个 <form><input type="submit">发送请求的按钮
How to pass JavaScript variables to PHP?

关于php - CodeIgniter 和 Google 图表 - 基于 mysql 值的下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36103152/

相关文章:

html - 导航菜单未正确下拉

php - CSS-检查并在 li 有 ul 的地方添加右箭头

PHP/MySQL : Combine UPDATE queries?

php - 检查网站上是否加载了我的 javascript

php - MySQLi 更新查询问题

mysql - 如何根据数据库用户信息动态启用/禁用 ToolStripMenuItem?

javascript - 如何防止在提交表单时 <form action ="process-form.php"> 中声明的文件向用户显示结果?

php - 为什么 mysql order by 关键字不能按预期与 GROUP by 关键字一起工作?

mysql - 如果一列有多个逗号分隔值,我如何过滤 mysql 数据?

javascript - 从 select 标签内的 ng-change 中的选项获取 $index