Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

303
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda