Autor | Zpráva | ||
---|---|---|---|
Railbot Profil |
#1 · Zasláno: 14. 10. 2007, 20:27:24 · Upravil/a: Railbot
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 |
#2 · Zasláno: 14. 10. 2007, 20:31:11 · Upravil/a: djlj
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 * |
#3 · Zasláno: 14. 10. 2007, 20:47:15
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 |
#4 · Zasláno: 14. 10. 2007, 20:49:16 · Upravil/a: Railbot
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 |
#5 · Zasláno: 14. 10. 2007, 20:49:34 · Upravil/a: djlj
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 |
#6 · Zasláno: 14. 10. 2007, 20:53:27 · Upravil/a: Railbot
djlj
Opravdu bylo to tím. Bezva. Mockrát ti děkuji! :) |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0