E-learn.ro
Panou utilizatori
Utilizator Parola
Creeaza cont nou    Recupereaza parola
Login
Newsletter
Introdu adresa ta de email
Inscrie-te
Inchide panoul de utilizatori
Add to Google

Tutoriale PHP

Descarca toolbar

Toolbar E-learn.ro Facebook Twitter

WEB DEVELOPMENT  /  PHP  /  Diverse (10)

Crearea dinamica a graficelor si tabelelor cu PHP si GDChart - Partea II

18.06.2009
Crearea dinamica a graficelor si tabelelor cu PHP si GDChart - Partea II

Daca lucrezi de ceva timp cu PHP, deja stii ca limbajul face ca generarea imagilor dinamice sa devina foarte simpla: extensia GD si cateva linii de cod PHP sunt tot ce ai nevoie pentru a crea imagini JPEG, GIF sau PNG de la zero.

Total vizualizari: 5434 5434 afisari   |   Comentarii  0   |   Rating   |   (2 voturi)   |   Timp necesar: 35 min 35 min   |   Nivel de cunostiinte necesar: Avansat  Avansat

Sursa:  Devzone.zend.com  
Autor:  Devzone.zend.com
Adauga la tutoriale favorit Adauga la tutoriale favorite
Pagina:
« 1 2
comenteaza printeaza

De ce sa te opresti aici? GDChart iti permite sa personalizezi culoarea fiecarei portiuni si a etichetelor si chiar sa evidentiezi una sau mai multe portiuni pentru un efect vizual accentuat. Iata un exemplu:

<?PHP
// initializeaza obiectul cu tipul de grafic
$gdc = new GDChart(GDChart::PIE_3D);
 
// adauga valori si etichete
$gdc->addValues(array(50, 30, 100, 20));
$gdc->setLabels(array('UK', 'US', 'Europe', 'India'));
 
// seteaza titlul
$gdc->title = 'ANNUAL SALES BY LOCATION';
 
// seteaza culori
$gdc->setColors(array(0xff0000,0x00ff00,0x0000ff,0xffff00));
$gdc->edgeColor = 0xff00ff;
 
// evidentieaza prima portiune
$gdc->setExplode(array(30,0,0,0));
 
// formateaza etichetele
$gdc->labelLine = true;
$gdc->labelDist = 25;
$gdc->labelSize = GDChart::FONT_SMALL;
$gdc->percentLabels = GDChart::LABEL_ABOVE;
$gdc->percentFmt = '%0.2f%%';
 
// genereaza si afiseaza graficul
header('Content-Type:image/png');
echo $gdc->out(300,200,GDChart::PNG);
?>

Ca si in exemplele anterioare, metoda setColors() accepta o serie de coduri de culoare (in format hexazecimal) corespunzatoare ariei de valori si seteaza fiecare portiune in culoarea respectiva. Marginile fiecarei portiuni pot fi in continuare evidentiate printr-o culoare diferita cu ajutorul atributului 'edgeColor' care este similar atributului 'lineColor' din exemplele precedente.

Etichetele care apar langa fiecare portiune pot fi personalizate cu ajutorul proprietatilor 'labelLine', 'labelDist' si 'labelSize'. Proprietatea 'labelLine' accepta o valoarea Booleana care indica daca fiecare portiune ar trebui legata de eticheta sa descriptiva printr-un scurt indicator, in timp ce proprietatea 'labelDist' defineste distanta dintre o portiune a diagramei si eticheta corespunzatoare. Dimensiunea fiecarei etichete poate fi ajustata in continuare prin proprietatea 'labelSize' care accepta oricare dintre dimensiunile de caractere mentionate anterior.

Mai este posibil si sa detasam una sau mai multe portiuni din diagrama pentru a le evidentia cu ajutorul metodei setExplode(). Aceasta metoda are ca parametru un array cu un numar de elemente egal cu numarul de portiuni din grafic. Fiecare valoare din acest array reprezinta distanta portiunii respective fata de centru; cu cat valoarea este mai mare, cu atat portiunea respectiva este mai departe de centru. In exemplul precedent, portiunea reprezentand UK a fost mutata spre exterior:

In final, nicio discutie cu privire la diagramele pie din GDChart nu ar fi completa daca nu s-ar mentiona metoda setMissing(), care iti permite sa "ascunzi" una sau mai multe portiuni ale graficului. Aceasta metoda accepta ca parametru un array de valori booleene corespunzatoare fiecarei portiuni din grafic. Cele carora le este asociata valoarea true vor fi ascunse. Iata un exemplu care ascunde portiunea pentru India:

<?PHP
// initializeaza obiectul cu tipul de grafic
$gdc = new GDChart(GDChart::PIE_3D);
 
// adauga valorile pentru portiuni si etichetele
$gdc->addValues(array(25, 15, 50, 10));
$gdc->setLabels(array('UK', 'US', 'Europe', 'India'));
 
// seteaza titlul
$gdc->title = 'ANNUAL SALES BY LOCATION';
 
// seteaza culorile
$gdc->setColors(array(0xff0000,0x00ff00,0x0000ff,0xffff00));
$gdc->edgeColor = 0xff00ff;
 
// seteaza portiunile ascunse
$gdc->setMissing(array(FALSE,FALSE,FALSE,TRUE));
 
