Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 11:36 Der er 5 kommentarer og
1 løsning

omvendt dynamisk graf i gdlib :S

hej eksperter :)

jeg er efter længe søgning selv gået i gang med at lave mig en dynamisk graf i gdlib!
jeg har aldrig arbejdet med billeder i php før, så det hele er noget jeg har læst mig til via php-manualen (så derfor vil jeg ikke have noget at vide om det er newbie-kode hehe)

mit problem er at jeg på en eller anden måde har fået det vendt på hovede :(

den laver en graf over svartider på min server, men af en eller anden grund så bliver den modsat af hvad den skal!

for nemmere at forklare det kan i se grafen på denne side:
http://local.alnet.dk/alstatus.dk/graf.php?host=1&port=80

og koden er som følgende:
-------------------------------------------------------------
<?

session_start();

header ("Content-type: image/png");

include("db.php");

// billedets størrelse
$billedw = 790;
$billedh = 395;
$fbilledw = 800;
$fbilledh = 400;

// mindste værdi
$value_min = mysql_query("SELECT * FROM serv_status WHERE host = '$_GET[host]' AND port = '$_GET[port]' ORDER BY respons ASC LIMIT 0,1") or die(mysql_error());
while($row = mysql_fetch_array($value_min)) {
    $min = $row["respons"];
}
// højeste værdi
$value_max = mysql_query("SELECT * FROM serv_status WHERE host = '$_GET[host]' AND port = '$_GET[port]' ORDER BY respons DESC LIMIT 0,1") or die(mysql_error());
while($row = mysql_fetch_array($value_max)) {
    $max = $row["respons"];
}

// antal rækker
$foresp1 = mysql_query("SELECT * FROM serv_status WHERE host = '$_GET[host]' AND port = '$_GET[port]'") or die(mysql_error());
$antalcheck = mysql_num_rows($foresp1);

// bredde pr. bar
$barbredde = $billedw/$antalcheck;

// standard billede-variabler
$im = imagecreate ($fbilledw, $fbilledh);
$white = imagecolorallocate ($im,255,255,255);
$blue = imagecolorallocate ($im,0,0,255);
$black = imagecolorallocate ($im,0,0,0);

// tekster
$text_max = $max*1.1;
$text_min = 0;
$text_midt = $text_max/2;

// x-y
$bund = $billedh-8;
$midt = $billedh/2-12;

// forhold
imagestring ($im, 2, 0, 0, $text_max, $black);
imagestring ($im, 2, 0, $midt, $text_midt, $black);
imagestring ($im, 2, 0, $bund, $text_min, $black);

// lav søjler
$start = 10;

$value = mysql_query("SELECT * FROM serv_status WHERE host = '$_GET[host]' AND port = '$_GET[port]'") or die(mysql_error());
while($row = mysql_fetch_array($value)) {
    $respons = $row["respons"];
   
    $procent = $text_max/$respons;
    $hvor = $billedh/$procent;
   
    $slut = $start+$barbredde;
   
    imagerectangle ($im,$start,$hvor,$slut,$billedh,$black);
   
    $start = $slut;
}
// udskriv billede
imagepng($im);

?>
----------------------------------------------------------

det er lidt svært at forklare, men hvis man vendte sin skærm på hovedet ville den komme til at passe...

fx er værdierne for de første 5 rækker følgende:
0,0290
0,0267
0,0276
0,0300
0,0286
hvilket jo ikke svare til grafen!

hvordan får jeg den "vendt" om?
Avatar billede bojo Nybegynder
10. oktober 2004 - 11:44 #1
Jeg vil mene at fejlen er her

$procent = $text_max/$respons;
$hvor = $billedh/$procent;

hvor din % nok er omvendt $respons/$text_max
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 11:49 #2
så ser den helt galt ud bojo :S
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 12:00 #3
tror selv jeg har fået det til at virke nu!
hvis man satte
$hvor = $billedh-$hvor;

ind under $hvor-linien virker det vist :D

undskyld ulejligheden!
Avatar billede bojo Nybegynder
10. oktober 2004 - 12:03 #4
hmm - æv, læste lig lidt

$start,$hvor er jo dine top left coordinater så det er jo dem, da din start x er ok er det y vi leder efter og den kalder du $hvor

Hvad giver det hvis du sætter $hvor = $hvor = $billedh/100*$procent;
Avatar billede bojo Nybegynder
10. oktober 2004 - 12:04 #5
hov, jeg stammer :-)
Avatar billede elskermad.dk Nybegynder
10. oktober 2004 - 12:06 #6
den så heller ikke rigtig ud med din sidste linie, men som sagt har jeg fået det til at virke! håber det gik jeg tog mine points igen :]
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester