Umfrage? (selbst geschrieben)

Also ich habe das bei meinem Umfragescript mit 1*1px Gifs gemacht:
PHP:
$iNumberOfElements = count($rgCounts);
$i100Per = 0; 
for($i=0; $i<$iNumberOfElements; $i++)
{
	$i100Per += $rgCounts[$i];
}
			 
// In Prozente Umwandeln und Tabele ausgeben
echo '<table style="border:0px;font-family:Arial,sans-serif;font-size:10pt;">';
for($i=0; $i<$iNumberOfElements; $i++)
{
	$dPer = $rgCounts[$i] / $i100Per *100;
	echo '<tr><td width="180">'.$rgOptionText[$i].'</td><td valign="top">';
	// Bilderbalken ausgeben
	$strImg = current($rgImg);
	if(next($rgImg) == false) {reset($rgImg);}
	echo '<img src="img/'.$strImg.'.gif" height="6" width="'.($dPer * 2.5).'">'.
         '&nbsp;&nbsp;&nbsp;</td><td valign="top" align="right">';
	printf("%.2f %%<br />", $dPer);
	echo '</td><td valign="top" align="right">&nbsp;&nbsp;'.$rgCounts[$i].'</td></tr>';
		
}	
// gesammte stimmten
echo '<tr><td colspan="4" align="right"><b>Abgegebene Stimmen: '.$i100Per.'</b>'.
	 '</td></tr></table>';
Wie man sieht nehme ich die Länge der Balken noch x2,5. Das ist aber nur fürs optische.
 
Hi,

also ich habe hier mich damit mal beschäftigt weil es doch sehr interessant ist das mit der gfx Lib von PHP zu machen.
Habe einen "Fileserver" und damit die Benutzer sehen können wieviel belegt ist, habe ich eine grafische anzeige gecodet:

http://fileserver.mrfishman.de/balken.php?max_val[0]=10&max_val[1]=60&ist_val[0]=3&ist_val[1]=27
Wie man sieht, werden die Werte als Parameter übergeben:
max_val => Array(10, 60); -> 100 Prozent
ist_val => Array(3, 27); -> x Prozent

und hier der code:

PHP:
<?php
$balken = array ("Space","Files");
$left_offset = 80;
$right_offset = 100;
$bar_width = 200;
$bar_height = 20;
$bar_space = 5;
$img_width=$left_offset+$right_offset+$bar_width;
$img_height = $bar_height*count($balken)+($bar_space*count($balken)-$bar_space)+1;

$im = imagecreate($img_width,$img_height);
$idx_white = imagecolorallocate($im, 255,255,255);
$idx_gray = imagecolorallocate($im, 200,200,200);
$idx_navy = imagecolorallocate($im,0,0,128);
$idx_red = imagecolorallocate($im,140,0,0);
$idx_green = imagecolorallocate($im,0,140,0);
$idx_black = imagecolorallocate($im,0,0,0);

imagefilledrectangle($im,0,0,$img_width,$img_height,$idx_black);

$line=0;
$x1=0;
$x2=$img_width-$right_offset;
$y1=0;
$y2=0;
foreach($balken as $row)
{
 $y2=$y1+$bar_height;
 $x3=round($left_offset+($bar_width*$ist_val[$line]/$max_val[$line]));
 imagefilledrectangle($im,$x1+$left_offset,$y1,$x3,$y2,$idx_red);
 imagefilledrectangle($im,$x3,$y1,$x2,$y2,$idx_green);
 imagerectangle($im,$x1+$left_offset,$y1,$x2,$y2,$idx_gray);
 imagestring($im,5,$x1,$y1,$row.":",$idx_white);
 imagestring($im,5,$x2+10,$y1,$ist_val[$line]."/".$max_val[$line],$idx_white);
 $y1=$y2+$bar_space;
 $line++;
}

header("Content-type: image/png");
imagepng($im);

?>

falls Bedarf der Erläuterung besteht bitte melden bei: webmaster@mfishman.biz

grtz MrF
 
Zuletzt bearbeitet:
Zurück