Eurotel (20%)
T-Mobile (21%)
Oskar (26%)
Jin² (12%)
Nemßm mobil (21%)
Jednoduchß anketa ANO/NE v PHP
V tomto Φlßnku si povφme o tom, jak vytvo°it jednoduchou anketu ANO/NE v PHP a bez pomoci databßze.
Na╣e anketa bude zobrazovat poΦet kladn²ch a zßporn²ch odpov∞dφ, poΦet hlasujφcφch nßv╣t∞vnφk∙ a v²sledek ztvßrnφ do grafickΘ podoby formou zelenΘho a ΦervernΘho gifu, kter² p°izp∙sobφ svou ╣φ°ku podle toho, jak velkß Φßst u╛ivatel∙ hlasovala pro danou odpov∞∩.
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 hlasovßno) a samotnΘho zobrazenφ ankety. Anketu samoz°ejm∞ m∙╛ete o╣et°it tak, aby v nφ jeden u╛ivatel nemohl hlasovat vφcekrßt. To je ale slo╛it∞j╣φ tΘma, kterΘmu se budeme v∞novat v jinΘm Φlßnku. 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("anketa.dat")):
$fp = fopen("anketa.dat", "r");
$data_anketa = FRead ($fp, FileSize("anketa.dat"));
list($ano,$ne) = Explode(":", $data_anketa);
endif;
V prvnφ Φßsti, pokud u╛ existuje soubor s v²sledky ankety anketa.dat, naΦteme obsah celΘho souboru do prom∞nnΘ $data_anketa. Pomocφ funkce explode ho rozd∞lφme na Φßst p°ed dvojteΦkou (kladnΘ odpov∞di) a za pomlΦkou (zßbornΘ odpov∞di). JednotlivΘ Φßsti pak ulo╛φme do prom∞nn²ch $ano a ne.
╚ßst druhß - zßpis novΘho hlasu
if ($odpoved == "ano" || $odpoved == "ne") {
Zßpis novΘho hlasu provedeme jen ve chvφli, kdy u╛ivatel kledpnul na n∞jakou odpov∞∩ a prom∞nnß $odpoved mß hodnotu ano, nebo ne.
if (!file_exists("anketa.dat")):
$ano = "0";
$ne = "0";
$fp = fopen("anketa.dat", "w");
fwrite ($fp, $ano .":" . $ne);
fclose($fp);
endif;
Pokud je╣t∞ neexistuje soubor s anketou, vytvo°φme nov², kde poΦet odpov∞dφ ano i ne bude nula.
if (1) {
// Zde m∙╛ete vlo╛it aktivaci blokovßnφ op∞tovnΘho hlasovßnφ
if ($odpoved == "ano"):
$ano++;
$data_anketa = $ano. ":" . $ne;
else:
$ne++;
$data_anketa = $ano. ":" . $ne;
endif;
$fp = fopen ("anketa.dat", "w");
fwrite ($fp, $data_anketa);
fclose ($fp);
}
Pokud tento nßv╣t∞vnφk je╣t∞ nehlasoval (v tomto p°φpad∞ op∞tovnΘ hlasovßnφ o╣∞t°eno nenφ), p°iΦte se jedna odpov∞∩ bu∩ ke kladn²m odpov∞dφm ($ano), nebo k t∞m zßporn²m ($ne). Aktußlnφ v²sledky se pak ulo╛φ do souboru.
}
?>
╚ßst t°etφ - zobrazenφ ankety
<table>
<tr><td colspan="2">
Souhlashlasφte se vsupem ╚R do EU?
</td></tr>
<tr><td align="left">
<?php if(1) { ?>
<a href="anketa.php?odpoved=ano">Ano</a>
<?php } else { ?>
Ano
<?php } ?>
<br/><?php echo($ano); ?>
</td><td align="right">
<?php if(1) { ?>
<a href="anketa.php?odpoved=ne">Ne</a>
<?php } else { ?>
Ne
<?php } ?>
<br/><?php echo($ne); ?>
</td></tr>
Pokud nßv╣t∞vnφk je╣t∞ nehlasoval (v tomto p°φklad∞ nenφ o╣et°eno), zobrazφ se texty Ano a Ne, jako odkazy. Pod ka╛dou odpov∞dφ je takΘ zobrazen poΦet hlasujφcφch, kte°φ tuto odpov∞∩ zvolili.
<tr><td colspan="2" align="center">
<?php
if (file_exists("anketa.dat")) {
$soucet = $ano + $ne;
$wano = round(100/$soucet*$ano);
$wne = 100 - $wano;
} else {
$wano=50;
$wne=50;
}
?>
<img src="ano.gif" width=<?php echo($wano); ?> height="6" border="0" alt=""><img src="ne.gif" width=<?php echo($wne); ?> height="6" border="0" alt=""><br><br>
</td></tr>
Pokud soubor anketa.dat existuje, pou╛ijφ se odpov∞di, kterΘ u╛ byly naΦteny d°φve. Tento "graf" bude mφt ╣φ°ku 100px, proto ╣φ°ka levΘho sloupce bude 100 / kladnΘ odpov∞di a ╣φ°ka sloupce pravΘho bude 100px + ╣φ°ka levΘho sloupce. Tφm zajistφme, ╛e dohromady bude graf ╣irok² 100 poxel∙. Pokud soubor anketa.dat je╣t∞ neexistuje, bude ╣φ°ka levΘho i pravΘho sloupce stejnß, tedy 50px.
<tr><td colspan="2">
Celkem hlasovalo <?php echo($ano + $ne); ?> lidφ.
</td></tr>
</table>
A je╣t∞ m∙╛eme °φct, kolik lidφ u╛ v na╣φ anket∞ hlasovalo. To provedeme souΦtem kladn²ch a zßporn²ch odpov∞dφ.
Zßv∞r
V╣echny soubory ankety vΦetn∞ obrßzk∙ si m∙╛ete stßhnout.
V∞c | Autor | Datum a Φas |
K Φlßnku nejsou ╛ßdnΘ komentß°e. | ||
Zobrazit V╣e | P°idat nov² |