2009-08-21 20 views
12

Ciao io sto cercando di recuperare i dati dal database mysql per creare grafico flot qualcuno mi può camminare attraverso questa procedura o darmi un'idea di cosa fare grazierecuperare dati da mysql da PHP per creare grafico flot

+0

a che punto esattamente cosa hai bisogno di aiuto presumo si sa praticamente come estrarre i dati dal Banca dati? – JorenB

+0

ya so come estrarre i dati ma come creare il flot – Sarah

+0

Dopo aver recuperato l'array cosa dovrei fare – Sarah

risposta

21

Probabilmente vuoi qualcosa di simile. Non ho usato flot ma ho guardato l'esempio here.

<?php 
//create array of pairs of x and y values 
$dataset1 = array(); 
while ($row = mysql_fetch_assoc()) { //or whatever 
    $dataset1[] = array($row['xvalue'], $row['yvalue']); 
} 
?> 

<script type="text/javascript"> 
    //put array into javascript variable 
    var dataset1 = <?php echo json_encode($dataset1); ?>; 

    //plot 
    $(function() { 
     $.plot($("#placeholder"), [ dataset1 ]); 
    }); 
</script> 
+0

Ciao ho fatto come hai detto ma non funziona c'è un'eccezione $ dataset1 = array(); \t while ($ row = mysql_fetch_assoc ($ sql)) \t { \t \t $ dataset1 [] = array ($ row [ 'msgCount'], $ row [ 'group_id']); \t} echo json_encode ($ dataset1); jquery \t funzione plotGraph() { \t \t \t alert ("In corpo"); \t \t $ .ajax ({ \t \t \t url: "getData.php", \t \t \t tipo: "post", \t \t \t tipo di dati: "json", \t \t \t successo: la funzione (i dati) \t \t \t {alert (dati); \t \t \t $ .plot ($ ("# segnaposto"), [i dati]); \t \t}, \t \t \t errore: function() \t \t \t {alert ("C'è stato un problema");} \t \t}) \t} c'è qualcosa che manca – Sarah

+0

Hey Tom Questo esempio è stato davvero utile, ma ora sto affrontando un problema di gestione del null perché non è tracciato – Sarah

+0

@Sarah: Suppongo che potresti convertirli a zero - sia nella query e, g IFNULL (colName, 0) o nel tuo loop PHP mediante la fusione di ciascun valore a un intero. –

0

Questo dipende in gran parte dal tuo ambiente e dai tuoi requisiti. C'è un sacco di strumenti gratuiti là fuori che puoi usare. Un esempio è Flot che consente di utilizzare jQuery per creare grafici. C'è un link alla documentazione nella pagina del codice di Google.

2

Aggiunta sull'esempio da @Tom Haigh:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <title>Flot Examples</title> 
    <link href="layout.css" rel="stylesheet" type="text/css"> 
    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="../excanvas.min.js"></script><![endif]--> 
    <script language="javascript" type="text/javascript" src="../jquery.js"></script> 
    <script language="javascript" type="text/javascript" src="../jquery.flot.js"></script> 
</head> 
    <body> 
    <h1>Flot Examples</h1> 

    <div id="placeholder" style="width:600px;height:300px;"></div> 

<?php 

$server = "localhost"; 
    $user="user"; 
    $password="password"; 
    $database = "some_database"; 

    $connection = mysql_connect($server,$user,$password); 
    $db = mysql_select_db($database,$connection); 

query = "SELECT x_axis_values, y_axis_values FROM some_table"; 
    $result = mysql_query($query);   

    while($row = mysql_fetch_assoc($result)) 
    { 
     $dataset1[] = array($row['x_axis_value'],$row['y_axis_value']); 
    } 

?> 


<script type="text/javascript"> 
$(function() { 
    var dataset1 = <?php echo json_encode($dataset1); ?>; 

    $.plot($("#placeholder"), [ dataset1 ]); 
}); 
</script> 

</body> 
</html> 
+0

Came attraverso questo. Sto solo cercando di farlo funzionare. Penso che manchi un '$' di fronte a 'query'. Anche la variabile '$ db' è referenziata una sola volta. È giusto? Quanto sopra non si propagherà comunque. Mi piacerebbe un po 'di aiuto :) –

2

come @ Tom Haigh dicono funzionano bene, ma è necessario aggiungere un altro codice per lavorare bene, stavo usando l'esempio, ma scopro in il codice sorgente è aggiungere al risultato cita "in modo da evitare questo basta aggiungere il: intval alla matrice, ad esempio:?

<?php 
$query = "SELECT valx, valy FROM chart"; 
    $result = mysql_query($query);   

    while($row = mysql_fetch_assoc($result)) 
    { 
     $d2[] = array (intval($row['valx']),intval($row['valy'])); 
    } 
?> 
Problemi correlati