wat is er fout aan dit script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Lex moen

lex moen

11/08/2015 21:19:43
Quote Anchor link
als ik dit script run geeft de pagina dat het plaatje niet weergegeven kon worden omdat het script fouten bevat. Ik heb de code gchckd via tidy in HTML kit maar die geeft niets bijzonders.

wat klopt er niet?



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?php

$gegevens
= array(10, 30, 40);
$kleuren = array('#FF0000', '#00FF00', '#0000FF');
$legenda = array('Type A', 'Type B', 'Type C');
$img_hoogte = 500; # Hoogte van het plaatje
$breedte = 40; # Breedte van de kolom

# Berekend de breedte van het plaatje excl. de legenda breedte

function kolom_hoogte($deel, $max, $img_hoogte, $breedte){
    return ($deel/$max)*($img_hoogte-(0.5*$breedte));
}


# Voor het 3d effect (half cosinus 30)
function schuin_x($breedte){
    return $breedte*0.43;
}


# Voor het 3d effect (half sinus 30)
function schuin_y($breedte){
    return $breedte*0.25;
}


# Zet de HTML kleur om in een rbg waarde.
function hex2rbg($color, $image){
    $string = str_replace('#','',$color);
    return    imagecolorallocate($image, hexdec(substr($string,0,2)), hexdec(substr($string,2,2)), hexdec(substr($string,4,2)));
}


# Berekend het maximum aantal tekens per array waarde en geeft de lengte van de langste terug.
function maxarraylength($input){
    foreach($input as $v){
        $output[] = strlen($v);
    }

    return max($output);
}


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

# grootte van het plaatje basseren op het aantal kolomen:
$kolomen = count($gegevens);
$width = ($kolomen*$breedte*2)+(0.5*$breedte);
$image = imagecreate($width+(maxarraylength($legenda)*7)+25, ($img_hoogte+1));

# Achtergrond:
$bg = imagecolorallocate($image, 255, 255, 255);

# KOLUMS
for($i=0;$i<$kolomen;$i++){
    # vars:
    $begin = ($i*$breedte)+($i*$breedte)+(0.5*$breedte);
    $hoogte = kolom_hoogte($gegevens[$i], max($gegevens), $img_hoogte, $breedte);
    $kleur = hex2rbg($kleuren[$i], $image);
    $black = imagecolorallocate($image, 0, 0, 0);
    
    # kolom:
    imagefilledrectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $kleur); # Vlak
    imagerectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $black); # Omlijning
    
    # 3d effect:

    $punten = array(
        $begin,#X
        ($img_hoogte-$hoogte),#Y
      
        ($begin+schuin_x($breedte)),#X
        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte+schuin_x($breedte)),#X
        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte+schuin_x($breedte)),#X
        ($img_hoogte-schuin_y($breedte)),#Y
      
        ($begin+$breedte),#X
        $img_hoogte,#Y
      
        ($begin+$breedte),#X
        ($img_hoogte-$hoogte)#Y
    );
    imagefilledpolygon($image, $punten, 6, $kleur); # Vlak
    imagepolygon($image, $punten, 6, $black); # Omlijning
    imageline($image, $punten[10], $punten[11], $punten[4], $punten[5], $black); # Tussen lijn
    
    # Legenda:

    $top = (15*$i)+(15*$i)+(0.5*$breedte);
    $left = ($kolomen*$breedte)+($kolomen*$breedte)+(0.5*$breedte);
    imagefilledrectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $kleur); # Vlak
    imagerectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $black); # Omlijning
    imagestring($image, 3, $left+20, $top*0.5, $legenda[$i], $black); # Text
}
# // KOLUMS

imagepng($image);

imagedestroy($image);

?>
 
PHP hulp

PHP hulp

19/04/2024 07:11:49
 
Ben van Velzen

Ben van Velzen

11/08/2015 21:30:49
Quote Anchor link
Haal de content-type header eens weg en roep het script rechtstreeks aan zodat je eventuele foutmeldingen kan zien.
 
Thomas van den Heuvel

Thomas van den Heuvel

11/08/2015 21:31:32
Quote Anchor link
Geen idee, maar je kunt dit debuggen door je header() tijdelijk te verwijderen en het rapporteren + weergeven van fouten aan te zetten (aan het start van je script):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
?>


Succes.
 
Lex moen

lex moen

11/08/2015 21:40:39
Quote Anchor link
ik heb header("content-type: image/png"); verwijderd en die twee regels error reporting en ini set bovenaan het script geplaatst maar krijg nu een lege bladzij

Toevoeging op 11/08/2015 21:43:30:

maar in de balk niet de <title></title>

Toevoeging op 11/08/2015 21:57:35:

ah, ik heb het 3d effect eruit gehaald en nu krijg ik een waslijst aan fouten. Ik kan weer even verder :-)
 
Marthijn Buijs

Marthijn Buijs

11/08/2015 22:35:07
Quote Anchor link
Content type moet met 2x hoofdletters: Content-Type
 
Lex moen

lex moen

11/08/2015 22:47:59
Quote Anchor link
ik heb het veranderd maar het effect blijft hetzelfde
 
