Foros del Web » Programando para Internet » Javascript »

Problema con graficos en tiempo real

Estas en el tema de Problema con graficos en tiempo real en el foro de Javascript en Foros del Web. Buenas Tardes Amigos: Estoy intentando crear un gráfico con valores en tiempo real tomados de una Base de datos. El script que estoy usando es ...
  #1 (permalink)  
Antiguo 05/09/2011, 12:20
 
Fecha de Ingreso: septiembre-2011
Ubicación: Maturin
Mensajes: 13
Antigüedad: 12 años, 7 meses
Puntos: 0
Problema con graficos en tiempo real

Buenas Tardes Amigos:
Estoy intentando crear un gráfico con valores en tiempo real tomados de una Base de datos. El script que estoy usando es de una libreria creada por Emprise Javascript Charts.

Al cargar la primera vez, el grafico muestra el valor real de la base de datos, sin embargo, no se actualiza cada vez que se recarga la funcion "updateSeries" y el primer valor tomado de la tabla se mantiene, aunque en la tabla cambie.
Creo que el problema esta relacionado con que PHP no se puede ejecutar dentro de javascript, previendo esto, decidi crear las etiquetas javascript como si fueran un echo de PHP, como verán en el codigo que les envio.
Alguien podria ayudarme a detectar la causa de porque no se actualiza el grafico o a encontrar una mejor manera de hacerlo?...
Muchas Gracias de Antemano
Saludos

Código PHP:
<?php
include "opendb.php";
?>

<html>

<head>
   <script type="text/javascript" src="dist/EJSChart.js"></script>
</head>

<body>
   <div id="myChart" style="width:900px; height:330px;"></div>
<?php

echo "<script type='text/javascript'>
 
   var chart = new EJSC.Chart('myChart',
      {
       show_legend: false,
      show_messages: false,
       axis_bottom: { caption: 'Timestamp', formatter: new EJSC.DateFormatter({ format_string: 'HH:NN:SS' }) },
      axis_left: { caption: 'Random Value' },
        allow_zoom: false
     }
    );
  
  var myData = new Array();
  
     // Populate array
    var x = (new Date()).getTime() - 101000;
     var y = <?php echo $pres_casing; ?>;

    for (var i = 0; i < 100; i++) {
      x += 1000;
      y = Math.floor(Math.random() * 100);
      myData.push([x, y]);
    }
    
     // Add a new line series and save a reference
    var myLineSeries = chart.addSeries(new EJSC.LineSeries(
   new EJSC.ArrayDataHandler( myData )
    ));
  
  function updateSeries() {
      
       // Remove the first element
     myData.splice(0,1);
    
     // x = current time
     x = (new Date()).getTime();
   
     // Generate another random Y value"
;

    
$query='SELECT p_casing FROM tab_pirital WHERE nombre = 'SBC_54' ORDER BY id DESC';
    
$result pg_query($query);
    while (
$row pg_fetch_assoc($result)) 
    {
            
$p_casing     =      $row['p_casing']; 
    }

echo 
"y = $p_casing
    
      // Append a new point
   myData.push([x, y]);
     
     // Give the new data to the ArrayDataHandler
    myLineSeries.getDataHandler().setArray(myData);
    
      // Reload the series
      myLineSeries.reload();
    }
   
  // Run updateSeries() every second
   window.setInterval(updateSeries, 1000);
 </script>"
;

?>
</body>

</html>
  #2 (permalink)  
Antiguo 05/09/2011, 12:33
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Problema con graficos en tiempo real

Deberías hacer 2 cosas:
1-corregir tu código php, el cual tiene errores.
2-comprender bien las diferencias entre un lenguaje de servidor y un lenguaje de cliente para saber cómo y cuándo mezclarlos: http://www.forosdelweb.com/f91/que-o...t-html-613516/
  #3 (permalink)  
Antiguo 05/09/2011, 12:33
Avatar de DrFaust  
Fecha de Ingreso: septiembre-2011
Ubicación: Buenos Aires
Mensajes: 308
Antigüedad: 12 años, 7 meses
Puntos: 87
Respuesta: Problema con graficos en tiempo real

Una vez que PHP envía la página al cliente, se desentiende completamente de ella. La única forma en que la página puede comunicarse con el servidor para obtener datos en tiempo real es por medio de AJAX.

Básicamente, el cliente envía una petición al servidor cada cierto tiempo. Un script PHP en el servidor le devuelve los datos más nuevos cada vez.

No es difícil de implementar, especialmente si utilizás una librería como jQuery. Te recomiendo que le eches un vistazo.

El código del cliente (en JavaScript, utilizando jQuery, repitiéndose cada cierto tiempo con un setInterval) se vería más o menos así:

$.get("datosnuevos.php", function(data) {
// Acá va el código que actualiza el gráfico con los nuevos datos
});

El código del servidor (en PHP, en el archivo datosnuevos.php) sencillamente imprime la información actualizada, por ejemplo separada por comas.

jQuery incluso permite intercambiar datos en XML y JSON, lo cual facilita mucho su manipulación. Pegale una leída a algún tutorial al respecto.

Última edición por DrFaust; 05/09/2011 a las 12:42

Etiquetas: graficos, html, js, php, real
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:20.