Fotoalbum v PHP – nová kolekce fotografií 2.
Dnes plynule navážu na předchozí díl a podíváme se na zbývající (nejdůležitější) část skriptu pro nahrání nové kolekce fotografií do databáze. Předtím se ještě zastavíme u kontroly uživatelských dat.
Kostra skriptu new.php
V tomto díle se budeme zabývat částmi (0) a (3). Pro připomenutí, základní kostra skriptu vypadá následovně:
|
Kontrola uživatelských dat (0)
Než všechno zapíšeme do databáze, potřebujeme mít jistotu, že uživatel vše správně vyplnil. Proto v této nulté části provedeme jednoduchou kontrolu, zda uživatel zadal alespoň ty hodnoty, které jsou povinné (název kolekce, rok…) Pokud se zjistí nějaká nesrovnalost, vypíše se na obrazovce upozornění a znovu se vyvolá původní formulář (hodnoty, které uživatel již zadal, se ve formuláři objeví jako předdefinované). Uživatel tedy opraví údaje a znovu je pošle skriptu na zpracování. Pokud nastane chyba v 1. části, pak přepíšeme proměnnou $krok na hodnotu 0, čímž zajistíme opět vyvolání formuláře z části 1, a nezobrazí se formulář z části 2. Kód pro kontrolu zadání názvu, roku a adresáře je celkem jednoduchý:
|
Uložení kolekce do databáze (3)
Ze všech částí skriptu new.php se dostáváme k té nejsložitější. Všechny údaje od uživatele již máme zadány. Údajů obecně může být velmi mnoho, proto také formulář pro předávání dat používá metodu post. Zdrojový kód této části neuvedu celý naráz, ale po jednotlivých částech. Ke každé části podám ještě bližší vysvětlení.
V této části opět provedeme dva kroky. Nejprve uložíme do databáze záznam o nové kolekci (naplníme tabulku kolekce) a poté zpracujeme seznam všech fotografií (tabulka fotka). Druhá část bude zcela jistě pracnější, podívejme se nejprve na tu jednoduší, první:
|
Prvním voláním funkce mysql() zjistíme maximální id existující kolekce. Toto zjištěné číslo zvýšíme o jedničku a máme tak připraveno nové id pro novou kolekci (máme zaručeno, že bude jedinečné). Pokud uživatel zatrhl ve formuláři, že chce zobrazovat kolekci fotografií po částech, pak nastavíme proměnnou $stranka na zadanou hodnotu, jinak jí dáme -1. V tabulce kolekce pak atribut cast bude mít buď -1, nebo konkrétní číslo, které zadal uživatel. Potom vytvoříme příkaz na vložení nové kolekce do tabulky. Provedeme jej (voláním funkce mysql()) a ověříme, zda-li operace proběhla úspěšně, či nikoli. O výsledku informujeme uživatele na stránce.
Dalším kódem zpracujeme jednotlivé fotografie. Nejprve vypíšeme na stránku upozornění o tom, kam musíme uložit fyzické soubory s fotografiemi:
|
Další kód budeme opakovat v cyklu for (pro každou fotografii provedeme totéž). Zjistíme nové id fotky (podobně, jak jsme zjišťovali nové id kolekce). Pokud fotografie nemá zadáno datum, pak jej nastavíme na hodnotu shodnou s předchozí fotografií. Tato rekurzivita nám zajistí, že všechny fotografie budou mít svoje datum. Poté sestrojíme název souboru včetně cesty, kde je uložen. Pokud se mají automaticky generovat názvy souborů (proměnná $generator=1), zkonstruujeme název podle čísla tak, aby nám zachoval počet znaků (například p0028.jpg). Máme-li u každé fotografie datum a přesný název souboru včetně cesty, můžeme sestrojit příkaz insert a fotografii uložit do databáze. Viz následující kód:
|
Skript new.php pro založení nové kolekce fotografií si po stažení uložte do adresáře \album\system.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.







