Máte aj vy svoje stránky? A na nich články? A chcete vedieť, ako sa vašim čitateľom páčia? Dajte im možnosť článok zhodnotiť známkou a vyjadriť tým svoj názor. Výhoda je aj to, že táto aplikácia sa veľmi jednoducho vloží do stránok.

Celá aplikácia využíva PHP a MySQL. Nie je zložité ju vkladať na stránku, pretože využíva jednu MySQL tabuľku nezávisle od článkov. Jediné, čo bude mať s článkami spoločné, je určité ID, ktoré je pre každý článok jedinečné.

Vytvoríme si teda tabuľku:

create table hodnotenie (
id int,
z1 int,
z2 int,
z3 int,
z4 int,
z5 int,
PRIMARY_KEY (id))

Myslím, že takáto jednoduchá tabuľka úplne postačuje. Pole id musí byť, ako som písal, zhodné s nejakou hodnotou článku. K tomu prídeme ešte neskôr. Do z1z5 sa bude ukladať počet hodnotení jednotlivých známok. Znamená to, že keď užívateľ klepne na hodnotenie 1, do poľa z1 sa uloží pôvodná hodnota + 1. Tým pádom môžeme robiť grafy, vyjadriť percentá ad.

Teraz prejdeme na samotný skript, ktorý užívateľ uvidí. Bude sa volať hodnotenie.php:

<?
mysql_pconnect("SERVER", "LOGIN", "HESLO");
$hodnot = mysql_db_query("DB", "SELECT * FROM hodnotenie WHERE id = $id");
if(mysql_num_rows($hodnot)==0 || !$hodnot):
echo "Tento článok ešte nemá hodnotenie";

else:
$h = mysql_fetch_array($hodnot);
$pocet = $h["z1"] + $h["z2"] + $h["z3"] + $h["z4"] + $h["z5"] ;
$hod = $h["z1"] + 2*$h["z2"] + 3*$h["z3"] + 4*$h["z4"] + 5*$h["z5"];
$priemer = $hod/$pocet;

echo "Priemerná známka: $priemer<br>";
echo "Hlasovalo ľudí: $pocet<br>";
echo "<small>známka 1 (".$h["z1"]."), známka 2 (".$h["z2"]."), známka 3 (".$h["z3"]."), známka 4 (".$h["z4"]."), známka 5 (".$h["z5"].")</small><br><br>";
endif;

echo "Hodnoťte: <a href=’hodnot.php?id=$id&znamka=1′>1</a> – <a href=’hodnot.php?id=$id&znamka=2′>2</a> – <a href=’hodnot.php?id=$id&znamka=3′>3</a> – <a href=’hodnot.php?id=$id&znamka=4′>4</a> – <a href=’hodnot.php?id=$id&znamka=5′>5</a>";

?>

Tento skript sa pripája k databáze (doplňte svoje údaje) a v druhom riadku vyberá z tabuľky hodnotenie id, ktoré mu zadáte. Tento skript môžeme volať zo stránky s článkom príkazom require "hodnotenie.php?id=xx", kde xx je id článku, alebo ho môžeme vložiť priamo do stránky a do premennej id uložiť id článku. Potom sa to začína trošku komplikovať. Ak článok ešte nemá hodnotenie, vypíše určitý text a ďalej nerobí to, čo by robil, keby ten článok už hodnotenie mal. A robil by asi to, že by do premennej h uložil asociatívne pole s výsledkom z riadku 2. Do premennej pocet ukladáme počet ľudí, ktorí článok už hodnotili. Do premennej hod ukladáme všetky hodnotenia (počet ľudí, ktorí hodnotili článok tou ktorou zámkou * hodnota známky, to zn. napr. 25 * 4 – 25 ľudí hlasovalo za 4, všetky hodnotenia za 4 sú 100). Potom do premennej priemer uložíme podiel premennej hod a pocet, čím dostaneme priemernú známku. Ďalej uvedené vypíšeme (musíte si to graficky upraviť). Potom si vypíšeme i riadok, kde môžu užívatelia hodnotiť článok.

Teda ešte to nie je všetko. Ešte potrebujeme skript, ktorým toto hodnotenie vlastne zapíšeme:

<?
mysql_pconnect("SERVER", "LOGIN", "HESLO");
$h = "hodnot".$id;
$hh = HTTP_COOKIE_VARS[$h];
if($hh=="ano"):
Header("Location: $HTTP_REFERER?text=Uz+ste+hlasovali!");

else:
$z = "z".$znamka;
mysql_db_query("DB", "Update hodnotenie set $z = $z + 1 where id = $id");
setcookie($h, "ano");
Header("Location: $HTTP_REFERER?text=Dakujeme+za+hlasovanie");
endif;
?>

V tomto kratučkom skripte sa pripájame k databáze MySQL. V druhom a treťom riadku zisťujeme, či užívateľ už hlasoval pomocou cookies. Ak už hlasoval, presmerujeme ho späť a popr. môžeme vypísať i text, že už hlasoval. Ak však nehlasoval, pridáme k počtu hlasujúcich za konkrétnu známku ešte jeden hlas. Potom uložíme do cookie s názvom hodnotid, teda napr. hodnot123456, text "ano". Potom ho presmerujeme späť a opäť môžeme vypísať text, ktorý si nastavíme. Teda napr.:

if(isset($text)) echo $text;

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

3 Příspěvků v diskuzi

  1. dobry navod, akurat dve male poznamky:
    chyba ti znak $ v datovej kolekcii HTTP_COOKIE_VARS [$h]
    a overovanie pomocou cookies je dost nebezpecne pretoze kazdy skusenejsi user si moze cookies zmenit ako chce kedze to nieje nic ine ako len textovy subor na jeho vlastnom pocitaci

Odpovědět