<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<title>Wyniki głosowania</title>
</head>
<body>
<div>
<?php
/*Skrypt pochodzi z książki "PHP. 101 praktycznych skryptów"
  autor: Marcin Lis                    http://marcinlis.com*/

function vote()
{
  if(!isSet($_GET["vote"]) || $_GET["vote"] == ""){
    echo("Nie został zaznaczony żaden z kolorów.");
    return false;
  }
  else{
    $color = $_GET["vote"];
  }

  if(file_exists("colors.txt")){
    if(($fp = fopen("colors.txt", "r+")) === false){
      echo("Błąd serwera. Głos nie został uwzględniony.");
      return false;
    }
  }
  else{
    if(($fp = fopen("colors.txt", "w+")) === false){
      echo("Błąd serwera. Głos nie został uwzględniony.");
      return false;
    }
  }

  $czerwony = intval(fgets($fp));
  $zielony = intval(fgets($fp));
  $niebieski = intval(fgets($fp));
  $fioletowy = intval(fgets($fp));
  $czarny = intval(fgets($fp));

  switch($color){
    case "czerwony":$czerwony++;break;
    case "zielony":$zielony++;break;
    case "niebieski":$niebieski++;break;
    case "fioletowy":$fioletowy++;break;
    case "czarny":$czarny++;break;
  }
  fseek($fp, 0);
  fputs($fp, $czerwony."\r\n");
  fputs($fp, $zielony."\r\n");
  fputs($fp, $niebieski."\r\n");
  fputs($fp, $fioletowy."\r\n");
  fputs($fp, $czarny."\r\n");
  fclose($fp);
  return true;
}

function show()
{
  if(file_exists("colors.txt")){
    if(($fp = fopen("colors.txt", "r")) === false){
      echo("Błąd serwera. Wyniki ankiety nie są dostępne.");
      return;
    }
  }
  else{
    if(($fp = fopen("colors.txt", "w+")) === false){
      echo("Błąd serwera. Wyniki ankiety nie są dostępne.");
      return;
    }
  }

  $czerwony = intval(fgets($fp));
  $zielony = intval(fgets($fp));
  $niebieski = intval(fgets($fp));
  $fioletowy = intval(fgets($fp));
  $czarny = intval(fgets($fp));

  $votes_no = $czerwony + $zielony + $niebieski + $fioletowy + $czarny;
  $votes_no == 0?$votes_no = 1:0;

  $czerwony_proc = sprintf("%.2f", $czerwony * 100 / $votes_no);
  $zielony_proc = sprintf("%.2f", $zielony * 100 / $votes_no);
  $niebieski_proc = sprintf("%.2f", $niebieski * 100 / $votes_no);
  $fioletowy_proc = sprintf("%.2f", $fioletowy * 100 / $votes_no);
  $czarny_proc = sprintf("%.2f", $czarny * 100 / $votes_no);
  echo("<table border='1'>");

  echo("<tr><td>Nazwa koloru</td><td>Liczba głosów</td>");
  echo("<td>Procent głosów</td></tr>");

  echo("<tr><td>czerwony</td><td>$czerwony</td>");
  echo("<td>$czerwony_proc</td></tr>");

  echo("<tr><td>zielony</td><td>$zielony</td>");
  echo("<td>$zielony_proc</td></tr>");

  echo("<tr><td>niebieski</td><td>$niebieski</td>");
  echo("<td>$niebieski_proc</td></tr>");

  echo("<tr><td>fioletowy</td><td>$fioletowy</td>");
  echo("<td>$fioletowy_proc</td></tr>");

  echo("<tr><td>czarny</td><td>$czarny</td>");
  echo("<td>$czarny_proc</td></tr>");

  echo("</table>");
}

if(isSet($_GET["action"])){
  if($_GET["action"] == "show"){
    show();
  }
  else if($_GET["action"] == "vote"){
    if(vote()) show();
  }
  else{
    echo("Otrzymano nieprawidłowe dane.");
  }
}
else{
  echo("Otrzymano nieprawidłowe dane.");
}
?>
</div>
</body>
</html>
