Eurotel (20%)
T-Mobile (21%)
Oskar (26%)
Jin² (12%)
Nemßm mobil (21%)
Znßmkovßnφ v PHP
Nenφ na ╣kodu, kdy╛ majφ nßv╣t∞vnφci webu mo╛nost ohodnotit Φlßnek, fotografii, nebo program znßmkou 1 - 5 (jako ve ╣kole). A abyste se s tφmto skriptem na svΘ strßnky nemuseli namßhat, je tu tento Φlßnek.
Princip ankety nenφ slo╛it² - data budeme zapisovat do textovΘho souboru a ke ka╛dΘ znßmce napφ╣eme poΦet lidφ, kte°φ ji ud∞lili. JednotlivΘ poΦty odd∞lφme dvojteΦkou. Kdy╛ pak budeme chtφt zobrazit v²slednou znßmku, jednodu╣e vytvo°φme pr∙m∞r. Nejd°φve si ukß╛eme, jak vlastn∞ bude na╣e anketa vypadat:
Zdrojov² k≤d ankety se zklßdß ze t°φ zßkladnφch Φßstφ - naΦtenφ aktußlnφch v²sledk∙, zapsßnφ hlas∙ do souboru (pokud bylo znßmkovßno) a samotnΘho zobrazenφ pr∙m∞ru. Znßmkovßnφ samoz°ejm∞ m∙╛ete o╣et°it tak, aby v n∞m jeden u╛ivatel nemohl hlasovat vφcekrßt. Toto o╣et°ovßnφ ale bude tΘmatem n∞kterΘho z dal╣φch Φlßnk∙. Samotnou ·pravu lze provΘst tak, ╛e v╣echny podmφnky if(1) nahradφte podmφnkou pro zßpis (if($muzuhlasovat)). Moment, kdy probφhß zßpis hlasu nßv╣t∞vnφka je pak zastoupen komentß°em Zde m∙╛ete vlo╛it aktivaci blokovßnφ op∞tovnΘho hlasovßnφ. PoΦet odpov∞dφ je zapsßn v souboru ve formßtu ano:ne.
╚ßst prvnφ - naΦtenφ aktußlnφho stavu
<?php
if (file_exists("znamky.dat")):
$fp = fopen("znamky.dat", "r");
$data_znamkovani = FRead ($fp, FileSize("znamky.dat"));
list($z1,$z2,$z3,$z4,$z5) = Explode(":", $data_znamkovani);
endif;
V prvnφ Φßsti, pokud u╛ existuje soubor s v²sledky znßmkovßnφ znamkovani.dat, naΦteme obsah celΘho souboru do prom∞nnΘ $data_znamkovani. Pomocφ funkce explode ho n∞jprve rozd∞lφme na p∞t Φßstφ a ty ulo╛φme do pole. Funkce list potom zapφ╣e data z nov∞ vytvo°enΘho pole do prom∞nn²ch $z1, $z2, $z3, $z4 a $z5. Prom∞nnß $z1 obsahuje poΦet jedniΦek, $z2 poΦet dvojek a tak dßle...
╚ßst druhß - zßpis novΘ znßmky
if (isset($odpoved)) {
Novß znßmka se p°iΦφtß tehdy, klepnul-li p°ed tφm u╛ivatel na p°φslu╣n² hypertextov² odkaz. V tom p°φpad∞ se strßnka znamkovani.php naΦte znovu, tentokrßt s parametrem odpoved=znßmka. A v tom samΘm p°φpad∞ pot°ebujeme zapoΦφtat jeho hlas.
if (!file_exists("znamky.dat")):
$z1 = "0";
$z2 = "0";
$z3 = "0";
$z4 = "0";
$z5 = "0";
$fp = fopen("znamky.dat", "w");
fwrite ($fp, $z1 .":" . $z2 .":" . $z3 .":" . $z4 .":" . $z5);
fclose($fp);
endif;
Pokud je╣t∞ neexistuje soubor se znßmkami, vytvo°φme ·pln∞ nov², kde ka╛dß znßmka bude mφt 0 hlas∙.
if (1) {
// Zde m∙╛ete vlo╛it aktivaci blokovßnφ op∞tovnΘho hlasovßnφ
if (isset($odpoved)):
if ($odpoved == '1') $z1++;
if ($odpoved == '2') $z2++;
if ($odpoved == '3') $z3++;
if ($odpoved == '4') $z4++;
if ($odpoved == '5') $z5++;
$data_znamkovani = $z1 . ":" . $z2 . ":" . $z3 . ":" . $z4 . ":" . $z5;
endif;
$fp = fopen ("znamky.dat", "w");
fwrite ($fp, $data_znamkovani);
fclose ($fp);
}
Pokud tento nßv╣t∞vnφk je╣t∞ neznßmkoval (v tomto p°φpad∞ op∞tovnΘ znßmkovßnφ o╣∞t°eno nenφ), p°iΦte se jeden hlas ke znßmce, kterou zvolil. Aktußlnφ v²sledky se pak ulo╛φ do souboru.
}
?>
╚ßst t°etφ - zobrazenφ ankety
<table>
<tr><td colspan="2">
Jak se Vßm to lφbφ?<br/>
Znßmkujte, jako ve ╣kole!
</td></tr>
<tr><td align="left">
<?php if(1) { ?>
<a href="znamkovani.php?odpoved=1">1</a> |
<a href="znamkovani.php?odpoved=2">2</a> |
<a href="znamkovani.php?odpoved=3">3</a> |
<a href="znamkovani.php?odpoved=4">4</a> |
<a href="znamkovani.php?odpoved=5">5</a>
<?php } else { ?>
U╛ jste hlasovali.
<?php } ?>
</td></tr>
<tr><td colspan="2" align="center">
<?php
if (file_exists("znamky.dat")) {
$soucet = ($z1*1) + ($z2*2) + ($z3*3) + ($z4*4) + ($z5*5);
$znamek = $z1 + $z2 + $z3 + $z4 + $z5;
if($soucet != 0) { $prumer = round(100*($soucet/$znamek))/100; } else { $prumer='?'; }
} else {
$prumer='?';
}
echo('Pr∙m∞r : <strong>' . $prumer . '</strong>');
?>
</td></tr>
<tr><td colspan="2">
Celkem znßmkovalo <?php echo($znamek); ?> lidφ.
</td></tr>
</table>
T°etφ Φßst je o trochu slo╛it∞j╣φ. Nejprve je nutnΘ zobrazit odkazy 1 - 5, aby bylo mo╛nΘ znßmkovat. Pokud znßmkovßnφ o╣et°φme proti op∞tovnΘmu hlasovßnφ a u╛ivatel u╛ hlasoval, zobrazφ se text U╛ jste hlasovali..
SamotnΘ poΦφtßnφ dosavadnφho pr∙m∞ru je pak spφ╣e zßle╛itostφ matematiky. To spoΦφvß v zapoΦφtßnφ ka╛dΘ znßmky tolikrßt, kolikrßt byla zvolena a nßslednΘm vyd∞lenφ celkov²m poΦtem znßmek. Ten pak m∙╛eme bu∩ okam╛it∞ zobrazit, nebo nabφdnout zobrazenφ pr∙m∞ru a╛ potΘ, co nßv╣t∞vnφk p°isp∞je sv²m hlasem (aby nebyl ovliv≥ovßn).
Zßv∞r
Zdrojov² k≤d znßmkovßnφ si m∙╛ete stßhnout.
V∞c | Autor | Datum a Φas |
K Φlßnku nejsou ╛ßdnΘ komentß°e. | ||
Zobrazit V╣e | P°idat nov² |