» »

Kako ustvariti PHP graf iz MySQL podatkovne baze?

Kako ustvariti PHP graf iz MySQL podatkovne baze?

Črt9 ::

Živjo, rad bi ustvaril enostaven prikaz z grafom s pomočjo PHP-ja, podatke pa bi graf dobil iz že prej ustvarjene podatkovne baze. Zanima me, kateri je najlažji način?

Poskušal sem že z fusioncharts, a mi grafa ni uspelo ustvariti, piše da tip grafa ni podprt. Prosil bi, če mi svetujete

Stari89 ::

Glede na to, da govoriš o PHPju, sklepam, da nameravaš graf "renderirat" na serverju? Najlažji (ampak niti slučajno ne najboljši) način ti bo za vsak podatek narisat en div z višino (recimo
<div style="height: XYpx;">&nbsp;</div>
), ki je vrednost podatka. Nato vse skupaj oblečeš v ene lepe CSS style in si zmagal. Ena for-zanka, skupaj 10 minut dela.

Boljši način bi bil, da vse delaš z Javascriptom na clientu. PHP uporabiš lih tolk, da z GET requestom dobiš nazaj podatke iz baze, nakar vse poštima client. Tako (na prvi pogled) deluje tudi FusionCharts.

AJAX

LP

smacker ::

O PHPju govori, ker ne loči pojmov :D Podatki so v bazi, s PHPjom strežnik dostopa do baze. Želiš, da se prikažejo v brskalniku v uporabniku, torej potrebuješ ustrezno HTML kodo za izris grafa. Da ne odkrivaš tople vode, lahko uporabiš Javascript knjižnico, ki poskrbi za renderiranje grafa. Na rabiš se mučit z AJAXom, lahko v eni zahtevi vse nardiš. V PHPju nafilaš array data z objekti, ki imajo "label" in "value". Tak array lahko z json_encode funkcijo pretvoriš v niz(string) v formatu JSON. Potem pa v JS kodi, ta string izpišeš in pretvoriš v JS objekt:
<?php 
$res = mysql_query(...);
$chart_data = array();
while($obj = $res->fetch_object()){
   $record = new stdClass;
   $record->label = $obj->x;
   $record->value = $obj->y;
   array_push($chart_data, $record);
}
?>

<html>
<head>
<title>My first chart using FusionCharts Suite XT</title>
<script type="text/javascript" src="fusioncharts/js/fusioncharts.js"></script>
<script type="text/javascript" src="fusioncharts/js/themes/fusioncharts.theme.fint.js"></script>
<script type="text/javascript">
  FusionCharts.ready(function(){
    var revenueChart = new FusionCharts({
        "type": "column2d",
        "renderAt": "chartContainer",
        "width": "500",
        "height": "300",
        "dataFormat": "json",
        "dataSource":  {
          "chart": {
            "caption": "Monthly revenue for last year",
            "subCaption": "Harry's SuperMart",
            "xAxisName": "Month",
            "yAxisName": "Revenues (In USD)",
            "theme": "fint"
         },
         "data": JSON.parse(<?php echo json_encode($chart_data); ?>);
      }

  });
revenueChart.render();
})
</script>
</head>
<body>
  <div id="chartContainer">FusionCharts XT will load here!</div>
</body>
</html>

Zgodovina sprememb…

  • spremenil: smacker ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

jquery ajax problem

Oddelek: Izdelava spletišč
81391 (1013) miko22
»

[php] preverjanje online uporabnikov

Oddelek: Programiranje
261926 (1582) cobrica
»

Masterpage in jQuery(ajax call)

Oddelek: Programiranje
61211 (1039) hatchette
»

PHP ASP

Oddelek: Izdelava spletišč
352853 (2178) MrBrdo
»

java v javascript?

Oddelek: Programiranje
211988 (1691) boss-tech

Več podobnih tem