¿Como contar los resultados de un parametro?

Iniciado por josfed, 13 Marzo 2018, 04:56 AM

0 Miembros y 1 Visitante están viendo este tema.

josfed

Código (php) [Seleccionar]
<?php 

  
require 'jpgraph/src/jpgraph.php';
  require 
'jpgraph/src/jpgraph_bar.php';


 
$conexion mysql_connect("localhost","root","");
  
mysql_select_db("enerinco_control_documentos",$conexion);  

  
mysql_query("SET NAMES 'utf8'");

            
$sentencia="SELECT * FROM documento";
            
$resultado=mysql_query($sentencia);

            
$fecha date("Y-m-d");
            
$contador 0;
            while(
$filas=mysql_fetch_assoc($resultado))
            {
              
                      if (
$filas['fecha_limite_atencion'] > $fecha) {
                              
                              
$status "En tiempo";

                                                                 
                                      } else if (
$filas['fecha_limite_atencion']==$fecha) { 

                                                    
$status "En limite de tiempo";
                                                                                            

                                      } else if (
$filas['fecha_limite_atencion'] < $fecha) {

                                                      
$status "Fuera de limite de tiempo";                                                                                                        
                                                                                                       
                      }


                      
$cantidad['fecha_limite_atencion']= count($filas['fecha_limite_atencion']);
                      echo 
$status " " $cantidad['fecha_limite_atencion'];                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                      echo 
"<br>";
          } 

 
?>


Buenas noches amigos, estoy iniciando en el mundo de la programacion y tengo un problemita, necesito crear una grafica para medir los status de unos registros pero, en la tabla no existen los estatus, ni se pueden crear tan facilmente ya que usaron el Grocery Crud para el codigo, por lo que, solo podemos trabajar con la fecha limite de atencion de cada registro que esta creado en la tabla de la BD. Hice mi consulta de las fechas y le meti condiciones para identificar cada registro por status, no se si sea la mejor forma, el detalle es que al mandar a imprimir en pantalla me imprime todos los registros y yo solo requiero que me imprima el total de cada status.

Esto es lo que me imprime en pantalla:
Fuera de limite de tiempo: 1
En tiempo: 1
En tiempo: 1
En tiempo: 1
Fuera de limite de tiempo: 1


Lo que deseo que me imprima es de la siguiente forma:
Fuera de limite de tiempo: 2
En tiempo: 3


Espero me puedan apoyar, muchas gracias por su atencion.








· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

Penguin

Claro, es que los mensajes están dentro de un while y al ser un condicional, mientras se cumpla la condición que propone entre () el mensaje se repite en forma de bucle. En lugar de mostrar un mensaje, deberías almacenar el valor en una variable e ir incrementándolo, algo así:

Código (php) [Seleccionar]

