mboost-dp1

ÆØÅ problemmer i php


Gå til bund
Gravatar #1 - Jonasee
12. okt. 2007 09:53
Hej

Jeg har en kode er returener et png billede, men vis jeg bruger æøå bliver de ikke skrivet rigtig.

Jeg har prøvet med iso-8859-1 kode, ascii kode, hex kode og html converter.


Kode er her:

<?
header ("Content-type: image/png; charset=iso-8859-1");
$values[] = 50;
$values[] = 100;
$values[] = 150;
$values[] = 200;
$values[] = 250;
$values[] = 300;
$values[] = 350;

$labels[] = Mandag;
$labels[] = Tirsdag;
$labels[] = Onsdag;
$labels[] = Torsdag;
$labels[] = Fredag;
$labels[] = Lørdag;
$labels[] = Søndag;
$width = 400;
$height = 400;
$xoffset = $width / 10;
$yoffset = $height / 10;
/* Fastslå skriftstørrelser */
if (($width > 400) and ($height > 400)) {
$sm_font = 2;
$md_font = 3;
$lg_font = 4;
} else {
$sm_font = 1;
$md_font = 2;
$lg_font = 2;
}
/* Opret grund-image */
$image = ImageCreate($width, $height);
/* Alloker farver */
$white = ImageColorAllocate($image, 235, 235, 235);
$blue = ImageColorAllocate($image, 0, 0, 255);
$red = ImageColorAllocate($image, 255, 0, 0);
/* Find den største værdi i det array, der indeholder værdier */
$greatest = 0;
for($i = 0; $i < sizeof($values); $i++) {
$values[$i] = trim($values[$i]);
if($values[$i] > $greatest)
$greatest = $values[$i];
}
/* Fastslå skalering og afstande */
$scale = ($height / $greatest) * .8;
$h_spacing = floor(($width - $xoffset) / sizeof($values)) / 2;
$barwidth = $h_spacing;
/* Tegn søjler, etiketter og værdier*/
$x = $xoffset + 5;
for($i = 0; $i < sizeof($values); $i++) {
$y = $height - $yoffset - ($values[$i] * $scale);
ImageFilledRectangle($image, $x, $y , $x + $barwidth, $height - $yoffset, $red);
ImageString ($image, $sm_font, $x, $y-12, $values[$i], $blue);
$labels[$i] = trim($labels[$i]);
ImageString ($image, $md_font, $x, $height - $yoffset + 2, $labels[$i], $blue);
$x+=($h_spacing * 2);
}
/* Fasslå inddeling */
$ticks_every = "1";
for($i = 1; $i < (round(log10($greatest))); $i++) {
$ticks_every .= "0";
}
/* Tegn inddelinger og tal */
for($i = 0; $i < $height - $yoffset; $i+= $ticks_every*$scale) {
$y = ($height - $yoffset) - $i;
ImageLine($image, $xoffset / 2, $y, $xoffset, $y, $blue);
ImageLine($image, $xoffset + 5, $y, $width + $xoffset, $y, $white);
ImageString ($image, $sm_font, $xoffset / 2, $y, $i / $scale , $blue);
}
/* Tegn venstre side og bundlinjen af diagrammet */
ImageLine($image, 0 + $xoffset, 0, $xoffset, $height - $yoffset, $blue);
ImageLine($image, 0 + $xoffset, $height - $yoffset, $width + $xoffset, $height - $yoffset, $blue);
/* Tegn akse-etiketterne */
ImageString ($image, $lg_font, $width / 2, $height - ($yoffset / 2), $hlabel, $blue);
ImageStringUp ($image, $lg_font, 1, $height - $height / 3, $vlabel, $blue);
/* Vis image */
//header ("Content-type: image/png");
ImagePNG($image);
ImageDestroy($image);
?>
Gravatar #2 - reefermadness2
14. okt. 2007 18:33
Er du sikker på at den font du bruger har æøå ?
Gravatar #3 - rackbox
14. okt. 2007 18:38
#1 Hmm.. En "Jeg gider ikke selv fejlsøge - hjælp mig gratis"-tråd... Lækkert...

Hvis du nu lige selv gider at rydde ud i din kode, så alt det irrelevante ikke står med, så kan det være, at jeg gider at bruge 5 minutter på at sætte mig ind i det og faktisk hjælpe dig.

Det svarer lidt til, at du siger: "Min bil", (sorry for bilanalogi - hader dem selv!), "kører ujævnt i motoren", og så viser du en teknisk tegning over hele din motor som den fungerer nu.
Gravatar #4 - Jonasee
15. okt. 2007 06:19
#3

Undskylder meget at jeg ikke skrev at jeg har siddet i 2 dag for at prøve at finden fejlen, grunden til at helle kode er der er at, jeg ikke selv kan finden fejlen og ikke har nogle i ide om hvor den ligger.


#2

Nej, har ikke den store erfaring ind for php, så vis du kunne give mig et hint til hvordan jeg tjækker det så ville jeg være glad
Gravatar #5 - myplacedk
15. okt. 2007 06:41
#4
grunden til at helle kode er der er at, jeg ikke selv kan finden fejlen og ikke har nogle i ide om hvor den ligger.

Så er din opgave at fjerne så meget kode som muligt, mens fejlen stadig er der. Derefter er fejlen ofte indlysende (i hvert fald for erfarne udviklere i det pågældende sprog), hvis man da ikke finder den undervejs.

For eksempel:
$labels[] = Mandag;
$labels[] = Tirsdag;
$labels[] = Onsdag;
$labels[] = Torsdag;
$labels[] = Fredag;
$labels[] = Lørdag;
$labels[] = Søndag;

Det ville jeg da straks erstatte med:
$label = "Blåbærgrød";

Så kan du søge på "$labels", og fjerne al ugedags-logik.

Nu vi er i gang, så er der lige et par småting jeg lige kan påpege:

header ("Content-type: image/png; charset=iso-8859-1");

Billeder har intet charset, det er kun relevant for text/*.

$labels[] = Mandag;

Strenge skal være markeret på en eller anden måde. Det du laver der er en "udefineret konstant", og det vil PHP brokke sig over, hvis den er konfigureret "fornuftigt", altså som langt de fleste erfarne udviklere vil anbefale. (Kort sagt: Slå notices til i php.ini...)

Brug " eller ':
$labels[] = "Mandag";


Hvis "notices" var slået til, ville den brokke sig over dine ugedage. Så ville du have undersøgt det ganske simple problem, og så rettet det. Måske vil det faktisk løse det problem, der fik dig til at oprette denne tråd.
Gravatar #6 - Jonasee
15. okt. 2007 07:59
#5 har prøvet med $labels[] = "lørdag";

men uden held,

charset=iso-8859-1 var et desparet forsøg, som sjovt nok hæller ikke hjælp
Gravatar #7 - myplacedk
15. okt. 2007 09:20
#6
har prøvet med $labels[] = "lørdag";
men uden held,

Så lad være med at rette tilbage! Bare fordi en fejlrettelse ikke løser dit nuværende problem, skal fejlen da stadig rettes. :)

charset=iso-8859-1 var et desparet forsøg, som sjovt nok hæller ikke hjælp

Det er jeg ikke i tvivl om, nu kan du så rette det tilbage. :)

Men bortset fra det... Din kommentar antyder at du ikke gider forsøge at isolere problemet, ved at fjerne urelateret kode. Men det kan da vel ikke passe?

Og bortset fra denne hjælp-til-selvhjælp: Jeg mistænker også din font.
Gravatar #8 - Jonasee
15. okt. 2007 09:43
#7

okay, mange tak for råden og jeg gider godt fjerne urelatret kode, men for oplevet at folk har sporgt efter hele kode, når jeg har gjordt det.


med hensyn til fonten, så er det et af de områder hvor jeg ingen hviden har, så vis du kunne fortællde mig hvordan jeg tjekke/retter det, ville jeg være meget glad.
Gravatar #9 - myplacedk
15. okt. 2007 10:30
#8
jeg gider godt fjerne urelatret kode, men for oplevet at folk har sporgt efter hele kode, når jeg har gjordt det.

Tricket er, at den kode der er tilbage stadig skal fungere, og vise fejlen.

fx. fuld kode:
$foo = "Julemand";
$bar = "baz";
$foo = $foo * 2;
echo $foo;


God forkortelse:
$foo = "Julemand";
$foo = $foo * 2;
echo $foo;

(Vil stadig vise fejlen, kun reelt irrelevant kode er fjernet)

Dårlig forkortelse:
$foo = $foo * 2;
echo $foo;

Denne kode vil ikke give samme fejl, og kan ikke bruges til fejlsøgning.

Når folk beder om komplet kode er det fordi de vil løse dit problem for dig. Jeg vil hellere fortælle dig hvordan du selv kan løse det, eller i hvert fald begrænse problemets størrelse, så det er nemmere at få hjælp.

med hensyn til fonten, så er det et af de områder hvor jeg ingen hviden har, så vis du kunne fortællde mig hvordan jeg tjekke/retter det, ville jeg være meget glad.

Jeg plejer at bruge en TTF-font, så har jeg styr på det. Se imagettftext
Gravatar #10 - Jonasee
15. okt. 2007 11:47
#9

tak for forklaringen og tak for ikke bare at løse.

nu har jeg prøvet at skift over til at brug imagettftext og kode ser sådan her ud:

ImageTTFText($image, $md_font, 0, $x, $height - $yoffset + 2, $blue, $font, $labels[$i]);

men jeg få en beskede om at der er en fejl.

vis jeg har forstået det rigtig så hedder det

ImageTTFText(image, size, angle, x, y, color, font, text);

eller er jeg helt gal på den?
Gravatar #11 - myplacedk
15. okt. 2007 16:14
Tip nummer X: Hvis der er en fejlmeddelelse, er der ikke mange der gider løse problemet, før de kender fejlmeddelelsen.
("Kære mekaniker. Der er noget galt med min bil. Ved du hvad det er? Venter spændt på dit sikkert oplysende svar. Hilsen kunden.")
Gravatar #12 - Jonasee
15. okt. 2007 18:37
#11 grunden til jeg ikke skrev fejlmeddelelse er at der ikke kan udledes det store ud fra den udover at der er en fejl

Billedet “http://ascom.jonasee.dk/brug/gd_uge.php?=SID” kan ikke vises, da det indeholder fejl.
Gravatar #13 - Cyrack
15. okt. 2007 22:17
Jonasee:

Hvis du gad teste med andet end din browser ville du se denne fejl:

HTTP/1.1 200 OK
Date: Mon, 15 Oct 2007 22:11:51 GMT
Server: Apache
X-Powered-By: PHP/5.2.3
Content-Length: 2132
Content-Type: image/png;
<br />
Warning:
imagettftext() [<a href='function.imagettftext'>function.imagettftext[/url]]: Invalid font filename in /mounted-storage/home70b/sub008/sc40877-ZYMK/ascom/brug/gd_uge.php on line 58<br />
<br />
Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext[/url]]:
Invalid font filename in /mounted-storage/home70b/sub008/sc40877-ZYMK/ascom/brug/gd_uge.php on line 58<br />
<br />
Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext[/url]]: Invalid font filename in /mounted-storage/home70b/sub008/sc40877-ZYMK/ascom/brug/gd_uge.php on line 58<br />
<br />
Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext[/url]]: Invalid font filename in /mounted-storage/home70b/sub008/sc40877-ZYMK/ascom/brug/gd_uge.php on line 58<br />
<br />
Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext[/url]]: Invalid font filename in /mounted-storage/home70b/sub008/sc40877-ZYMK/ascom/brug/gd_uge.php on line 58<br />
<br />
Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext[/url]]: Invalid font filename in /mounted-storage/home70b/sub008/sc40877-ZYMK/ascom/brug/gd_uge.php on line 58<br />
<br />
Warning: imagettftext() [<a href='function.imagettftext'>function.imagettftext[/url]]: Invalid font filename in /mounted-storage/home70b/sub008/sc40877-ZYMK/ascom/brug/gd_uge.php on line 58<br />
[Her kommer en PNG-header newz.dk ikke kan håndtere]


Bare fordi din browser ikke kan fortolket outputtet kunne du jo selv tjekke det efter, fx ved at skrive til en fil, eller bare gemme siden som en html-side på din lokale maskine og gennemse den med notepad. Hell, jeg brugte telnet og det virkede.

Sorry for den harske tone, men det virker lidt som om du ikke gider gøre en smule arbejde selv, men nu har du da en linje du kan kigge på.
Gravatar #14 - Jonasee
16. okt. 2007 06:23
#13

som jeg har prøvet at antyde har jeg ikke nogle erfaring med fejl finding og jeg må indrømme at jeg ikke have troet at der kunne være så stor forskel på den fejl meddelse der kom fra browserne.

Sorry for den harske tone, men det virker lidt som om du ikke gider gøre en smule arbejde selv, men nu har du da en linje du kan kigge på.


som du selv siger er det nogle gang det der skal til, så ingen onden føldelser der :P
Gravatar #15 - Jonasee
16. okt. 2007 06:29
Fandt fejlen, den ville ikke gode tage at der stor $font, selv om den var defineret?

Men nu virker det, mange tak for alle de venlig skop I har givet mig:)
Gravatar #16 - myplacedk
16. okt. 2007 06:47
Du kunne også ændre Content-type til text/html, så ville du kunne se fejlene.
Og velbekomme. :)
Gravatar #17 - Jonasee
16. okt. 2007 07:03
#16 det vil jeg huske
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login