Tämä skripti on graafinen kysely, jossa on vastaus vaihtoehtoja maximissaan 8 kpl.
Tässä skriptissä on käytetty hyväksi Antti Laaksosen <a href="https://www.ohjelmointiputka.net/koodivinkit/23564-php-php-ympyrädiagrammi">PHP-ympyrädiagrammi</a> koodia kuvaajan piirtämisessä.
Tämä skripti tarvitsee palvelimelta php tuen ja GD-libraryn, jonka version on oltava vähintään 2.0.
Koodi laitetaan sivulle include 'polli.php'; tavalla
polli.php
<?php //Asetukset $aanestaneet = @file("admin/aanestaneet.txt"); // Tiedosto jossa on jo äänestäneiden IP-osoitteet $tulokset = @file("admin/tulokset.txt"); // Tiedosto jossa on äänien määrä ja kysymykset if ($_GET["vastaus"] == "") { //Käydään jo äänestäneiden ip osoitteet läpi foreach ($aanestaneet as $value) { $aanestanneet = explode("|", $value); $ip = trim($aanestanneet[0]); if ($ip == $_SERVER['REMOTE_ADDR']) { //Jos on jo äänestännyt niin lisätään kuvaaja echo '<img src="kuvaaja.php" alt="Kyselyn tulokset" />'; die(); } //Jos ei niin lisätään kysymykset elseif($ip != $_SERVER['REMOTE_ADDR']) { $r = 0; echo '<center>'; echo '<h3><u>Kysely</u></h3><br />'; foreach ($tulokset as $value) { $kysymykset = explode("|", $value); $kysymys = trim($kysymykset[1]); $kysymys = str_replace("ä", "ä", $kysymys); $kysymys = str_replace("ö", "ö", $kysymys); echo '<a href="index.php?sivu=etusivu&vastaus=' . $r . '" title="' . $kysymys . '">' . $kysymys . '<br />'; $r++; } echo '<br /></center>'; die(); } } } elseif ($_GET["vastaus"] != ""){ //Tarkistetaan taas onko jo äänestetty, ettei voi huijata foreach ($aanestaneet as $value) { $aanestanneet = explode("|", $value); $ip = trim($aanestanneet[0]); if ($ip == $_SERVER['REMOTE_ADDR']) { echo '<img src="kuvaaja.php" alt="Kyselyn tulokset" />'; die(); } } //Asetukset $faanestaneet = fopen("admin/aanestaneet.txt", "a"); // Tiedosto johon tallennetaan jo äänestäneiden koneiden IP-osoitteet $ftulokset = fopen("admin/tulokset.txt","w"); // Tiedosto johon tallennetaan äänien määrä ja kysymykset //Otetaan vastaus numero ja ip osoite talteen $vastaus = $_GET["vastaus"]; $iposote = $_SERVER['REMOTE_ADDR']; //Tarkistetaan ettei huijata if ($vastaus > count($tulokset)) { echo '<img src="kuvaaja.php" alt="Kyselyn tulokset" />'; } //Jaetaan tulokset tiedoston merkkijonot | merkin kohdalta for ($i=0; $i<count($tulokset); $i++) { $entry = explode("|", $tulokset[$vastaus]); } //Lisätään tuloksiin ääni $tulokset[$vastaus]=$entry[0]+1 . "|" . $entry[1] . "|\r\n"; foreach ($tulokset as $rivi) { fwrite($ftulokset, "$rivi"); } fclose($ftulokset); //Lisätään ip osoite ettei voi äänestään uudelleen ja näytetään kuvaaja fputs($faanestaneet,"" .$iposote."|"); fputs($faanestaneet, "\r\n"); fclose($faanestaneet); echo '<img src="kuvaaja.php" alt="Kyselyn tulokset" />'; } ?>
kuvaaja.php
<?php //Asetukset $otsikko="Kyselyn vastaukset"; // Kuvan otsikko $tiedosto = file("admin/tulokset.txt"); // Tiedosto jossa on tulokset ja kysymykset $yksikko="%"; //Yksikkö missä vastaus tulee $z = 0; $x = 0; //Käydään kaikki äänet läpi foreach ($tiedosto as $value) { $tiedot = explode("|", $value); $kaikkiaanet = $kaikkiaanet + $tiedot[0]; $x++; } //Jaetaan tiedoston merkkijonot | merkin kohdalta foreach ($tiedosto as $value) { $tiedot = explode("|", $value); //Annetaan $arvo muuttujaan 1 desimaalin tarkkuudella oleva luku ja lukua vastaavan vastauksen merkkijono $arvo[$z][0]=round($tiedot[0]/$kaikkiaanet*100, 1); $arvo[$z][1]=$tiedot[1]; $z++; } //kuvan alustaminen $leveys=254; //kuvan leveys $korkeus=145+count($arvo)*(ImageFontHeight(2)+4); //kuvan korkeus header ("Content-type: image/png"); $im = @ImageCreate ($leveys, $korkeus) or die ("GD-kirjaston käyttäminen ei onnistu!"); $valkoinen = ImageColorAllocate ($im, 255, 255, 255); $musta=ImageColorAllocate ($im, 0, 0, 0); //arvojen yhteismäärä ja värien määritys for ($i=0;$i<count($arvo);$i++) { $yht=$yht+$arvo[$i][0]; $arvo[$i][2]=ImageColorAllocate ($im, $i*60,($i+1)*60,($i+2)*60); } //kehykset ImageRectangle($im,36,131,218,133+count($arvo)*(ImageFontHeight(2)+4),$musta); //otsikko $opituus=ImageFontWidth(5)*strlen($otsikko); $okohta=$leveys/2-$opituus/2; ImageString($im,5,$okohta,5,$otsikko,$musta); //kuvion piirtäminen $vkulma=0; for ($i=0;$i<count($arvo);$i++) { ImageFilledRectangle($im,39,136+$i*(ImageFontHeight(2)+4),46,145+$i*(ImageFontHeight(2)+4),$arvo[$i][2]); ImageString($im,2,49,135+$i*(ImageFontHeight(2)+4),$arvo[$i][1]." (".$arvo[$i][0].$yksikko.")",$musta); $kulma=($arvo[$i][0]/$yht)*360; ImageFilledArc($im,$leveys/2-1,75,90,90,$vkulma,$vkulma+$kulma,$arvo[$i][2],IMG_ARC_PIE); $vkulma=$kulma+$vkulma; } ImageArc($im,126,75,90,90,0,360,$musta); //kuva PNG-muotoon ImagePNG ($im); ?>
tulokset.txt
64|Hieno ulkoasu| 63|Menettelevä ulkoasu| 22|Vanha oli hienonpi| 25|Mätä ku rusina|
aanestaneet.txt
52.527.235.257| 42.62.213.146| 192.168.0.254|
Aihe on jo aika vanha, joten et voi enää vastata siihen.