So the problem I am having is that I have not been able to pass information calculated on a page Results.html to a script I have to generate a pie chart and then take the image and display it in my Results page. I am very new to PHP (about 2 weeks) and have only the most basic understanding so I need very explicit instructions. Either way, this is the code I’m working with:
<?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 1 information
$_SESSION['$p1f0s']= round((($p1[0]/$total)*360),2);
$_SESSION['$p1f1s']= round((($p1[1]/$total)*360),2);
$_SESSION['$p1f2s']= round((($p1[2]/$total)*360),2);
$_SESSION['$p1f3s']= round((($p1[3]/$total)*360),2);
$_SESSION['$p1f4s']= round((($p1[4]/$total)*360),2);
$p1f0 = $_SESSION['$p1f0s'];
$p1f1 = $_SESSION['$p1f1s'];
$p1f2 = $_SESSION['$p1f2s'];
$p1f3 = $_SESSION['$p1f3s'];
$p1f4 = $_SESSION['$p1f4s'];
echo $p1f2;
?>
So I tried passing the info from sessions into this:
$p1f0 = $_SESSION['$p1f0s'];
$p1f1 = $_SESSION['$p1f1s'];
$p1f2 = $_SESSION['$p1f2s'];
$p1f3 = $_SESSION['$p1f3s'];
$p1f4 = $_SESSION['$p1f4s'];
header("Content-type: image/png");
//create pie charts
$image=imagecreatetruecolor(101,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);
//_______________________________________________________
$ptsize=24;$x=20;$y=50;$angle=-10;
imagefill($image,0,0,$my_colorX);
//__________________ , center, w , h , st, end, clr , type______
imagefilledarc($image,50,25, 100, 50, 0, $p1f0, $red, IMG_ARC_PIE);
imagefilledarc($image,50,25, 100, 50, $p1f0, $p1f01, $orange, IMG_ARC_PIE);
imagefilledarc($image,50,25, 100, 50, $p1f1, $p1f2, $dark_yellow , IMG_ARC_PIE);
imagefilledarc($image,50,25, 100, 50, $p1f2, $p1f3, $dark_green, IMG_ARC_PIE);
imagefilledarc($image,50,25, 100, 50, $p1f3, $p1f4, $green, IMG_ARC_PIE);
//___________________________________________________________________
imagepng($image);
imagedestroy($image)
But was unsuccessful. I keep running into $base64_data when searching this and I kind of understand what that is supposed to do but don’t know if that’s way off base. Please help! And thanks in advance!
While you can “export” an image directly in an HTML file like so:
It’s kind of a pain. It’s a lot easier to juat have
<img src="myimage.php" />and generate it there. You can even passGETvariables.