Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

294
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda