Grafika publishing webtip.cz grafika.cz mujiPod.cz mujmac.cz fotografovani.cz printing.cz builder.cz galerie
webtip.cz
adresář  | práce  | diskuse  | redakce  | inzerce
 
 


  Obrázková galerie díl 3.
o autorovi 
poslat mailem 
tisknout článek 
aktuální rubrika 
Publikování obrázků a internet. Výtečná kombinace. Něco tu ale přeci jen chybí. Podívejte se, jak lze usnadnit manipulaci s obrázky prostřednictvím jednoduché aplikace - obrázkové galerie.

Čevelíček Marek - 13.05.2002 - clanek - Rubrika: PHP
Předchozí díl: Obrázková galerie díl 2.
Seriál: 
Následující díl: Obrázková galerie díl 4.

Aby bylo možné vypsat obrázky s nejlepším hodnocením, je nutné dát návštěvníkům možnost je ohodnotit. Dnes tedy k dosavadnímu kódu přidáme pár řádek, které způsobí zobrazení malé ankety u každého obrázku.

Já jsem si pro vás takovou minianketu už vytvořil. Je složena z pár obrázků a pokud se vám nebude líbit, není problém ji nahradit jinými obrázky nebo i textovými odkazy prostým pozměněním html kódu ankety. Takto ji do stránky vložíte:

<?
if (($zaznam[hlasovalo] == "0") || ($zaznam[hlasy] == "0")):
$write_width = "0";
else:
$write_width = Round($zaznam[hlasy]/$zaznam[hlasovalo], 2);
endif;
?>


<!-- Begin Table -->
<TABLE BORDER=\"0\" CELLPADDING=\"0\" CELLSPACING=\"0\" WIDTH=\"91\" HEIGHT=\"19\">
<TR><TD ROWSPAN=\"1\" COLSPAN=\"1\" WIDTH=\"18\" HEIGHT=\"19\">
<A HREF=\"index.php?hlasuj=1&hlas=1&src=".$zaznam[src]."&zazn=".$zazn."&zobrazena_strana=".$zobrazena_strana."\">
<IMG NAME=\"anketa0\" SRC=\"anketa_1x1.gif\" WIDTH=\"18\" HEIGHT=\"19\" BORDER=\"0\"></A></TD>
<TD ROWSPAN=\"1\" COLSPAN=\"1\" WIDTH=\"18\" HEIGHT=\"19\">
<A HREF=\"index.php?hlasuj=1&hlas=2&src=".$zaznam[src]."&zazn=".$zazn."&zobrazena_strana=".$zobrazena_strana."\">
<IMG NAME=\"anketa1\" SRC=\"anketa_1x2.gif\" WIDTH=\"18\" HEIGHT=\"19\" BORDER=\"0\"></A></TD>
<TD ROWSPAN=\"1\" COLSPAN=\"1\" WIDTH=\"18\" HEIGHT=\"19\">
<A HREF=\"index.php?hlasuj=1&hlas=3&src=".$zaznam[src]."&zazn=".$zazn."&zobrazena_strana=".$zobrazena_strana."\">
<IMG NAME=\"anketa2\" SRC=\"anketa_1x3.gif\" WIDTH=\"18\" HEIGHT=\"19\" BORDER=\"0\"></A></TD>
<TD ROWSPAN=\"1\" COLSPAN=\"1\" WIDTH=\"18\" HEIGHT=\"19\">
<A HREF=\"index.php?hlasuj=1&hlas=4&src=".$zaznam[src]."&zazn=".$zazn."&zobrazena_strana=".$zobrazena_strana."\">
<IMG NAME=\"anketa3\" SRC=\"anketa_1x4.gif\" WIDTH=\"18\" HEIGHT=\"19\" BORDER=\"0\"></A></TD>
<TD ROWSPAN=\"1\" COLSPAN=\"1\" WIDTH=\"19\" HEIGHT=\"19\">
<A HREF=\"index.php?hlasuj=1&hlas=5&src=".$zaznam[src]."&zazn=".$zazn."&zobrazena_strana=".$zobrazena_strana."\">
<IMG NAME=\"anketa4\" SRC=\"anketa_1x5.gif\" WIDTH=\"19\" HEIGHT=\"19\" BORDER=\"0\"></A></TD>
<TD ROWSPAN=\"1\" COLSPAN=\"1\" WIDTH=\"19\" HEIGHT=\"19\" style=\"padding: 0px 2px 0px 2px;\"><p style=\"color:
red;\"><b>".$write_width."</b></p></TD></TR></TABLE>
<!-- End Table -->

