Gå til innhold

Diagrammer i PHP


Anbefalte innlegg

Heisann!

 

Har en del tall jeg vil føre en statistikk over, på et system jeg driver å lager i PHP.

 

Alt er såklart dynamisk, så det blir litt fikling om jeg skal implementere en slik funksjon.

 

 

Finnes det noen enkle diagram-programmer som er laget i php? Tenkte å ha et sektordiagram(kake) med noen tall på.

Har sett litt på Google sin, og prøver å få denne til sånn nogenlunde.. (link)

 

Noen som veit om noe, og hvordan jeg kan få det til? :)

Lenke til kommentar
Videoannonse
Annonse

Tja. skal du bruke google sin får du vel lese hva som står der. Skal du lage egen er det egentlig kun ren geometri. Tar litt tid bare.

 

function getProsent( $antall, $total )

{

return ($antall / $total) * 100;

}

 

$data = "25,25,50" // komma separerte floats (prosent)

$labels = "Kvart|Kvart2|Halve" // pipe separerte tekst strenger

 

$gLink = 'http://chart.apis.google.com/chart?cht=p3&chd=t:' . $data . '&chs=250x100&chl=' . $labels;

Lenke til kommentar

Okay, nå har jeg bare rablet ned noe, så må jeg bare spørre om noen kan rette på det, til noe bedre enn det jeg har skrevet. Det fungerer ikke helt heller... Hvordan skal jeg gjøre det med prosentfunksjonen?

 

Jeg føler jeg har lært litt ihvertfall! :)

 

Her er det:

Klikk for å se/fjerne innholdet nedenfor
	<?php
// Svarte puter
$query = "SELECT SUM(antall_svarte) FROM kunder";
$result = mysql_query($query) or die(mysql_error());
// Print out result
$row = mysql_fetch_array($result);

$svarte = $row[0];
// Blå puter
$query = "SELECT SUM(antall_blaa) FROM kunder";
$result = mysql_query($query) or die(mysql_error());
// Print out result
$row = mysql_fetch_array($result);

$blaa = $row[0];

// Rosa puter
$query = "SELECT SUM(antall_rosa) FROM kunder";
$result = mysql_query($query) or die(mysql_error());
// Print out result
$row = mysql_fetch_array($result);

$rosa = $row[0];

// Regne ut
$totalt = $rosa + $svarte + $blaa;

function getProsent( $antall, $total )
{
return ($antall / $total) * 100;
}

$en = getProsent($rosa, $totalt);
$to = getProsent($svarte, $totalt);
$tre = getProsent($blaa, $totalt);

echo '<p>Totalt: '. $totalt;.'</p>'
echo '<p>Prosent rosa:' . $en . '</p>';
echo '<p>Prosent svarte:' . $to . '</p>';
echo '<p>Prosent blå:' . $tre . '</p>';

// Skriver ut diagrammet

$data = ''. $to .','. $tre .','. $en .''; // komma separerte floats (prosent)
$labels = "Antall svarte puter|Antall blå puter|Antall rosa puter"; 

$gLink = 'http://chart.apis.google.com/chart?cht=p3&chd=t:' . $data . '&chs=350x100&chl=' . $labels;

echo '<img src="'. $gLink .'"/>';

echo $svarte;

?>

 

Setter utrolig stor pris på svar og hjelp! :)

 

 

EDIT: Koden er oppdatert, og den fungerer. Jeg måtte jo selvsagt regne ut totalen, for at funksjonen med prosentutregninga skulle fungere. :)

Endret av AnaXyd
Lenke til kommentar

Nei, ikke her. Det kan brukes til det og, men her skrev jeg det for å hindre php i å tolke tallene som strenger. Da hadde for eksempel

 

$rosa = '20';

$svarte = '30';

 

$total = $rosa + $svarte;

 

print $total; // 2030 hadde blitt printet.

 

red: bruk + som mellomrom

 

Både mellomrom + og %20 virker. Jeg ville brukt +, siden det er nåværende standard så vidt jeg vet, og det ser penere ut enn %20.

Endret av grimjoey
Lenke til kommentar
Nei, ikke her. Det kan brukes til det og, men her skrev jeg det for å hindre php i å tolke tallene som strenger. Da hadde for eksempel

 

$rosa = '20';

$svarte = '30';

 

$total = $rosa + $svarte;

 

print $total; // 2030 hadde blitt printet.

 

red: bruk + som mellomrom

 

Både mellomrom + og %20 virker. Jeg ville brukt +, siden det er nåværende standard så vidt jeg vet, og det ser penere ut enn %20.

Aha! Merket at den printet noe lignende istad. Da skal jeg huske på det til neste gang! :)

