| Einstein.cz | O Životě.cz | All4web | Chat4U | Soldát.cz |
Tvorba WWW
 
PHP
 
Odb∞r email∙

Aktuality
╚lßnky
 
 
PartnerskΘ weby
 JakNaWeb.com - vÜe pro tvorbu webu - HTML, PHP, MySQL, ASP, CSS,
XML, JavaScripty, PHP
 
Informace o serveru
╣Θfredaktor
Marek Soldßt

hostujeme u
WEB4U

kontaktnφ email
marek@soldat.cz

ISSN 1214-0082
 
Hledßnφ
 
 
 
Anketa
JakΘho pou╛φvßte mobilnφho operßtora?

Eurotel (20%)


T-Mobile (21%)


Oskar (26%)


Jin² (12%)


Nemßm mobil (21%)



Celkem hlasovalo 110 lidφ.
 
Co s Φlßnkem ?
 
U╛ jste Φetli...?
 
Ikonka serveru
 

Znßmkovßnφ v PHP

vydßno : 05. 02. 2003, autor : Marek Soldßt, kategorie : Tvorba WWW - PHP - Ankety

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:

Ukßzka znßmkovßnφ

Ukßzka znßmkovßnφ

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.

Fotografie autora
Marek Soldßt, marek@soldat.cz
Autor je ╣Θfredaktorem serveru Einstein.cz.
 
Komentß°e
V∞cAutorDatum a Φas

K Φlßnku nejsou ╛ßdnΘ komentß°e.

Zobrazit V╣e | P°idat nov²