Z celého kódu je nejdůležitější onen odkaz. Pomocí parametru v adresní řádce tímto skriptu předáme informace o hlasování.
hlasuj=1 - proveď hlasování
hlas=1 - jakou známkou hodnotit
src={img} - který obrázek hodnotit
zazn={titulek} - název galerie
zobrazena_strana={str} - kterou stránku z galerie zobrazit po hlasování (samozřejmě aktuální :) )

PHP kód zobrazený výše umístíme ještě před vypsáním obrázku a má nám ošetřit výpis chybového hlášení, pokud by se některá z hodnot hlasovalo nebo hlasy rovnala nule (tzn. pokud ještě nikdo nehlasoval). V proměnné $write_width tak budeme mít aktuální známku, kterou vypíšeme za anketu.

Následující skript nám provede hlasování a zapíše výsledky do databáze.

<?
if ($hlasuj == 1):
connect();
@$prikaz = MySQL_Query("SELECT ip FROM gallery WHERE src LIKE '".$src."'");
if (!$prikaz):
echo "Nepodařilo se zjistit IP.";
exit;
endif;
if ($ind == 1):
$reload = "location.reload(\"".$PHP_SELF."\");</script>";
else:
$reload = "location.reload(\"".$PHP_SELF."?click=1&zazn=".$zazn."&zobrazena_strana=".$zobrazena_strana."\");</script>";
endif;
$what = MySQL_Fetch_Row($prikaz);
if ($what[0] != $REMOTE_ADDR):
if ($hlas == 1):
$this = 1;
elseif ($hlas == 2):
$this = 2;
elseif ($hlas == 3):
$this = 3;
elseif ($hlas == 4):
$this = 4;
elseif ($hlas == 5):
$this = 5;
else:
$this = 3;
endif;
$prikaz2 = MySQL_Query("UPDATE gallery SET hlasy = hlasy + ".$this." WHERE src LIKE '".$src."'");
if (!$prikaz2):
echo "Nepodařilo se zapsat hlas.";
exit;
endif;
$prikaz2b = MySQL_Query("UPDATE gallery SET hlasovalo = hlasovalo + 1 WHERE src LIKE '".$src."'");
if (!$prikaz2b):
echo "Nepodařilo se zapsat počet hlasujících.";
exit;
endif;
$prikaz3 = MySQL_Query("UPDATE gallery SET ip = '".$REMOTE_ADDR."' WHERE src LIKE '".$src."'");
if (!$prikaz3):
echo "Nepodařilo se zapsat IP.";
exit;
endif;
echo "<script>".$reload;
else:
echo "<script>window.alert (\"Vašeho zájmu o hlasování si vážíme, ale dvakrát za sebou hlasovat nemůžete!\");\n";
echo $reload;
endif;
endif;
?>

RED
Skript kontroluje ip adresu hlasujícího.

DARKRED
Při hlasování z úvodní stránky se bude v adresním řádku předávat ještě jeden paramert ind. Pokud bude existovat, skript vygeneruje kód, který způsobí přesměrování na úvodní stránku. V opačném případě bude hlasující přesměrován na místo, odkud hlasoval.

NAVY
Pokud hlasující ještě nehlasoval, zkontrolujeme jak hodnotí obrázek. Kontrola je zde proto, že kdyby nějaký otrapa chtěl pozměnit výsledky a poslal parametr hlas=35, tak aby nám to místo známky 35 přičetlo jen 3.

BLUE
U daného obrázku updatujeme údaje v tabulce v buňkách hlasy, hlasovalo a jako poslední IP zadáme ip adresu hlasujícího. Tímto mu znemožníme hlasovat 2x za sebou.

GREEN
No a nakonec provedeme přesměrování.

Já už vás nebudu víc napínat a nechám vás si celý skript stáhnout - ZDE. Aby vám aplikace fungovala, nahrajte si do databáze údaje, uvedené v souboru data.txt (obrázky potřebovat nebudete). V příštím díle vám ještě vysvětlím onen javacsript, jež obstarává otevření nového okna ve velikostech obrázku.

Čevelíček Marek


Hodnocení článku: -1- -2- -3- -4- -5-  Aktuální hodnocení: 2.58 (2666)

Relevantní články
Žádné články


Příspěvky do diskuse o aktuálním článku

K tomuto článku zatím nejsou žádné příspěvky
 

 

  O vydavateli | Kontakt | Ceník reklamy | Ochrana osobních dat
©2002 Grafika Publishing. Všechna práva vyhrazena!