// formateaza etichetele
$gdc->labelLine = true;
$gdc->labelDist = 25;
$gdc->labelSize = GDChart::FONT_SMALL;
$gdc->percentLabels = GDChart::LABEL_ABOVE;
$gdc->percentFmt = '%0.2f%%';
 
// genereaza si afiseaza graficul
header('Content-Type:image/png');
echo $gdc->out(300,200,GDChart::PNG);
?>

Si iata rezultatul:

Cautand raspunsuri

Acum ca ai vazut ce poate face extensia GDChart, sa analizam un exemplu practic. Sa presupunem ca detii un site Web cu multe articole si tutoriale si ca ai creat un cod PHP care inregistreaza cautarile efectuate de utilizatori intr-o baza de date. Sa mai presupunem si ca tabelul in care sunt salvate aceste interogari arata astfel:

mysql> DESC searchlog;
+---------------+-----------+------+-----+-
| Field         | Type      | Null | Key |
+---------------+-----------+------+-----+-
| id            | int(10)   | NO   | PRI |
| qry_str       | text      | NO   |     |
| qry_time      | timestamp | YES  |     |
| qry_num_rslts | int(10)   | NO   |     |
+---------------+-----------+------+-----+-
4 rows in set (0.04 sec)

Acum, nu ar fi frumos sa observam toate aceste date sumarizate frumos pe zile? Sigur ca ar fi si cu ext/gdchart, este extrem de usor! Iata codul:

<?PHP
// realizeaza conexiunea la baza de date cu msyqli
$mysqli = new mysqli("localhost", "user", "pass", "db");
if ($mysqli === false) {
  die("EROARE: Nu se poate conecta.". mysqli_connect_error());
}
// executa interogarea
// calculeaza numarul de inregistrari din fiecare zi pentru luna curenta
$sql = "SELECT COUNT(*) AS count, DATE_FORMAT(qry_time, '%d-%m-%y') 
AS date FROM searchlog WHERE MONTH(qry_time) = MONTH(NOW()) 
GROUP BY DATE_FORMAT(qry_time, '%d-%m-%y')";
$result = $mysqli->query($sql);
$data = array();
while($row = $result->fetch_object()) {
  $data['values'][] = $row->count;
  $data['labels'][] = $row->date;
}
$result->close();
 
// inchide conexiunea
$mysqli->close();
 
// initializeaza obiectul cu tipul de grafic
$gdc = new GDChart(GDChart::BAR);
 
// adauga valori
$gdc->addValues($data['values']);
 
// adauga etichetele pentru axa X
$gdc->setLabels($data['labels']);
 
// seteaza titluri
$gdc->title = 'QUERIES PER DAY';
$gdc->xtitle = 'DATE';
$gdc->ytitle = 'COUNT';
 
// genereaza si afiseaza grafic
header('Content-Type:image/png');
echo $gdc->out(300,200,GDChart::PNG);
?>

Nimic nu este prea complicat aici - scriptul se conecteaza la baza de date MySQL, executa o interogare GROUP BY care returneaza numarul de interogari efectuate in fiecare zi din luna curenta si returneaza rezultatul intr-un array. Acest array este apoi transmis ca parametru metodelor addValues() si setLabels(), fiind utilizat pentru a genera un grafic al interogarilor zilnice.

Iata un model de rezultat:

Dupa cum arata aceste exemple, extensia GDChart furnizeaza o metoda de transformare a datelor numerice in mod rapid si effcient in grafice si diagrame placute vederii. Nu uita de ea data viitoare cand vei avea de generat un grafic ... si spor la treaba!

Pagina:
« 1 2
comenteaza printeaza
Alte tutoriale PHP:
Noteaza acest tutorial
Rating tutorial
 
(2 voturi)
Pentru a nota acest tutorial, trebuie sa fii logat!
Posteaza un comentariu
Pentru a posta un comentariu, trebuie sa fii logat!
0 TOP UTILIZATORI* 0 0
Tutoriale scrise de claibornelara
claibornelara Rang utilizator claibornelara - Incepator
4430
Tutoriale scrise de mcuemica
mcuemica Rang utilizator mcuemica - Incepator
4330
Tutoriale scrise de ellarichards
ellarichards Rang utilizator ellarichards - Incepator
4295
Tutoriale scrise de emonclercheap
emonclercheap Rang utilizator emonclercheap - Incepator
4135
Tutoriale scrise de kheops
kheops Rang utilizator kheops - Mediu
4084
* Acest top reprezinta punctajele acumulate in ultimele 30 de zile.
Word Photoshop Bridge Sony Vegas Gimp PHP StyleSheet JSON Outlook Lightroom Javascript PSD Java Fotografie Python Vista Excel Ruby on Rails AJAX RoR Powerpoint MySQL Flash Fireworks Action Script CSS XML Swift 3D SWF Dreamweaver XHTML HTML Verilog Illustrator COREL DRAW SEO
Promovare:
Daca faci parte din comunitatea E-learn.ro si doresti promovarea acesteia, poti accesa pagina de promovare.
Arhiva newsletter:
Daca ai ratat un numar mai vechi, sau vrei sa revezi care au fost noutatile E-learn.ro la un moment dat, poti accesa arhiva de newslettere.
  Copyright © 2008-2013 E-LEARN.ro. Toate drepturile rezervate. Termeni si conditii.
Conceput si realizat de Neokinetics Software