Fotoalbum v PHP – nová kolekce fotografií 1.

24. června 2002

Dnes vám předvedu skript, který bude zajišťovat založení nové kolekce fotografií. Založení nové kolekce představuje zadání základních údajů, jako je název, datum, počet fotografií a uvedení, ve kterých souborech jsou fotografie uloženy.

Založení kolekce

Zavedení nové skupiny fotografií bude prováděno ve dvou krocích. Nejprve se vyplní údaje jako je název kolekce, doba konání, rok a počet fotografií. Také uvedeme, zda chceme kolekci fotografií zobrazovat naráz, nebo po částech (v tom případě musíme zadat, po kolika fotografiích se bude skupina zobrazovat). V druhém kroku pak zajistíme uložení všech fotografií. Protože ve většině případů budou názvy fotografií utvořené systematicky (například P0000.jpgP0028.jpg), ošetříme i hromadné zadávání názvů souborů, aby uživatel nemusel každý soubor zadávat zvlášť.

Kostra skriptu new.php

Jak už jsem uvedl, novou kolekci do systému zadáme postupně ve dvou krocích. To zajistíme pomocí parametru $krok. Pokud bude hodnota $krok=0 (nebo nebude uvedena vůbec), znamená to, že skript new.php spouštíme poprvé a uživatel tedy bude vyplňovat první část údajů o nové kolekci fotek. Bude-li hodnota $krok=1, pak skript vyzve uživatele k zadání údajů o vlastních fotografiích (souborech). A jako poslední krok vše uložíme do databáze ($krok=2).

<HTML>
<HEAD>
<TITLE>Založení nové kolekce</TITLE>
</HEAD>
<BODY>
<h1>Fotoalbum 1.0 – Založení nové kolekce</H1>
<HR SIZE=1 NOSHADE>
<?
/* (0) kontrola uzivatelskych dat */
if (!$krok) {
/* (1) Zadani uvodnich udaju o kolekci */
}
if ($krok==1) {
/* (2) druha cast zadani udaju o fotografiich */
}
if ($krok==2) {
/* (3) novou kolekci ulozime do databaze */
}
?>
</BODY>
</HTML>

V dnešním díle proberu postupně část (1) a část (2). O kontrole uživatelských dat (část 0) a vlastním uložení do databáze (část 3) se dozvíte v pokračování.

Zadání úvodních údajů o kolekci (1)

V první části PHP kódem vygenerujeme formulář, pomocí kterého uživatel zadá vše potřebné. Protože se může stát, že by uživatel nezadal všechno správně (nějaká hodnota by chyběla), musíme ve formuláři ošetřit výchozí hodnoty. To zajistíme tak, že v prvku formuláře vložíme atribut VALUE, kterému nastavíme hodnotu proměnné, v níž může být uložena hodnota z předchozího volání skriptu. Vše bude jasnější z obrázku následovaného kódem:

print „<h2>A. Zadání základních údajů</h2>“;
print „<FORM ACTION=\“new.php\“ METHOD=\“post\“>“;
print „<INPUT TYPE=hidden NAME=krok VALUE=1>“;
print „<B>Název kolekce: </B> (max. 80 znaků) <INPUT TYPE=text NAME=nazev VALUE=\“$nazev\“ SIZE=40 MAXLENGTH=80><BR>“;
print „<B>Období: </B> (např. <tt>17.9. až 25.10.</TT>, max. 40 znaků) <INPUT TYPE=text NAME=obdobi VALUE=\“$obdobi\“ SIZE=40 MAXLENGTH=40><BR>“;
print „<B>Rok: </B> (na 4 cifry, např. <TT>1998</TT>) <INPUT TYPE=text NAME=rok VALUE=\“$rok\“ SIZE=5 MAXLENGTH=4><BR>“;
print „<B>Počet fotografií v kolekci:</B> <INPUT TYPE=text NAME=pocet VALUE=\“$pocet\“ SIZE=5 MAXLENGTH=4><BR>“;
print „<INPUT TYPE=checkbox NAME=ano_cast VALUE=1> <B>zobrazovat kolekci po částech</B>; pokud ano, pak zobrazuj po <INPUT TYPE=text NAME=cast VALUE=\“$cast\“ SIZE=3 MAXLENGTH=2> fotografiích na stránku<BR>“;
print „<BR><B>Adresář, kde budou uloženy fotografie:</B><BR>(relativně, vzhledem k hlavnímu adresáři, na konci nezapomeň na lomítko /; např.: ‚<TT>2001/Korsika/</TT>‘)<BR>“;
print „<TT>Album/photos/</TT><INPUT TYPE=text NAME=adresar VALUE=\“$adresar\“ SIZE=60 MAXLENGTH=80><BR>“;
print „<BR>Vše je správně vyplněné, mohu pokračovat dál.<BR>“;
print „<INPUT TYPE=submit NAME=action VALUE=\“Pokračuj\“>“;
print „</FORM>“;

