Eroare Warning: Division by zero

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
Mr.Sphirit
Mesaje:4

Eroare Warning: Division by zero

Salut lucrez la un script si am intampinat niste erori , ele sunt :

Cod: Selectaţi tot

Warning: Division by zero in /public_html/include/procentaj.php on line 26

Warning: Division by zero in /public_html/include/procentaj.php on line 27

Warning: Division by zero in /public_html/include/procentaj.php on line 94

Warning: Cannot modify header information - headers already sent by (output started at /public_html/include/procentaj.php:26) in /public_html/include/procentaj.php on line 149
‰PNG  IHDR"~ç‹ŮIDATxœíŰANÂ@@QjźŒ[.ŕq<“Çń˛ő8uABĽ ĺƒÂ{BĘ$Ěćg:“vx_­‡kOnŸĚ '3ČÉr×žśÇéŤa¸ĚLN#3ţ‡ç׏}?˝˝<]r&'pÓ{mVуËé4™q/ŽIe{ĚrWĂ03°5™qŽifgĚúűćsοˌ۷éd˘´ÇœëdEf0eţRśL8Kc™ÁAóOAdĆíŰlˇvV§ĺ8îxlŮ>˙˜YÚŕEţžł<ňýpúĘNoż›ńW2ăNkßu™AÎŢr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3ČÉr2ƒœĚ '3Č}ő.kác|ô˝IENDŽB`‚
Warning: imagedestroy(): 1 is not a valid Image resource in /public_html/include/procentaj.php on line 114
Iar aici este procentaj.php :

Cod: Selectaţi tot

<?php
// Config - Inceput \\
$arata_label = true; // true = arata label, false = nu arata label.
$arata_procentaj = true; // true = arata percentage, false = nu arata procentaj.
$arata_text = true; // true = arata text, false = nu arata text.
$format_label = 'square'; // square sau round pentru label.
$width = 220;
$background_color = 'CCD4E0'; // background
$culoare_text = '000000'; // culoare text
$culori_parti = array('3E98D6', 'A3BFE0', 'EDBC89', 'C10000', 'FF882F', '6CB795','FAE460'); // culorile pentru fiecare parte din grafic.
$inaltime_umbra = 16;
$umbra = true; // true sau false.
// Config - Sfarsit \\

// Script - Inceput \\
$n=$_GET["n"];
for($i=0;$i<$n;$i++)
{$date[$i]=$_GET['date'.$i];
 $label[$i]=$_GET['label'.$i];
}

$height = $width/2;

for ($i = 0; $i < count($label); $i++) 
{
    if ($date[$i]/array_sum($date) < 0.1) 
     $number[$i] = ' '.number_format(($date[$i]/array_sum($date))*100,1,',','.').'%';
    else
     $number[$i] = number_format(($date[$i]/array_sum($date))*100,1,',','.').'%';
    if (strlen($label[$i]) > $text_length)
     $text_length = strlen($label[$i]);
}

if (is_array($label))
{
$antal_label = count($label);
$xtra = (5+15*$antal_label)-($height+ceil($inaltime_umbra));
if ($xtra > 0) $xtra_height = (5+15*$antal_label)-($height+ceil($inaltime_umbra));

$xtra_width = 5;
if ($arata_label) $xtra_width += 20;
if ($arata_procentaj) $xtra_width += 45;
if ($arata_text) $xtra_width += $text_length*8;
}

$img = ImageCreateTrueColor($width+$xtra_width, $height+ceil($inaltime_umbra)+$xtra_height);

ImageFill($img, 0, 0, colorHex($img, $background_color));

foreach ($culori_parti as $colorkode) 
{
    $fill_color[] = colorHex($img, $colorkode);
    $culoare_umbra[] = colorHexshadow($img, $colorkode, $umbra);
}

$label_place = 5;

if (is_array($label))
{
for ($i = 0; $i < count($label); $i++) 
{
    if ($format_label == 'round' && $arata_label)
    {
        imagefilledellipse($img,$width+11,$label_place+5,10,10,colorHex($img, $culori_parti[$i % count($culori_parti)]));
        imageellipse($img,$width+11,$label_place+5,10,10,colorHex($img, $culoare_text));
    }
    elseif ($format_label == 'square' && $arata_label)
    {    
        imagefilledrectangle($img,$width+6,$label_place,$width+16,$label_place+10,colorHex($img, $culori_parti[$i % count($culori_parti)]));
        imagerectangle($img,$width+6,$label_place,$width+16,$label_place+10,colorHex($img, $culoare_text));
    }

    if ($arata_procentaj) $label_output = $number[$i].' ';
    if ($arata_text) $label_output = $label_output.$label[$i].' ';

    imagestring($img,'2',$width+21,$label_place,$label_output,colorHex($img, $culoare_text));
    $label_output = '';

    $label_place = $label_place + 17;
}
}
$centru_X = round($width/2);
$centru_Y = round($height/2);
$diametru_X = $width-4;
$diametru_Y = $height-4;

$suma_datelor = array_sum($date);

$inceput = 270;

for ($i = 0; $i < count($date); $i++) 
{
    $value += $date[$i];
    $sfarsit = ceil(($value/$suma_datelor)*360) + 270;
    $slice[] = array($inceput, $sfarsit, $culoare_umbra[$value_counter % count($culoare_umbra)], $fill_color[$value_counter % count($fill_color)]);
    $inceput = $sfarsit;
    $value_counter++;
}

for ($i=$centru_Y+$inaltime_umbra; $i>$centru_Y; $i--) 
{
    for ($j = 0; $j < count($slice); $j++)
    {
        if ($slice[$j][0] != $slice[$j][1]) ImageFilledArc($img, $centru_X, $i, $diametru_X, $diametru_Y, $slice[$j][0], $slice[$j][1], $slice[$j][2], IMG_ARC_PIE);
    }
}    

for ($j = 0; $j < count($slice); $j++)
{
    if ($slice[$j][0] != $slice[$j][1]) ImageFilledArc($img, $centru_X, $centru_Y, $diametru_X, $diametru_Y, $slice[$j][0], $slice[$j][1], $slice[$j][3], IMG_ARC_PIE);
}

OutputImage($img);
ImageDestroy($img);


function colorHex($img, $HexColorString) 
{
        $R = hexdec(substr($HexColorString, 0, 2));
        $G = hexdec(substr($HexColorString, 2, 2));
        $B = hexdec(substr($HexColorString, 4, 2));
        return ImageColorAllocate($img, $R, $G, $B);
}

function colorHexshadow($img, $HexColorString, $mork) 
{
    $R = hexdec(substr($HexColorString, 0, 2));
    $G = hexdec(substr($HexColorString, 2, 2));
    $B = hexdec(substr($HexColorString, 4, 2));

    if ($mork)
    {
        ($R > 99) ? $R -= 100 : $R = 0;
        ($G > 99) ? $G -= 100 : $G = 0;
        ($B > 99) ? $B -= 100 : $B = 0;
    }
    else
    {
        ($R < 220) ? $R += 35 : $R = 255;
        ($G < 220) ? $G += 35 : $G = 255;
        ($B < 220) ? $B += 35 : $B = 255;                
    }            
    
    return ImageColorAllocate($img, $R, $G, $B);
}

function OutputImage($img) 
{
    header('Content-type: image/Ppng');
    ImagePNG($img);
    ImageDestroy($img);
}
// Script - Sfarsit \\
?>
Ce pot face ?

MarPlo Mesaje:4343
La liniile 26, 27 si 94 se fac impartiri la niste variabile (array_sum($date) si $suma_datelor) care au valoarea 0, Null, sau False; iar cum impartirea la 0 nu are sens, rezulta acea eroare.
Daca tu ai scris codul scriptului, trebuie sa-l iei la revizuit (depanat) sa vezi de ce acele variabile dau 0. Trebuie adaugate conditii if() care sa execute acel cod doar cand acele variabile sunt diferite de 0.
Daca e creat de altcineva, apeleaza la el.

Subiecte similare