$a = 0; // Variable para "En tiempo"
$b = 0; // Variable para "En limite de tiempo"
$c = 0; // Variable para "Fuera de limite de tiempo"
while($filas=mysql_fetch_assoc($resultado))
           {

                     if ($filas['fecha_limite_atencion'] > $fecha) {

                            $a++;


                                     } else if ($filas['fecha_limite_atencion']==$fecha) {

                                                   $b++;


                                     } else if ($filas['fecha_limite_atencion'] < $fecha) {

                                                     $c++;                                                                                                        

                     }
echo "En tiempo: $a \n";
echo "En limite de tiempo: $b \n";
echo "Fuera de limite de tiempo: $c \n";


No recuerdo si el salto de línea funcionaba así en php, pero cualquier cosa modifica los \n por clásicos <br> de html.

josfed

Buenos días amigo, gracias si funciona bien el codigo que mandaste....


Ahora tengo otro problemita, este codigo lo quiero adaptar al highcharts para hacer unas graficas, pero me pide dos parametros que seria el de status y el de las variables a, b y c. como puedo meter a un parametro las variables (a,b yc) y los status 1,2 y 3? esto para que solo me queden los dos parametros que require el codigo de highcharts


            $a = 0; // Variable para "En tiempo"
            $b = 0; // Variable para "En limite de tiempo"
            $c = 0; // Variable para "Fuera de limite de tiempo"

            while($filas=mysql_fetch_assoc($resultado))
                        {
             
                                  if ($filas['fecha_limite_atencion'] > $fecha) {
             
                                              $a++;
                                              $status1 = "En tiempo: ";
             
             
                                         } else if ($filas['fecha_limite_atencion']==$fecha) {
             
                                              $b++;
                                              $status2 = "En limite de tiempo:";
             
             
                                         } else if ($filas['fecha_limite_atencion'] < $fecha) {
             
                                              $c++;
                                              $status3 = "Fuera de limite de tiempo: ";                                                                                                       
                                             
                                  }

                        }           
           
            echo $status1 . $a;
            echo "<br>";

            echo $status2 . $b;
            echo "<br>";
           
            echo $status3 . $c;




Gracias por tu atencion.

Penguin

A ver si entiendo: necesitar dibujar esos 3 datos en un gráfico, utilizando alguna función de highcharts que te pide dos parámetros? Por ejemplo: highcharts(parametro1, parametro2)

De ser así, necesitaría ver cuál es el código fuente de la función highcharts() para poder ayudarte. Ya que la misma en sí, debe inicializar el gráfico y con otra, graficar. Imagino debe usar POO o algo por el estilo.

josfed

Buenas tardes amigo, asi es, te mando el codigo donde se manda llamar la grafica, en esta linea es donde se agregan los ragos: ['<?php echo $status; ?>', <?php echo $a, $b, $c ?>],




<?php
            require_once("conexion/conexion.php");

?>

<!DOCTYPE HTML>
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Highcharts Example</title>

      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
      <style type="text/css">
${demo.css}
      </style>
      <script type="text/javascript">
$(function () {
    $('#container').highcharts({
        chart: {
            plotBackgroundColor: null,
            plotBorderWidth: null,
            plotShadow: false
        },
        title: {
            text: 'VISTA DE STATUS DE DOCUMENTOS DE ENTRADA'
        },
        tooltip: {
            pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
        },
        plotOptions: {
            pie: {
                allowPointSelect: true,
                cursor: 'pointer',
                dataLabels: {
                    enabled: true,
                    format: '<b>{point.name}</b>: {point.percentage:.1f} %',
                    style: {
                        color: (Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black'
                    }
                }
            }
        },
        series: [{
            type: 'pie',
            name: 'Documentos de entrada',
            data: [
         
         <?php
         
            $sentencia="SELECT * FROM documento";
            $resultado=mysql_query($sentencia);

            $fecha = date("Y-m-d");
            $a = 0; // Variable para "En tiempo"
            $b = 0; // Variable para "En limite de tiempo"
            $c = 0; // Variable para "Fuera de limite de tiempo

            while($filas=mysql_fetch_assoc($resultado))
                        {
             
                                  if ($filas['fecha_limite_atencion'] > $fecha) {
             
                                              $a++;
                                              $status = "En tiempo: ";
             
             
                                         } else if ($filas['fecha_limite_atencion']==$fecha) {
             
                                              $b++;
                                              $status = "En limite de tiempo:";
             
             
                                         } else if ($filas['fecha_limite_atencion'] < $fecha) {
             
                                              $c++;
                                              $status = "Fuera de limite de tiempo: ";                                                                                                       
                                             
                                  }               
         ?>
         
                ['<?php echo $status; ?>', <?php echo $a, $b, $c ?>],

         
         <?php
         
            }

         ?>   

            ]
        }]
    });
});


      </script>
   </head>
   <body>
<script src="Highcharts-4.1.5/js/highcharts.js"></script>
<script src="Highcharts-4.1.5/js/modules/exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; max-width: 600px; margin: 0 auto"></div>
<br><br>

<!--<center><a href="ejemplo2.php">Ver ejemplo 2</a></center>-->

   </body>
</html>

Penguin

No, esa línea lo único que hace es imprimir en pantalla el resultado del conteo. Usa una API de JQuery en GoogleDocs, pero la misma está offline,
De todas formas amigo y con la mejor buena onda, te comento que en los foros se ayuda a los programadores que tienen problemas con sus códigos, no se realizan trabajos.

josfed

Ok amigo, entiendo, gracias por tu ayuda.