Zpět na seznam článků     Číst komentáře (1)     Verze pro tisk

Anketa v PHP bez MySQL

Autor: D@Mike   
19.6.2004

Tento článek se může hodit tomu kdo si chce udělat anketu a nemůže z různých důvodů na svém webu používat MySQL.


Dnes si řekneme něco o tom jak udělat anketu v PHP bez MySQL, což se někdy hodí s ohledem
na to, že na každém serveru nemusíte mít k dispozici MySQL databázi. To se sice dá považovat za víhodu, ale na druhou
stranu existují servery, na kterých není možné zapisovat do souborů a to je bohužel bez použití MySQL nutnost.
Nyní přejdeme k samotnému zdroji. Nejprve si musíme vytvořit soubor, kam se budou ukládat data ankety. Pojmenujeme jej
anketa_data.dat a vložíme do něj tyto data.

Jak se vám anketa líbí?;2;Ano:Ne;192:168;360

Teď měnší vysvětlivka. Znaménko ; rozděluje jednotlivá data na pole a znaménko : rozděluju údaje v polích na další části.
První pole "Jak se vám anketa líbí?" je otázka ankety. Druhé pole je počet možných odpovědí. Třetí pole "Ano:Ne" jsou možné
odpovědi, které rozdělujeme znaménkem ":". Další pole jsou počty hlasů pro jednotlivé odpovědi a poslední pole je celkový
počet hlasů. Teď je nutné vytvořit soubor který bude anketu zobrazovat. Pojmenujeme ho anketa.php
Uvedu zdroj a na každém řádku bude za znaky // vysvětlivka.
---------------------------------
<?
if (File_Exists ("anketa_data.dat")): //Podmínka pokud anketa existuje
$fp = FOpen ("anketa_data.dat", "r"); //Otevřít soubor anketa_data.dat pro čtení
$data = FRead ($fp, FileSize("anketa_data.dat")); //Načíst to proměnné $data soubor anketa_data.dat

$newdata = explode(";",$data); //Do proměnné $newdata rozděli proměnnou $data znakem ;
$odpoved = explode(":",$newdata[2]); //Druhé pole v proměnné $newdata rozdělit znakem : a vložit jej do proměnné $odpoved
$pocty = explode(":",$newdata[3]); //Třetí pole v proměnné $newdata rozdělit znakem : a vložit jej do proměnné $pocty

echo"<table border=1 width=220><tr><td align=center>$newdata[0]</td></tr><tr><td>"; //Vypsat základ tabulky a otázku

for($x=0;$x<$newdata[1];$x++): //Cyklus který vypisuje odpovědi

$sirka = $pocty[$x] / ($newdata[4] / 100) * 2.1; //Z počtu odpovědí spočítat velikost ukazatele

if(!isset($HTTP_COOKIE_VARS["UkazkovaAnketa"])): //Podmínka pokud ještě nebylo hlasováno
echo"<a href=anketa_pridej.php?hlas=$x style=text-decoration:none>$odpoved[$x] - $pocty[$x]<br><img src=prouzek.jpg height=7 width=$sirka align=center></a><br>"; //Vypsat otázku x (x je proměnná cyklu for) i s obrázkovím barem
else:
echo"$odpoved[$x] - $pocty[$x]<br><img src=prouzek.jpg height=7 width=$sirka align=center><br>"; //Pokud již bylo hlasováno vypsat opovědi bez odkazu
endif;

endfor;

echo"</td></tr><tr><td align=center>Hlasů celkem: $newdata[4]</td></tr></table>"; //Ukončení tabulky a vypsání počtu hlasů


FClose($fp); //Uzavření souboru
else:
echo"<font color=red>Momentálně neprobíhá žádná anketa.</font>"; //Pokud soubor anketa_data.dat nebude existovat vypíše se, že neprobíhá žádná anketa.
endif;
?>

---------------------------------
Dále je nutné vytvořit soubor který bude zpracovávat vaši odpověď. Pojmenujeme jej anketa_pridej.php
Opět uvedu zdroj a na každém řádku bude za znaky // vysvětlivka.
---------------------------------
<?
$fp = FOpen ("anketa_data.dat", "r"); //Otevřít soubor anketa_data.dat pro čtení
$data = FRead ($fp, FileSize("anketa_data.dat")); //Načíst to proměnné $data soubor anketa_data.dat

$newdata = explode(";",$data); //Do proměnné $newdata rozděli proměnnou $data znakem ;
$pocty = explode(":",$newdata[3]); //Třetí pole v proměnné $newdata rozdělit znakem : a vložit jej do proměnné $pocty

for($x=0;$x<$newdata[1];$x++): //Cyklus který kontroluje odpovědi

if($hlas==$x): //Pokud bude číslo otázky souhlasit s vaši odpovědí
$pocty[$x] = $pocty[$x] + 1; //Přičte se jeden hlas k dané odpovědi
endif;

endfor;

FClose($fp); //Uzavření souboru


$newdata[4] = $newdata[4] + 1; //Přičtení jedničky k celkovému počtu hlasů
$newdata[3] = implode(":",$pocty); //Do pole $newdata[3] spojit všechny počty hlasů a mezi ně vložit znak :

$finaldata = implode(";",$newdata); //Do koncové proměnné která se bude ukládat do souboru se spojít všechna pole a mezi ně se vloží znak ;

$fp = FOpen ("anketa_data.dat", "w"); //Otevřít soubor anketa_data.dat pro zápis
FWrite ($fp, $finaldata); //Zapsat do souboru anketa_data.dat proměnnou $finaldata
FClose ($fp); //Uzavření souboru

SetCookie("UkazkovaAnketa","Voted",time()+(24*60*60)); //Nastavení cookie, že už bylo hlasováno s platností jednoho dne

?>
<html><head>
<META HTTP-EQUIV="Refresh" CONTENT="0; URL=anketa.php"> //Znovunačtení stránky anketa.php
</head></html>

---------------------------------
Už máme všechny zdrojové soubory, které potřebujeme. Nyní už jen stačí přihrát k anketě ještě nějaký
obrázek jedno jaké výšky a s šířkou 1px. Pojmenujte ho prouzek.jpg. Ten bude tvořit obrázkový
bar s počtem hlasů. Doufám, že vám tento článek nějak pomohl a pokud si chtete vidět jak hotová anketa vypadá
koukněte ZDE. Pro stažení celé ankety klikněte ZDE.

Peace, Miky


Líbil se Vám článek?
Budeme potěšeni, pokud vás zaujme také reklamní nabídka

Social Bookmarking

     





Hodnocení/Hlasovalo: 2.72/32

1  2  3  4  5    
(známkování jako ve škole)