Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

300
Views
Necesita crear un gráfico usando una tabla MySQL en CodeIgniter 3

Necesito hacer una tabla dinámica usando la siguiente tabla. No importa si es de ChartJS o Google Chart. Necesito tomar "Tipos de sangre" para el eje Y como etiquetas y para el eje X necesito tomar la cantidad de filas para cada tipo de sangre donde "está disponible" es igual a 1.

Mesa

Lo intenté de la manera anterior, obtiene los datos a la vista, pero necesita volver a escribir el código para cada tipo de sangre, por lo que no es muy eficiente. Necesito saber ¿hay alguna manera mejor?

Controlador

 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); }
over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Puede que esta no sea la solución más eficiente, pero seguro que hará bien el trabajo.

 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); $this->load->view('insight',$chartData); }

RECOMENDADO: También puedes probar algo como esto

 $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']; }

Por supuesto, aún puede usar el método query() y escribir manualmente sus consultas.

No he probado ninguno de estos, pero debería darle una idea de a dónde ir a continuación.

over 4 years ago · Santiago Trujillo Report

0

Esta es una solución mejor y más simple. Se evitó el uso de bucles php para obtener datos.

 public function bloodTypesChart() { $query=" SELECT BloodType as blood_type, COUNT(PacketID) as mycount FROM packets WHERE isAvailable = 1 GROUP BY blood_type "; $chartData = []; $blood_types = $this->db->query($query)->result_array(); foreach($blood_types as $row) { $chartData['label'][] = $row['blood_type']; $chartData['data'][] = $row['mycount']; } $chartData['chart_data'] = json_encode($chartData); $this->load->view('insight',$chartData); }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!