Ozzie PHP

Ozzie PHP

11/08/2015 22:57:28
Quote Anchor link
Lex moen op 11/08/2015 21:40:39:
... en nu krijg ik een waslijst aan fouten.

Zoals?
 
Lex moen

lex moen

12/08/2015 07:26:55
Quote Anchor link
hm. Ik kreeg eerst foutmeldingen dat op regel 61 en volgende er een variabele ontbrak en dat was $punten, diewordt gedefinieerd binnen de 3d deel van het script dat ik verwijderd had. Eigenaardig genoeg krijg ik vanochtend met errorregels aan en 3d uit een hoop gibberish:

‰PNG  IHDRGõ—e!&PLTEÿÿÿÿÿÿhį‹²IDATxœíÜ]júLÀañ^WÐf º€B³…zÝ›fÿKxã׋3ùK<¦‡òü(Tj.ÎÌZhf3I’þHË®ÐÅûÍ©_ö-¾îÚ]"ßW‡Ö¿&¬vW$@Œ_?_eäýšO³ º‚±ÿYe’·¤ùÛüí׌uäžÕ4o§N‚¬ÿœ5'ÝÈeÁ¸ûz¹Ÿf<~{©±x°Cm¯Ÿä€qààô³ë¿&[îҍæì¾D^Üqšìðj¢ƒSþ„¼GÞtDNÕ8d?ÂüȉûSÈöTjäçæÐ2y·æ‹—o‚“¼%-> ‘{VÛ~ÌŽ#ÌŒœµ']Òå>#÷ÓÌ?ÉÃ[I‘ýfÜïÉór§A^ÜqÚìðêxpÒìÉ›ŽÈ©‡ìg—9q YøC[>dáHÈ'‘÷kþòM0b’·¤å÷ò;!rÏêºïÓ_M|9ëN#LŽÜO3=ò¨KŠì7ã~Oþ¿ÜYÎŧ;À¯ºÓ{¯5Ž½w‘S5ÙÏ.?râ £‚Œ 2*Ȩ £‚Œ 2*Ȩ £‚Œ 2*Ȩ £‚Œ 2*Ȩ £‚Œ 2*Ȩ £‚Œ 2*Ȩ £‚Œ 2*Ȩ £‚Œ 2*Ȩ £‚Œ 2*Ȩ £‚|´E[(rqúçñ˶ɐEãçå7 ÆÍç&²-ÛM.dŘ Y3fB. Æí&²|°s!Œy¥ÍٝYþ„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„„|²yS(rþ¾ºk Y4¾¯s! ÆÕû*²)ûŸ¥BVŒ©5c&ä¼`\¯r!Ë;rÀ˜YºÑœÝiåOHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHÈ#×o!·!wßñÈ+ãòÊ8€o@^WÆäxcÙ\_WE¶××U‘Ýxcyc¬"oŒUä3ÆòÖXCÞkȧŒ<åo¹½»®Œ|Å£¯vy}°ëÈ'vÙÜ‹ÈöÞXDvO‹ÏU+gm¡‚qÖgüt{šËXâ‘IEND®B`‚
 
Marthijn Buijs

Marthijn Buijs

12/08/2015 09:29:19
Quote Anchor link
Dit komt omdat je geen Content-Type image/png gebruikt.
 
Lex moen

lex moen

12/08/2015 09:36:49
Quote Anchor link
Als ik dat weer inschakel krijg ik een lege pagina, terwijl
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
bovenaan de pagina staat

totaal:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Untitled</title>
</head>
<body>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'stdout');
$gegevens = array(10, 30, 40);
$kleuren = array('#FF0000', '#00FF00', '#0000FF');
$legenda = array('Type A', 'Type B', 'Type C');
$img_hoogte = 500; # Hoogte van het plaatje
$breedte = 40; # Breedte van de kolom

# Berekend de breedte van het plaatje excl. de legenda breedte

function kolom_hoogte($deel, $max, $img_hoogte, $breedte){
    return ($deel/$max)*($img_hoogte-(0.5*$breedte));
}


# Voor het 3d effect (half cosinus 30)
//function schuin_x($breedte){
//    return $breedte*0.43;

}

# Voor het 3d effect (half sinus 30)
//function schuin_y($breedte){
//    return $breedte*0.25;

}

# Zet de HTML kleur om in een rbg waarde.
function hex2rbg($color, $image){
    $string = str_replace('#','',$color);
    return    imagecolorallocate($image, hexdec(substr($string,0,2)), hexdec(substr($string,2,2)), hexdec(substr($string,4,2)));
}


# Berekend het maximum aantal tekens per array waarde en geeft de lengte van de langste terug.
function maxarraylength($input){
    foreach($input as $v){
        $output[] = strlen($v);
    }

    return max($output);
}


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

# grootte van het plaatje basseren op het aantal kolomen:
$kolomen = count($gegevens);
$width = ($kolomen*$breedte*2)+(0.5*$breedte);
$image = imagecreate($width+(maxarraylength($legenda)*7)+25, ($img_hoogte+1));

# Achtergrond:
$bg = imagecolorallocate($image, 255, 255, 255);

