|
| søjlediagram Fra : Tonny Jørgensen |
Dato : 15-05-02 00:47 |
|
jeg har et lille problem...
syntaksen for 2 funktioner er ENS !! nemlig..
imagerectangle ( resource image, int x1, int y1, int x2, int y2, int
col)
imagefilledrectangle ( resource image, int x1, int y1, int x2, int y2, int
col)
men.....
[snip en masse kode]
while ($row=mysql_fetch_array($result)) {
$number=$number+1;
$sojle=$sojle+$size;
imagerectangle
($pic,($sojle+$size),($hojde-($row[tal]*20)),($sojle+4),($hojde-1),$col3);
ImagettfText ($pic, 10, 90, $sojle+$size, $hojde-($row[tal]*20), $col2,
$fontfile, $row[doto]);
ImagettfText ($pic, 8, 1, $sojle+6, $hojde-10, $col2, $fontfile,
$row[tal]);
}
[snip slut]
den tegne fint mine kasser, hvorimod
[snip en masse kode]
while ($row=mysql_fetch_array($result)) {
$number=$number+1;
$sojle=$sojle+$size;
imagefilledrectangle
($pic,($sojle+$size),($hojde-($row[tal]*20)),($sojle+4),($hojde-1),$col3);
ImagettfText ($pic, 10, 90, $sojle+$size, $hojde-($row[tal]*20), $col2,
$fontfile, $row[doto]);
ImagettfText ($pic, 8, 1, $sojle+6, $hojde-10, $col2, $fontfile,
$row[tal]);
}
[snip slut]
ikke tegner kasserne. Bemærk det eneste jeg har gjort er at erstatte
imagerectangle med imagefilledrectangle ..
nogen gode bud ? jeg ser helst mine søjler er massive, det ser pænest ud.
- Tonny
| |
Peter Brodersen (15-05-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 15-05-02 01:22 |
|
On Wed, 15 May 2002 01:47:03 +0200, "Tonny Jørgensen"
<hest@jegergud.dk> wrote:
>nogen gode bud ? jeg ser helst mine søjler er massive, det ser pænest ud.
Med imagefilledrectangle _skal_ du gå fra "øverste venstre" til
"nederste højre" som de to koordinatsæt, jf. en kommentar på php.net:
==
While imagerectangle will allow you to use a different order of your
coordinates (such as bottom-left to upper-right), imagefilledrectangle
will only work correctly if you use top-left to bottom-right as
indicated in the docs.
==
Mon ikke, din x1 er større end x2 - eller din y1 er større end din y2?
--
- Peter Brodersen
| |
Tonny Jørgensen (15-05-2002)
| Kommentar Fra : Tonny Jørgensen |
Dato : 15-05-02 01:31 |
|
"Peter Brodersen" <professionel@nerd.dk> wrote in message
news:SRhE8.3820$4f4.238407@news000.worldonline.dk...
> On Wed, 15 May 2002 01:47:03 +0200, "Tonny Jørgensen"
> <hest@jegergud.dk> wrote:
>
> >nogen gode bud ? jeg ser helst mine søjler er massive, det ser pænest ud.
>
> Med imagefilledrectangle _skal_ du gå fra "øverste venstre" til
> "nederste højre" som de to koordinatsæt, jf. en kommentar på php.net:
>
> ==
> While imagerectangle will allow you to use a different order of your
> coordinates (such as bottom-left to upper-right), imagefilledrectangle
> will only work correctly if you use top-left to bottom-right as
> indicated in the docs.
> ==
>
> Mon ikke, din x1 er større end x2 - eller din y1 er større end din y2?
det er ikke utænkeligt, prøver lgie at bytte rundt på ....
[rum stund med lidt roden frem og tilbage]
hmm..
while ($row=mysql_fetch_array($result)) {
$number=$number+1;
$sojle=$sojle+$size;
imagefilledrectangle
($pic,($sojle+4),($hojde-1),($sojle+$size),($hojde-($row[tal]*20)),$col3);
ImagettfText ($pic, 10, 90, $sojle+$size, $hojde-($row[tal]*20), $col2,
$fontfile, $row[doto]);
ImagettfText ($pic, 8, 1, $sojle+6, $hojde-10, $col2, $fontfile,
$row[tal]);
}
giver samme kedelige resultat....
- Tonny
| |
Peter Brodersen (15-05-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 15-05-02 01:49 |
|
On Wed, 15 May 2002 02:31:12 +0200, "Tonny Jørgensen"
<hest@jegergud.dk> wrote:
> imagefilledrectangle
>($pic,($sojle+4),($hojde-1),($sojle+$size),($hojde-($row[tal]*20)),$col3);
Blot et simpelt spørgsmål: Er du sikker på at $size er lig med noget?
Hvis den ikke er noget, vil ($sojle+4) være større end ($sojle+$size).
Under alle omstændigheder vil det kunne være lettere at finde ud af
ved at omskrive ting lidt på forhånd, fx:
$x1 = ($sojle+4);
$y1 = ($hojde-1);
$x2 = ($sojle+$size);
$y2 = ($hojde-($row['tal']*20);
print "Nu vil jeg lave en linje fra ($x1 , $y1) til ($x2 , $y2)<br>";
#imagefilledrectangle($pic,$x1,$y1,$x2,$y2,$col3);
Tjek at dette tekst-output ser fornuftigt ud.
--
- Peter Brodersen
| |
Tonny Jørgensen (15-05-2002)
| Kommentar Fra : Tonny Jørgensen |
Dato : 15-05-02 03:26 |
|
> $x1 = ($sojle+4);
> $y1 = ($hojde-1);
> $x2 = ($sojle+$size);
> $y2 = ($hojde-($row['tal']*20);
> print "Nu vil jeg lave en linje fra ($x1 , $y1) til ($x2 , $y2)<br>";
> #imagefilledrectangle($pic,$x1,$y1,$x2,$y2,$col3);
>
endte op med
while ($row=mysql_fetch_array($result)) {
$number=$number+1;
$sojle=$sojle+$size;
$x1 = ($sojle+4);
$y2 = ($hojde-($row['tal']*20));
$x2 = ($sojle+$size);
$y1 = ($hojde-1);
print "Nu vil jeg lave en linje fra ($x1 , $y1) til ($x2 , $y2)<br>";
#imagefilledrectangle($pic,$x1,$y1,$x2,$y2,$col3);
ImagettfText ($pic, 10, 90, $sojle+$size, $hojde-($row[tal]*20), $col2,
$fontfile, $row[doto]);
ImagettfText ($pic, 8, 1, $sojle+6, $hojde-10, $col2, $fontfile,
$row[tal]);
}
som giver output...
Nu vil jeg lave en linje fra (24 , 499) til (40 , 420)
Nu vil jeg lave en linje fra (44 , 499) til (60 , 420)
Nu vil jeg lave en linje fra (64 , 499) til (80 , 420)
Nu vil jeg lave en linje fra (84 , 499) til (100 , 240)
Nu vil jeg lave en linje fra (104 , 499) til (120 , 420)
Nu vil jeg lave en linje fra (124 , 499) til (140 , 360)
Nu vil jeg lave en linje fra (144 , 499) til (160 , 460)
Nu vil jeg lave en linje fra (164 , 499) til (180 , 300)
Nu vil jeg lave en linje fra (184 , 499) til (200 , 480)
Nu vil jeg lave en linje fra (204 , 499) til (220 , 480)
Nu vil jeg lave en linje fra (224 , 499) til (240 , 240)
Nu vil jeg lave en linje fra (244 , 499) til (260 , 400)
Nu vil jeg lave en linje fra (264 , 499) til (280 , 440)
Nu vil jeg lave en linje fra (284 , 499) til (300 , 480)
Nu vil jeg lave en linje fra (304 , 499) til (320 , 240)
Nu vil jeg lave en linje fra (324 , 499) til (340 , 480)
osv osv
ergo x er stignede og y er faldende, hvilket BURDE give fra øverste venstre
hjørne til neder højre hjørne.....
dog er der stadig ingen søjler...
det er mildest talt frustrende.....
- Tonny
| |
Peter Brodersen (15-05-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 15-05-02 03:32 |
|
On Wed, 15 May 2002 04:26:14 +0200, "Tonny Jørgensen"
<hest@jegergud.dk> wrote:
>Nu vil jeg lave en linje fra (324 , 499) til (340 , 480)
>
>osv osv
>
>ergo x er stignede og y er faldende, hvilket BURDE give fra øverste venstre
>hjørne til neder højre hjørne.....
y2 skal nu altså også være en højere værdi end y1.
==
imagefilledrectangle() creates a filled rectangle of color col in
image image starting at upper left coordinates x1, y1 and ending at
bottom right coordinates x2, y2. 0, 0 is the top left corner of the
image.
==
y1 er altså øverst, tættest på 0. y2 skal så være nederst, længst væk
fra 0.
--
- Peter Brodersen
| |
Hest (15-05-2002)
| Kommentar Fra : Hest |
Dato : 15-05-02 16:11 |
|
> y1 er altså øverst, tættest på 0. y2 skal så være nederst, længst væk
> fra 0.
tak nu virker det.
spørgsmål nr 2.
jeg vil lave en autoskalering af størrelsen og har derfor lavet følgende
stykke kode.
$result = mysql_query("select count(*) as tal, doto from warp where kat LIKE
'$valg' group by doto order by doto") or die("Fejl: ".mysql_error());
$count = mysql_num_rows($result);
$row = mysql_fetch_array($result);
/* variabel definition og grafikoutput */
$filnavn = rand(1,10000);
$sojle=0;
$number=1;
$size = 20;
$inc = $size;
$hojde = max($row[tal])*$inc;
$fontfile = "/usr/home/hest/ttf/verdana.ttf";
problemet er bare at $hojde = max($row[tal])*$inc; er 0
jeg kan med andre ord åbenbart ikke lave en max($row[tal]); for at få den
største værdi for arrayet "tal".
jeg prøvede derfor at ændre mit query til
mysql_query("select count(*) as tal, doto, max(tal) as maxtal from warp
where kat LIKE '$valg' group by doto order by doto") or die("Fejl:
".mysql_error());
men den giver invalid field specification på max(tal), jeg kan med andre ord
åbenbart ikke køre en max() i sql på et alias...
nogen gode ideer ?
- Tonny
| |
Tonny Jørgensen (15-05-2002)
| Kommentar Fra : Tonny Jørgensen |
Dato : 15-05-02 03:33 |
|
"Tonny Jørgensen" <hest@jegergud.dk> wrote in message
news:absh0n$8mf$1@news.cybercity.dk...
>
> > $x1 = ($sojle+4);
> > $y1 = ($hojde-1);
> > $x2 = ($sojle+$size);
> > $y2 = ($hojde-($row['tal']*20);
> > print "Nu vil jeg lave en linje fra ($x1 , $y1) til ($x2 , $y2)<br>";
> > #imagefilledrectangle($pic,$x1,$y1,$x2,$y2,$col3);
> >
> endte op med
>
> while ($row=mysql_fetch_array($result)) {
>
> $number=$number+1;
> $sojle=$sojle+$size;
> $x1 = ($sojle+4);
> $y2 = ($hojde-($row['tal']*20));
> $x2 = ($sojle+$size);
> $y1 = ($hojde-1);
> print "Nu vil jeg lave en linje fra ($x1 , $y1) til ($x2 , $y2)<br>";
> #imagefilledrectangle($pic,$x1,$y1,$x2,$y2,$col3);
> ImagettfText ($pic, 10, 90, $sojle+$size, $hojde-($row[tal]*20), $col2,
> $fontfile, $row[doto]);
> ImagettfText ($pic, 8, 1, $sojle+6, $hojde-10, $col2, $fontfile,
> $row[tal]);
> }
>
>
> som giver output...
>
> Nu vil jeg lave en linje fra (24 , 499) til (40 , 420)
> Nu vil jeg lave en linje fra (44 , 499) til (60 , 420)
> Nu vil jeg lave en linje fra (64 , 499) til (80 , 420)
> Nu vil jeg lave en linje fra (84 , 499) til (100 , 240)
> Nu vil jeg lave en linje fra (104 , 499) til (120 , 420)
> Nu vil jeg lave en linje fra (124 , 499) til (140 , 360)
> Nu vil jeg lave en linje fra (144 , 499) til (160 , 460)
> Nu vil jeg lave en linje fra (164 , 499) til (180 , 300)
> Nu vil jeg lave en linje fra (184 , 499) til (200 , 480)
> Nu vil jeg lave en linje fra (204 , 499) til (220 , 480)
> Nu vil jeg lave en linje fra (224 , 499) til (240 , 240)
> Nu vil jeg lave en linje fra (244 , 499) til (260 , 400)
> Nu vil jeg lave en linje fra (264 , 499) til (280 , 440)
> Nu vil jeg lave en linje fra (284 , 499) til (300 , 480)
> Nu vil jeg lave en linje fra (304 , 499) til (320 , 240)
> Nu vil jeg lave en linje fra (324 , 499) til (340 , 480)
>
> osv osv
>
> ergo x er stignede og y er faldende, hvilket BURDE give fra øverste
venstre
> hjørne til neder højre hjørne.....
>
> dog er der stadig ingen søjler...
>
> det er mildest talt frustrende.....
>
> - Tonny
for overskuelighedens skyld poster jeg lige koden her (ved godt det sikkert
ikke er cotume at gøre det)...
<?php
// test paa at faa ordentlig caching
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// always modified
header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache"); // HTTP/1.0
?>
<?php
/* sql connect */
$res=mysql_connect ('localhost', 'root', '') or die("Fejl: ".mysql_error());
mysql_select_db ('warp',$res) or die("Fejl: ".mysql_error());
/* sql træk */
$result = mysql_query("select count(*) as tal, doto from warp where kat LIKE
'$valg' group by doto order by doto") or die("Fejl: ".mysql_error());
$count = mysql_num_rows($result);
$row = mysql_fetch_array($result);
/* variabel definition og grafikoutput */
$filnavn = rand(1,10000);
$sojle=0;
$number=1;
$size = 20;
$inc = $size;
$hojde = 500;
$fontfile = "/usr/home/hest/ttf/verdana.ttf";
/* image størrelse og farve */
$pic=ImageCreate($size*$count+20,$hojde);
$col1=ImageColorAllocate($pic,255,255,255);
$col2=ImageColorAllocate($pic,0,0,255);
$col3=ImageColorAllocate($pic,255,0,0);
$col4=ImageColorAllocate($pic,0,255,0);
/* løkke der tegner sojlerne, og skriver dato ovenover hver enkelt søjle,
samt værdi for hver enkel søjle i bunden af søjlen */
while ($row=mysql_fetch_array($result)) {
$number=$number+1;
$sojle=$sojle+$size;
$x1 = ($sojle+4);
$y2 = ($hojde-($row['tal']*20));
$x2 = ($sojle+$size);
$y1 = ($hojde-1);
print "Nu vil jeg lave en linje fra ($x1 , $y1) til ($x2 , $y2)<br>";
#imagefilledrectangle($pic,$x1,$y1,$x2,$y2,$col3);
ImagettfText ($pic, 10, 90, $sojle+$size, $hojde-($row[tal]*20), $col2,
$fontfile, $row[doto]);
ImagettfText ($pic, 8, 1, $sojle+6, $hojde-10, $col2, $fontfile,
$row[tal]);
}
/* lav grid til aflæsning af graf */
while ($size < $hojde) {
$size=$size+$inc;
ImageLine($pic,0,$size,$size*$count,$size,$col3);
}
/* skriv billede til fil og vis denne i browser */
print "<font face=verdana size=-1>" . $valg . " uploads for all ftp
uptime</font><br>";
ImagePNG($pic,"./$filnavn.png");
print "<img src=\"./$filnavn.png\" border=0>";
flush();
/* slet billedet fra rammen, og derefter fra disken */
ImageDestroy($pic);
/* vis form i bunden til ny graf */
?>
<form action=index.php>
<select name=valg>
<option value="svcd">svcd
<option value="divx">divx
<option value="apz-iso">apz-iso
<option value="gamez-iso">gamez-iso
<option value="ps2">ps2
</select>
<input type=submit value="show me">
</form>
</body>
</html>
håber det kan give et clue... som du kan se burde size være sat til en værdi
før den ryger ind i løkken.....
evt kan jeg poste et billede i binaer så du kan se billedet...
- Tonny
| |
|
|