Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: key=>val db:stä skaalautuvaan pylväsdiagrammiin?

saniainen [03.07.2003 15:08:44]

#

Miten key=>val arvot saadaan haettua db:stä(mysql)?
Olen kokeillut muutamia versioita ja tökkii..
Miten vaikuttaa se, jos sarakkeen arvo on float eikä int?
Miten saa määriteltyä 1.pylväälle marginalia reunasta?

<?php

/*SKAALAUTUVA PYLVÄSDIAGRAMMI
toimiva koodi.
määrittele fontti, polku itse
*/
header("Content-type: image/png");
// miten db:stä(mysql) saadaan key=>val arvot?
$cells = array ( tama=>600, tuo=>400, tassapitkasana=>500, lyhyt=>700, lisaa=>900 );
//pylväiden määrä, suurin arvo
$max = max ($cells);
$total = count ($cells);

//muttujia
$totalwidth = 600;
$totalheight= 300;

/*vasen-oikea reunus, 1. pylväs alkaa alueen reunasta,
miten saada molempiin reunoihin samankokoinen vapaa-alue?
*/
$xgutter = 20;
//ylä-ala reunus
$ygutter = 20;
//solujen välinen tila
$internalgap =10;
//tyhjä tila alhalla
$bottomspace=30;

//määritellään fontti    + POLKU!!!
$font =  "../LucidaSansRegular.ttf";

//arvot on nyt saatu ja voidan tehdä laskentoja ja laittaa tulokset muuttujiin
$graphCanX = ($totalwidth -  $xgutter*2 );
//aloitetan piirto paikasta x
$graphCanY = ($totalheight - $ygutter*2 - $bottomspace);

$xpos = $xgutter;
//aloitetan piirto paikasta y
$posY = $totalheight - $ygutter - $bottomspace;
$cellwidth = (int) (($graphCanX- ($internalgap * ($total-1) )) / $total);
$textsize = (int) ($bottomspace);

//silmukassa käydään läpi $cells-taulukko, laskee käyttämän tekstin max leveyden
while (list($key, $val) = each ($cells))
{
    while (1)
    {
        $box = ImageTTFbBox($textsize,0,$font,$key);
        $textWidth=  $box[2];
        if ( $textWidth < $cellwidth )
        break;
        $textsize--;
    }
}

//kuvan käsittelyyn nyt
//luodaan alue minne palkit sijoitetaan
$image =imagecreate ($totalwidth,$totalheight);

//varataan värejä käyttöön
$red = imagecolorallocate ($image, 255,0,0);
$grey = imagecolorallocate($image, 200,200,200);
$blue = imagecolorallocate($image,  0,0,255);
$black = imagecolorallocate($image,  0,0,0);

reset ($cells);
while (list($key,$val)= each ($cells))
{
    $cellheight = (int) (($val/$max) * $graphCanY);
    $center = (int)($posX+($cellwidth/2));

//piirretään pylväs
imagefilledrectangle ($image, $posX,($posY-$cellheight),($posX+$cellwidth), $posY, $blue);
//tekstin asettelu
$box = ImageTTFbBox($textsize, 0,$font,$key);
$tw = $box[2];
ImageTTFText($image, $textsize, 0, ($center-($tw/2)),($totalheight-$ygutter),$black,$font,$key);
$posX += ($cellwidth + $internalgap);
}
imagePNG($image);
imagedestroy($image);
?>

Antti Laaksonen [03.07.2003 17:07:39]

#

lainaus:

Miten key=>val arvot saadaan haettua db:stä(mysql)?

Mikä on tietokannan rakenne?

lainaus:

Miten vaikuttaa se, jos sarakkeen arvo on float eikä int?

Ei kai mitenkään. Voit tietysti myös pyöristää arvot kokonaisluvuiksi.

saniainen [04.07.2003 09:09:29]

#

Reaaliajassa päivittyvä relaatiotietokanta.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta