mboost-dp1
ÆØÅ problemmer i php
- Forside
- ⟨
- Forum
- ⟨
- Programmering
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);
?>
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);
?>
#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.
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.
#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
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
#4
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:
Det ville jeg da straks erstatte med:
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:
Billeder har intet charset, det er kun relevant for text/*.
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 ':
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.
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.
#6
Så lad være med at rette tilbage! Bare fordi en fejlrettelse ikke løser dit nuværende problem, skal fejlen da stadig rettes. :)
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.
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.
#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.
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.
#8
Tricket er, at den kode der er tilbage stadig skal fungere, og vise fejlen.
fx. fuld kode:
God forkortelse:
(Vil stadig vise fejlen, kun reelt irrelevant kode er fjernet)
Dårlig forkortelse:
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.
Jeg plejer at bruge en TTF-font, så har jeg styr på det. Se imagettftext
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
#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?
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?
Jonasee:
Hvis du gad teste med andet end din browser ville du se denne fejl:
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å.
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å.
#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.
som du selv siger er det nogle gang det der skal til, så ingen onden føldelser der :P
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
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:)
Men nu virker det, mange tak for alle de venlig skop I har givet mig:)
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.