Da bruker jeg + som mellomrom! :) Fy svarte, føler at jeg lærer skikkelig mye av dette systemet her.. Men jeg hadde ikke vært særlig langt uten den hjelpen jeg får her! (Absolutt mest fra grimjoey, han skal få skikkelig cred for det her ;) )

 

Da tror jeg faktisk at det fungerer folkens! :) Poster endelig kode, for de som kanskje trenger det til noe:

 

Klikk for å se/fjerne innholdet nedenfor
		//Husk å koble til database før denne koden kommer!
	<?php
// Svarte puter
$query = "SELECT SUM(antall_svarte) FROM kunder";
$result = mysql_query($query) or die(mysql_error());
// Print out result
$row = mysql_fetch_array($result);

$svarte = $row[0];
// Blå puter
$query = "SELECT SUM(antall_blaa) FROM kunder";
$result = mysql_query($query) or die(mysql_error());
// Print out result
$row = mysql_fetch_array($result);

$blaa = $row[0];

// Rosa puter
$query = "SELECT SUM(antall_rosa) FROM kunder";
$result = mysql_query($query) or die(mysql_error());
// Print out result
$row = mysql_fetch_array($result);

$rosa = $row[0];

// Regne ut
$total = (int)$rosa + (int)$svarte + (int)$blaa;

function getProsent( $antall, $total )
{
return ($antall / $total) * 100;
}

$en = getProsent($rosa, $total);
$to = getProsent($svarte, $total);
$tre = getProsent($blaa, $total);

echo '<p>Totalt: '. $total.'</p>';
echo '<p>Prosent rosa:' . $en . '</p>';
echo '<p>Prosent svarte:' . $to . '</p>';
echo '<p>Prosent blå:' . $tre . '</p>';

// Skriver ut diagrammet

$data = ''. $to .','. $tre .','. $en .''; // komma separerte floats (prosent)
$labels = "Antall+svarte+puter|Antall+blå+puter|Antall+rosa+puter"; 

$gLink = 'http://chart.apis.google.com/chart?cht=p3&chd=t:' . $data . '&chs=350x100&chl=' . $labels;

echo '<img src="'. $gLink .'"/>';

echo $svarte;

?>

Lenke til kommentar

Eit lite tips angåande sql spørringene er å hente ut alt du trenger med ein gang, da slipper du tre spørringer til databasen og koden blir betraktligere kortere.

 

Eks:

Klikk for å se/fjerne innholdet nedenfor

		//Husk å koble til database før denne koden kommer!
	<?php
// Hent all info du trenger
$query = "SELECT SUM(antall_svarte) as svarte, SUM(antall_blaa) as blaa, SUM(antall_rosa) as rosa, svarte + blaa + rosa as total  FROM kunder";
$result = mysql_query($query) or die(mysql_error());
// Hent svaret å plasser dei i variabler
extract(mysql_fetch_assoc($result));

function getProsent( $antall, $total )
{
return ($antall / $total) * 100;
}

$en = getProsent($rosa, $total);
$to = getProsent($svarte, $total);
$tre = getProsent($blaa, $total);

echo '<p>Totalt: '. $total.'</p>';
echo '<p>Prosent rosa:' . $en . '</p>';
echo '<p>Prosent svarte:' . $to . '</p>';
echo '<p>Prosent blå:' . $tre . '</p>';

// Skriver ut diagrammet

$data = ''. $to .','. $tre .','. $en .''; // komma separerte floats (prosent)
$labels = "Antall+svarte+puter|Antall+blå+puter|Antall+rosa+puter"; 

$gLink = 'http://chart.apis.google.com/chart?cht=p3&chd=t:' . $data . '&chs=350x100&chl=' . $labels;

echo '<img src="'. $gLink .'"/>';

?>

Endret av Runar0
Lenke til kommentar

Angående prosentutreginga: Dersom du har tre verdier av 33.3333333 vil hver av disse bli 33 og 3x33 = 99 istedet for 100. Derimot klarer jeg ikke finne noe staed vor det står at dette skal være levert i prosent. Testet litt med $data = '20,10,15' f.eks, og det fungerte like flott. Ettersom hva jeg da konkluderte med er at det er "bedre" og droppe den utregninga av prosenten.

Lenke til kommentar
Specify text encoding with

 

chd=t:<chart data string>

 

Where <chart data string> consists of floating point numbers from zero (0.0) to 100.0, minus one (-1), and the pipe character (|).

 

Det trenger ikke være prosent. men tallene kan ikke overstige 100. Derfor valgte jeg å gjør om til prosent. (Da vil aldri noen av tallene overstige 100).

Endret av grimjoey
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...