Autor Zpráva
Railbot
Profil
Potřeboval bych vědět, kde je v následujícím kódu chyba a jak ji opravit. Ta se týká toho, že když v anketě zahlasuji pro předposlední (nebo tak nějak) možnost, hlas se přičtě druhé možnosti. Tak asi 2x, poté se již hlasy započítávají správně. Osobně se v php příliš nevyznám, proto bych byl rád za radu.

<?php

$soubor = "./anketa.dat";
$sloupec = "./sloupec.gif";
$height = "10";
$otazka = "Jaký máte operační systém?";
$moznosti[0] = "Windows XP";
$moznosti[1] = "Windows 2000";
$moznosti[2] = "Windows Me";
$moznosti[3] = "Windows NT";
$moznosti[4] = "Windows 98";
$moznosti[5] = "Windows 95";
$moznosti[6] = "Windows CE";
$moznosti[7] = "Windows 3.x";
$moznosti[8] = "jiný";


$hlasoval++;
if ($hlasuj != "")
{
SetCookie("hlasoval", $hlasoval, time() + 86400);
if ($hlasoval == 1)
{
$file = fopen($soubor, "r+");
$data = explode("#",fread($file,999));
$data[$hlasuj] = $data[$hlasuj] + 1;
rewind($file);
fwrite($file, implode($data,"#"));
fclose($file);
}
header("Location: ./index.php");
}

if (file_exists($soubor))
{
$file = fopen($soubor, "r+");
$data = explode("#",fread($file,999));
rewind($file);
} else
{
$file = fopen($soubor, "w");
for ($s = 0; $s < count($moznosti); $s++)
{
$data[$s] = 0;
}
}
fclose($file);
$celkem = 0;
for ($i = 0; $i < count($data); $i++)
{
$celkem += $data[$i];
}
if ($celkem < 1)
{
$celkem = 1;
}
$konst = 100 / $celkem;

?>


Samotný kód ankety

<?php

echo("<form action="./index.php" method="post"><table><tr><td colspan="2"><b><font face="Verdana" size="2">" . $otazka . "</font></b></td></tr>");
for ($x = 0; $x < count($moznosti); $x++)
{
if ($hlasoval == 1)
{
$href = "<input type="radio" name="hlasuj" value="" . $x . "">";
} else
{
$href = "";
}
echo("<tr><td valign="middle"><font face="Verdana" size="2">" . $href . $moznosti[$x] . "</font></td><td valign="middle"><font face="Verdana" size="2"><img src="" . $sloupec . "" align="middle" height="" . $height . "" width="" . number_format($data[$x] * $konst, 0) . ""> " . number_format($data[$x] * $konst, 1, ".", "") . "%</font></td></tr>");
}
if ($hlasoval == 1)
{
$txt = "<input type="submit" value="Hlasuj">";
} else
{
$txt = "Děkujeme, že jste hlasoval!";
}
echo("<tr><td colspan="2"><font size="1" face="Verdana" color="#808080">" . $txt . "</font></td></tr></table></form>");

?>

Pokud by se tomu někdo věnoval, předem uctivě děkuji. Na vyzkoušení tady.
djlj
Profil
Ať to zkouším jak to zkouším, tak mi to funguje… V tom kódu se každopádně taky nevyznám.

Úprava: tak jsem se do toho zakoukal a ten systém jsem pochopil. Nevypadá to, že by to nemělo fungovat.
Anonymní
Profil *
djlj
Já si nemohu pomoct, ale když dám Windows 3.x tak to zahlasuje pro Windows 2000 :-/ Ale jen první jeden dva hlasy.
Railbot
Profil
Specifikováno - zaškrtnu-li poslední nebo předposlední možnost, zahlasuje to pro druhou. Dám li třetí od konce zahlasuje to pro druhou a treti zaroven. Nechapu.

btw omlouvám se, Anonym jsem já.
djlj
Profil
Anonymní
Už o vidím. fakt že jo. A taky vím proč. Kdyžs tu anketu smazal, tak nemáš v souboru anketa.dat „kolonky“ pro všechny možnosti. Takže se hlasuje vždycky pro tu poslední (nebo tak nějak). Kdybys vytvořil prázdnej soubor 0#0#0#0# atd., tak by to mělo fungovat.
Railbot
Profil
djlj
Opravdu bylo to tím. Bezva. Mockrát ti děkuji! :)
Toto téma je uzamčeno. Odpověď nelze zaslat.