Grafik görüntülemesi için kod ateşleyicisi, php ile php ve MySQL kullanıyorum. Sabit sorgu kullanarak çalışır. Ben ( seçti) seçeneği (sql sütun "durumu") dayalı grafik görüntülemek için bir açılan eklemek için çalışıyorum Şimdiye kadar var. Açılan değerleri kabul etmek için bunu nasıl değiştirebilirim?CodeIgniter ve Google grafikleri - açılan mysql değerlerine göre
model.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);
}
önceden 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>
teşekkürler!
GÜNCELLEME:
Ben ajax kullanarak aşağıda denedim ama çalışmak için görünmüyor. Eminim ki burada yanlış bir şey yapıyorum ama emin değilim. Inspect'in kromda kullanılması da herhangi bir hata vermez.
model.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);
}
}
önceden 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>
Teşekkür !!
bir [Gösterge Tablosu] (https://developers.google.com/chart/interactive kullanımı daha kolay olabilir Bir [CategoryFilter] (https://developers.google.com/chart/interactive/docs/gallery/controls#categoryfilter) ile kombinasyon halinde/docs/gallery/controls # dashboard) - google filtrelemeyi yapalım ... – WhiteHat
@WhiteHat Çözümü için çok teşekkürler t harika çalışıyor. Ayrıca, model.php'de farklı bir işlev çalıştırmak ve aynı grafikte görüntülemek için değeri göndermek isteyip istemediğimi sormak istedim. Örneğin, zaman değiştiyse, aynı tablonun farklı bir MySQL sorgusunu, aynı sütunlar için farklı bir değerler kümesini döndürecek şekilde çağırmak istedim. –
php'de değil, javascript'ten ajax kullanacağım - ama bir get isteği gönderebildiğiniz gibi görünüyor - ya da veriler çok büyük değilse, daha fazlasını ekleyin ve bir DateRangeFilter'de atınız ... – WhiteHat