我需要使用下表制作一個動態表。無論是來自 ChartJS 還是 Google Chart 都沒有關系。我需要將 Y 軸的“血型”作為標簽,而對于 X 軸,我需要為“isAvailable”等于 1 的每種血型取行數。
桌子
我嘗試了上述方式,它將資料獲取到視圖中,但需要為每種血型重寫代碼,因此效率不高。我需要知道有沒有更好的方法?
控制器
public function bloodTypesChart()
{
$query = $this->db->query("SELECT COUNT(PacketID) as count,(BloodType) as blood_type FROM packets WHERE (isAvailable) = '1'");
$packetCount = $this->db->count_all_results();
$record = $query->result();
$chartData = [];
foreach($record as $row) {
$chartData['label'][] = 'O ';
$chartData['data'][] = $packetCount;
}
$chartData['chart_data'] = json_encode($chartData);
$this->load->view('insight',$chartData);
}
uj5u.com熱心網友回復:
這可能不是最有效的解決方案,但它肯定會為您完成作業。
public function bloodTypesChart()
{
$totalPackets = $this->db->count_all_results();
$chartData = [];
$blood_types = $this->db->query("SELECT (BloodType) as blood_type FROM packets WHERE (isAvailable) = '1' GROUP BY blood_type")
->result_array();
foreach($blood_types as $bt)
{
$record = $this->db->query("SELECT COUNT(PacketID) as count FROM packets WHERE BloodType = '{$bt['blood_type']}'")
->result_array();
foreach($record as $row) {
$chartData['label'][] = $bt['blood_type'];
$chartData['data'][] = $row['count'];
}
}
}
$chartData['chart_data'] = json_encode($chartData, JSON_FORCE_OBJECT);
$this->load->view('insight',$chartData);
推薦:你也可以試試這樣的
$record = $this->db->from('packets')
->select('count(PacketID) count, BloodType blood_type')
->group_by('blood_type')
->get()
->result_array();
foreach($record as $row) {
$chartData['label'][] = $row['blood_type'];
$chartData['data'][] = $row['count'];
}
當然,您仍然可以使用 query() 方法并手動撰寫查詢。
我沒有測驗過任何這些,但它應該讓你知道下一步要去哪里。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/386892.html
標籤:php mysql 代码点火器 codeigniter-3
上一篇:如何根據條目制作列通配符?