# KOLUMS
for($i=0;$i<$kolomen;$i++){
    # vars:
    $begin = ($i*$breedte)+($i*$breedte)+(0.5*$breedte);
    $hoogte = kolom_hoogte($gegevens[$i], max($gegevens), $img_hoogte, $breedte);
    $kleur = hex2rbg($kleuren[$i], $image);
    $black = imagecolorallocate($image, 0, 0, 0);
    
    # kolom:
    imagefilledrectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $kleur); # Vlak
    imagerectangle($image, $begin, ($img_hoogte-$hoogte), ($begin+$breedte), $img_hoogte, $black); # Omlijning
    
//    # 3d effect:
//    $punten = array(
//        $begin,#X
//        ($img_hoogte-$hoogte),#Y
      
//        ($begin+schuin_x($breedte)),#X
//        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
//
//        ($begin+$breedte+schuin_x($breedte)),#X
//        ($img_hoogte-$hoogte-schuin_y($breedte)),#Y
//      
//        ($begin+$breedte+schuin_x($breedte)),#X
//        ($img_hoogte-schuin_y($breedte)),#Y
//      
//        ($begin+$breedte),#X
//        $img_hoogte,#Y
//      
//        ($begin+$breedte),#X
//        ($img_hoogte-$hoogte)#Y
//    );
//    imagefilledpolygon($image, $punten, 6, $kleur); # Vlak
//    imagepolygon($image, $punten, 6, $black); # Omlijning
//    imageline($image, $punten[10], $punten[11], $punten[4], $punten[5], $black); # Tussen lijn
    
    # Legenda:

    $top = (15*$i)+(15*$i)+(0.5*$breedte);
    $left = ($kolomen*$breedte)+($kolomen*$breedte)+(0.5*$breedte);
    imagefilledrectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $kleur); # Vlak
    imagerectangle($image, $left, $top*0.5, $left+15, $top*0.5+10, $black); # Omlijning
    imagestring($image, 3, $left+20, $top*0.5, $legenda[$i], $black); # Text
}
# // KOLUMS

imagepng($image);

imagedestroy($image);

?>





</body>
</html>
 
- Ariën  -
Beheerder

- Ariën -

12/08/2015 09:46:13
Quote Anchor link
Een gegenereerd plaatje kan geen HTML bevatten.
Gewijzigd op 12/08/2015 09:47:13 door - Ariën -
 
Lex moen

lex moen

12/08/2015 09:50:25
Quote Anchor link
ok. Ik heb de html verwijderd, Maar wat moet ik veranderen aan
header("Content-Type: image/png"); ?
 
- Ariën  -
Beheerder

- Ariën -

12/08/2015 09:51:33
Quote Anchor link
Da's juist prima!
 
Lex moen

lex moen

12/08/2015 09:52:54
Quote Anchor link
maar ik heb nogsteeds een blanco pagina :-(
 
- Ariën  -
Beheerder

- Ariën -

12/08/2015 09:54:33
Quote Anchor link
header even wegcommenten, en kijken welke error je dan nog ziet.

Toevoeging op 12/08/2015 09:54:39:

header even wegcommenten, en kijken welke error je dan nog ziet.
 
Lex moen

lex moen

12/08/2015 09:59:42
Quote Anchor link
gedaan, maar nog steeds een blanco pagina, geen foutmeldingen

Toevoeging op 12/08/2015 10:03:48:

heb ook nog echo"fout"; ingevoegd, maar nog steeds blanco
 
- Ariën  -
Beheerder

- Ariën -

12/08/2015 10:04:25
Quote Anchor link
Display_errors setting op 1 zetten i.p.v stdout. Misschien dat dat verschil geeft? Ik heb deze notatie nooit zo gezien.
 
Lex moen

lex moen

12/08/2015 10:52:53
Quote Anchor link
nee.Nog steeds blanco. wat me wel opvalt is dat in de balk alleen het websiteadres staat www.algenie.eu/test.php kan het script 'gewoon' gestopt zijn?
 
Richard Snijders

Richard Snijders

12/08/2015 11:05:14
Quote Anchor link
Als je dit bovenin je code zet, zou je foutmeldingen moeten kunnen zien:
error_reporting(E_ALL);
ini_set('display_errors', 1);

Heb dat probleem ook altijd op productie omgevingen, wanneer het framework voor me bepaalt wat de error reporting levels zijn, maar soms maak je foutjes op de productie omgeving zelf :P
 
Lex moen

lex moen

12/08/2015 11:08:43
Quote Anchor link
arrrrgh
nee, dus
 
E vH

E vH

12/08/2015 11:11:35
Quote Anchor link
11/08/2015 21:19:43: Ik zie een hele mooie grafiek in 3 kleuren...code werkt hier probleemloos.
Opmerking: Als ik je code selecteer tot aan de eindtag, dan komt het goed.. als ik de spatie mee kopieer die er achter staat dan werkt het niet meer ;-)

12/08/2015 09:36:49: Parse error: syntax error, unexpected '}' in C:\wamp\www\phphulp\image.php on line 18
Gewijzigd op 12/08/2015 11:14:44 door E vH
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.