Zadání údajů o fotografiích (2)

Druhá část skriptu se bude opět skládat převážně z příkazů pro vypsání formuláře na obrazovku prohlížeče. Kromě prvků formuláře bude vhodné vypsat i jednoduchou nápovědu pro vyplnění všech políček formuláře. V závěru formuláře uvedeme několik prvků HIDDEN, kterými si uchováme zadané hodnoty z předchozího volání skriptu new.php. Ukázku stránky zobrazuje následující obrázek:

Kód je následující:

print „<H2>B. Zadání fotografií kolekce: $nazev ($rok)</H2>“;
print „<FORM ACTION=\“new.php\“ METHOD=\“post\“>“;
print „<INPUT TYPE=hidden NAME=krok VALUE=2>“;
print „<B>Hromadné zpracování fotek: </B><BR>“;
print „Bude-li vyplněno, použije se automatické generování názvů jednotlivých fotografií (včetně thumbnailu), není třeba pak vyplňovat u každé fotky zvlášť jména souboru (thumbnailu i vlastní fotografie).<BR><BR>“;
print „<INPUT TYPE=checkbox NAME=generator VALUE=1> Ano, chci použít automatické názvy souborů thumbnailů i fotografií (posloupnost typu <TT>t0001.jpg</tt> až <tt>t0028.jpg</TT>; <TT>p0001.jpg</TT> až <TT>p0028.jpg</TT>)<BR>“;
print „<BR><B>Fotografie:</B><BR>“;
print „Vyplňte popis pro každou fotografii, datum zadávejte ve tvaru RRRR-MM-DD, např. 2001-04-26. Pokud všechny fotografie mají datum společné, stačí vyplnit datum jen u první fotografie. K ostatním fotografiím se datum zkopíruje to samé. (Takto lze zadávat datum u částem: např. uvedeno datum u 1. fotky 2001-05-02 a u 10. fotky 2001-05-03, znamená, že 1. až 9. fotografie má datum 2.5.2002 a 10. až poslední fotografie má datum 3.5.2002)“;
print „<BR>Kolonky thumbnail a fotografie vyplňujte pouze v případě, že jste nezadal hromadné generování názvu fotek. Případně zadávejte pouze název souboru, bez cesty.<BR>“;
print „<TABLE BORDER=0>“;
print „<TR><TD>Číslo</TD><TD>Popis</TD><TD>Datum</TD>
<TD>Thumbnail</TD><TD>Fotografie</TD></TR>“;
for ($i=1; $i<=$pocet; $i++) {
  print „<TR><TD><B>$i.</B></TD><TD><INPUT TYPE=text NAME=popis[$i] VALUE=\“$popis[$i]\“ SIZE=50 MAXLENGTH=80></TD> „;
  print „<TD><INPUT TYPE=text NAME=datum[$i] VALUE=\“$datum[$i]\“ SIZE=12 MAXLENGTH=10></TD>“;
  print „<TD><INPUT TYPE=text NAME=thumb[$i] VALUE=\“$thumb[$i]\“ SIZE=10 MAXLENGTH=30></TD>“;
  print „<TD><INPUT TYPE=text NAME=photo[$i] VALUE=\“$photo[$i]\“ SIZE=10 MAXLENGTH=30></TD>“;
  print „</TR>“;
}
print „</TABLE>“;
/* zapamatujeme si predchozi vyplnene hodnoty uzivatelem */
print „<INPUT TYPE=hidden NAME=nazev VALUE=\“$nazev\“>“;
print „<INPUT TYPE=hidden NAME=obdobi VALUE=\“$obdobi\“>“;
print „<INPUT TYPE=hidden NAME=rok VALUE=\“$rok\“>“;
print „<INPUT TYPE=hidden NAME=pocet VALUE=\“$pocet\“>“;
print „<INPUT TYPE=hidden NAME=cast VALUE=\“$cast\“>“;
print „<INPUT TYPE=hidden NAME=ano_cast VALUE=\$ano_cast\“>“;
print „<INPUT TYPE=hidden NAME=adresar VALUE=\“$adresar\“>“;
print „<INPUT TYPE=submit NAME=action VALUE=\“Odeslat\“>“;
print „</FORM>“;

Skript pro založení nové kolekce bude k dispozici v příštím díle.

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

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

Předchozí článek Aktivní kanály a XML
Štítky: Články

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *