Despite the numerous attempts at trying to get this to work I’m stumped. I have explained in many other posts that I am very new to PHP and unfamiliar with the vast capabilities and know that I’ve almost got this to work but just can’t seem to make it happen. I’ve already had one very helpful person try to dumb it down for me [a link] https://stackoverflow.com/a/13872071/1880796 but now I just need someone to correct an error in my code to get it to work. I think there is something wrong at the end of the url because when I try to view the image and look at the url its all messed up so I don’t know what I’m doing wrong. I’ve double and triple checked all the math because it is so confusing but here is the result.php:
<?php
$filename = "Results.txt";
$lines = file($filename);
$q1 = $_POST['q1']; // stores checked button value
$q2 = $_POST['q2'];
$q3 = $_POST['q3'];
$q4 = $_POST['q4'];
$q5 = $_POST['q5'];
$q6 = $_POST['q6'];
$q7 = $_POST['q7'];
$q8 = $_POST['q8'];
$qN = 1; //question number
$newLines = '';
$total = array();
foreach($lines as $line) {
$line = trim($line); //remove excess newlines etc.
$lineArr = explode(',',$line); //split line into array by commas
$index = ${'q'.$qN}-1; //zero based
if (isset($lineArr[$index])){
$lineArr[$index]++; //add to position by one vote.
$total = array_sum($lineArr); //number of clicks
$newLines .= implode(',',$lineArr) . "\r\n"; //newLines contains numbers then also
$qN++;
}
}
//write contents back to file.
file_put_contents($filename, $newLines);
//frequencies for each line without strings
$l[1] = explode(',',$lines[0]);
$l[2] = explode(',',$lines[1]);
$l[3] = explode(',',$lines[2]);
$l[4] = explode(',',$lines[3]);
$l[5] = explode(',',$lines[4]);
$l[6] = explode(',',$lines[5]);
$l[7] = explode(',',$lines[6]);
$l[8] = explode(',',$lines[7]);
//multiply each
$result = array();
$values = array(1,2,3,4,5);
for($i=0;$i<count($l);$i++){
for($j=0;$j<count($values);$j++){
$result[$i+1][$j] = $l[$i+1][$j] * $values[$j];
}
}
//calculate percentages
$p1 = (explode(',',$lines[0]));
$p2 = (explode(',',$lines[1]));
$p3 = (explode(',',$lines[2]));
$p4 = (explode(',',$lines[3]));
$p5 = (explode(',',$lines[4]));
$p6 = (explode(',',$lines[5]));
$p7 = (explode(',',$lines[6]));
$p8 = (explode(',',$lines[7]));
// calculate averages *****For some reason most recent frequency item updated is off by one, possibly bc not up to date yet???? figure out later!!!
$f1avg = round((array_sum($result[1])/($total-1)),2);
$f2avg = round((array_sum($result[2])/($total-1)),2);
$f3avg = round((array_sum($result[3])/($total-1)),2);
$f4avg = round((array_sum($result[4])/($total-1)),2);
$f5avg = round((array_sum($result[5])/($total-1)),2);
$f6avg = round((array_sum($result[6])/($total-1)),2);
$f7avg = round((array_sum($result[7])/($total-1)),2);
$f8avg = round((array_sum($result[8])/($total-1)),2);
//pie chart question 1 information
$p1f0 = round((($p1[0]/($total-1))*360),0);
$p1f1 = round((($p1[1]/($total-1))*360),0);
$p1f2 = round((($p1[2]/($total-1))*360),0);
$p1f3 = round((($p1[3]/($total-1))*360),0);
$p1f4 = round((($p1[4]/($total-1))*360),0);
//_____________$a0________$a1______________$a2___________________$a3__________________________$a4_______________
$pC1 = array(($p1f0),($p1f0+$p1f1),($p1f0+$p1f1+$p1f2),($p1f0+$p1f1+$p1f2+$p1f3),($p1f0+$p1f1+$p1f2+$p1f3+$p1f4));
print_r ($pC1);
And here is the pie chart script:
header("Content-type: image/png");
//create pie charts
$image=imagecreatetruecolor(51,51);
//_____________________colors____________________________
$my_colorA=imagecolorallocate($image,51,51,255);
$my_colorB=imagecolorallocate($image,100,150,215);
$my_colorC=imagecolorallocate($image,20,20,151);
$my_colorX=imagecolorallocate($image,216,216,255);
$red = imagecolorallocate($image, 255, 0, 0);
$orange = imagecolorallocate($image, 191, 64, 0);
$dark_yellow = imagecolorallocate($image, 128, 128, 0);
$dark_green = imagecolorallocate($image, 64, 191, 0);
$green = imagecolorallocate($image, 0, 255, 0);
//_______________________________________________________
imagefill($image,0,0,$my_colorX);
//__________________ , center, w , h , st, end, clr , type______
imagefilledarc($image,25,25, 50, 50, 0, $a0, $red, IMG_ARC_PIE);
imagefilledarc($image,25,25, 50, 50, $a0, $a1, $orange, IMG_ARC_PIE);
imagefilledarc($image,25,25, 50, 50, $a1, $a2, $dark_yellow , IMG_ARC_PIE);
imagefilledarc($image,25,25, 50, 50, $a2, $a3, $dark_green, IMG_ARC_PIE);
imagefilledarc($image,25,25, 50, 50, $a3, $a4, $green, IMG_ARC_PIE);
//___________________________________________________________________
imagepng($image);
imagedestroy($image);
I have no idea why it isn’t working but when I click view image i get this:
PieChart.php?a0=33&a1=66&a2=230&a3=263&a4=361/%3E%3C/td%3E%3Ctd%20style=
so yeah I don’t know what I’m doing wrong! Please help!
Oh and lastly this is what I’m putting into my html.
img src=\”PieChart.php?a0=”.$pC1[0].”&a1=”.$pC1[1]. “&a2=”.$pC1[2]. “&a3=”.$pC1[3].”&a4=”.$pC1[4].”/”
and yes I’m aware it needs the img tag and php and echo i just couldn’t post it in the form.
So the solution happened to be a syntax error of some form but for anyone coming looking for insight on the code above…
1) Check the script by hard coding the input values and viewing the result.
2) Check the parameters being passed from your calling function.
After that, the code sample above is extremely similar to one you’ll find in the php manual.