2011-08-18 3 views
0

데이터베이스가 맞다 :막 대형 차트 코드가 작동하지 않는 이유는 무엇입니까?

DATABASE `poll`; TABLE `results` CREATE TABLE `results` ( 
    book_type VARCHAR(50), 
    num_votes INT 
); 

INSERT INTO `results` values 
    ('Classic', 15), 
    ('Fantasy', 7), 
    ('Humor', 32), 
    ('Mystery', 12), 
    ('Poetry', 25); 

코드는 오류가 표시

<?php 
    $dbhandle = mysql_connect("localhost","root","123") or die("unable to connect to mysql"); 

    $selected = mysql_select_db("poll",$dbhandle); 

    $result = mysql_query("SELECT * FROM results"); 

    $num_poller = mysql_num_rows($result); 

    $total_votes = 0; 
    while($row = mysql_fetch_array($result)){ 
     $total_votes += $row{'num_votes'}; 

    } 

    mysql_data_seek($result,0); 
    mysql_close($dbhandle); 

    putenv('GDFONTPATH=C:\WINDOWS\Fonts'); 
    $font = 'arial'; 
    $y = 50; 
    $width =700; 
    $bar_height =20; 
    $height = $num_poller * $bar_height *1.5 + 70; 
    $bar_unit = ($width - 400)/100; 

    $image = imagecreate($width,$height); 

    $white = imagecolorallocate($image,255,255,255); 
    $black = imagecolorallocate($image,0,0,0); 
    $red = imagecolorallocate($image,255,0,0); 
    $blue = imagecolorallocate($image,0,0,255); 

    imagefill($image,$width,$height,$white); 

    imagerectangle($image,0,0,$width-1,$height-1,$black); 

    imagettftext($image,16,0,$width/3+50,$y-20,$black,$font,'poll results'); 

    while($row = mysql_fetch_object($result)){ 
     if($total_votes > 0){ 
      $percent = intval(round(($row->num_votes/$total_votes)*100)); 

     }else{ 
      $percent =0; 

    } 

    imagettftext($image,12,0,10, $y+($bar_height/2), $black, $font, $row->book_type); 
    //Output percentage for a particular value 
    imagettftext($image, 12, 0, 170, $y + ($bar_height/2),$red,$font,$percent.'%'); 

    $bar_length = $percent * $bar_unit; 

    //Draw a shape that corresponds to 100% 
    imagerectangle($image, $bar_length+221, $y-2, (220+(100*$bar_unit)), $y+$bar_height, $black); 
    //Output a bar for a particular value 
    imagefilledrectangle($image,220,$y-2,220+$bar_length, $y+$bar_height, $blue); 
    //Output the number of votes 
    imagettftext($image, 12, 0, 250+100*$bar_unit, $y+($bar_height/2), $black, $font, $row->num_votes.' votes cast.'); 


    $y = $y + ($bar_height * 1.5); 

    }  

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

    imagejpeg($image);  

    imagedestroy($image); 

: the image...cannot be displayed because it contains errors?. 코드에 무슨 문제가 있습니까? 고맙습니다.

+3

['error_reporting (E_ALL);'] (http://php.net/manual/en/function.error-reporting.php)가 먼저 와야합니다. –

+0

error_reporting (E_ALL)을 추가했습니다. 코드를 먼저 읽으십시오. 여전히 오류 팁이 없습니다. – zhuanzhou

+1

코드를 실행하고'exit (var_dump ($ some_variables))'를 실행하여 필요한 사항을 확인하십시오. –

답변

0

실제 오류가 발생하면 실행중인 것처럼 보입니다. @Wesley와 같은 error_reporting을 설정하고 싶습니다. error_reporintg(-1);을 누른 다음 에테르를 php.error-log에서 찾거나 header("Content-Type: image/jpeg");을 제거하여 display_errors을 사용하도록 설정 한 경우 브라우저에서 오류가 표시됩니다.

Warning: Some error..... 
ZWW$%$%BINARY-IMAGE-STUFF 

을하고 브라우저가 출력에서 ​​적절한 JPEG 헤더를 얻을 수 없습니다 응답은 다음과 같습니다 때문에

보통 당신은 "잘못된"오류가 발생합니다.

관련 문제