Jak na vlastní katalog stránek v PHP – přidání odkazu
Každý dobrý katalog stránek by měl svým návštěvníkům umožňovat přidat odkaz na nějaké stránky. Buď dovolíme uživateli odkaz vložit rovnou do databáze, tj. po přidání odkazu se odkaz v katalogu objeví ihned, nebo každý nově přidaný odkaz si nejprve správce katalogu prohlédne a teprve potom jej zařadí do katalogu.
Každý z uvedených postupů má své výhody a nevýhody. První varianta je zcela jistě jednodušší na implementaci, na druhou stranu ale nemáme k dispozici žádný kontrolní mechanismus, jak ošetřit vložení nevhodných odkazů, apod. Proto si dovolím tuto první variantu zavrhnout. Druhá varianta vychazí z toho, že uživatel nevloží odkaz rovnou do katalogu (tj. záznam se neuloží do tabulky ODKAZ), ale do „prozatimní“ tabulky ZADOSTI. Teprve potom administrátor prohlédne všechny nově přidané odkazy, které může potvrdit a uložit do katalogu. Zde má možnost i nové odkazy před jejich potrvzením zeditovat.
V dnešním článku se budu věnovat právě přidání odkazu na straně uživatele.
Pomocné funkce
Z důvodů zvýšení přehlednosti kódu skriptu pridej_odkaz.php zde uvedu a popíšu několik pomocných funkcí, které budeme potřebovat. První z nich bude funkce get_new_id(), která nám bude vracet novou hodnotu ID pro záznam v tabulce ZADOSTI. Tuto funkci využijeme tam, kde budeme chtít vložit nový záznam do tabulky.
|
Protože zde bude uživatel zadávat data do formuláře, je potřeba ošetřit všechny zadané hodnoty. Např. že e-mailová adresa nebo URL je zadáno v korektním tvaru, že název či popis neobsahují nebezpečné znaky, že heslo má délku alespoň 5 znaků, apod. Zde je několik funkcí, které pak použijeme pro kontrolu nezávadnosti vstupních řetězců:
|
První funkce jenom testuje, zdali URL neobsahuje nějaké nepovolené znaky. Pokud bychom chtěli i ověřovat, že URL je zapsáno ve správném tvaru, použili bychom regularních výrazů, jak je uvedeno u druhé funkce pro e-mail. Podobným způsobem lze zapsat i další funkce jako jsou check_nazev, check_popis, apod. Uvedené funkce berte jako vzor, můžete je rozšířit, záleží na vás, jak moc chcete být důslední. Funkce na ověření, že heslo má alespoň 5 znaků, vypadá jednoduše:
|
Jak bude fungovat přidání odkazu?
Při prvním spuštění skriptu pridej_odkaz.php (skript zavolán bez parametrů), se zobrazí formulář pro vyplnění údajů o odkazu. Po té uživatel stiskne tlačítko „Přidat“ a zavolá se znovu skript pridej_odkaz.php (tentokrát s parametrem akce=Přidat). Nyní musíme provést kontrolu všech zadaných hodnot, zdali jsou zadány v pořádku. Pokud je všechno zadáno korektně, odkaz se uloží a pak vypíšeme hlášku: „Váš odkaz byl úspěšně zařazen mezi žádosti o zařazení odkazu do katalogu“. Pokud se nějaká chyba vyskytne, je potřeba znovu zobrazit formulář (v něm již vyplněné hodnoty znovu zobrazit a uvést krátká chybová hlášení vybízející uživatele, aby dané údaje opravil). Po té opět klikne na „Přidat“, znovu se zavolá skript pridej_odkaz.php. Toto se děje opakovaně, dokud všechny údaje nebudou zadány v pořádku (nebo do té doby, než to uživatel vzdá ;-).
Struktura skriptu
S ohledem na postup, který jsem uvedl, by hrubá kostra skriptu mohla vypadat takto:
|
Všem je snad jasné, že formulář se zobrazí jen při prvním zavolání skriptu, nebo po opakovaném zavolání, pokud data od uživatele budou nekorektní.
Skript pridej_odkaz.php
Nyní uvedu ukázkový kód jednotlivých částí tohoto skriptu (tak, jak jsem si je očísloval v kostře).
Část (2)
Možná se pozastavujete nad tím, proč začínám druhou částí. Je to proto, že v první části budeme pracovat s předanými parametry, které jsou v PHP skriptu automaticky přístupné přes proměnné, které mají stejný název, jako prvky formuláře. Proto nejprve nadefinujeme formulář, a pak teprve vyřešíme část (1) a (3).
|
Přestože uvedená definice formuláře je už trochu složitější, věřím, že si dokážete představit, jak by takový formulář na stránce vypadal. Jistě jste si všimli, že u většiny prvků formuláře definuji implicitní hodnotu (atribut VALUE). To proto, že když bude skript volán opakovaně, aby se již zadané hodnoty ve formuláři objevily. A pokud bude skript volán poprvé, pak hodnoty proměnných $nazev, $popis, … budou prázdné, tedy formulář se zobrazí s prázdnými políčky, což chceme.
Uprostřed definice je pole SELECT. Zde musíme z databáze vybrat všechny sekce a pak je zařadit do menu SELECT. Uživatel kliknutím vybere nějakou konkrétní sekci, skriptu se ale předává pouze její číslo. (Pokud je tedy skript volán opakovaně, pak je potřeba pro sekci s již vybraným číslem označit jako CHECKED.)
Část (1)
Když už známe všechny názvy prvků z formuláře, můžeme nad nimi provést všechny potřebné testy:
|
Tímto postupem bychom bez problémů zkontrolovali všechny hodnoty. Jakákoliv chyba v jedné z nich způsobí, že proměnná $jsou_chyby bude nastavena na hodnotu 1.
Část (3)
Nyní jsme v situaci, že uživatel nakonec vyplnil všechno správně, jak jsme požadovali. Následující kód ukazuje uložení vložených dat do databáze:
|
Závěrem
Snažil jsem se uvést co nejjednodušší postup, jak naimplementovat přidání odkazů uživatelem. Z důvodů vyšší přehlednosti uvedených kódů, jsem opět vynechal testování chybových stavů. Možná vás napadne řada různých vylepšení. Například, jak v části (3) vypisujeme hlášku o úspěšném vložení, je vhodné na obrazovku vypsat obsah přidávaného záznamu, nebo jej poslat na zadaný e-mail. Jistě by bylo lepší, kdyby se chybové hlášky pro špatně zadanou hodnotu ve formuláři nezobrazovaly před formulářem, ale přímo v něm (u každé takové položky by byla chybová hláška). Podobných vylepšení určitě najdete mnoho, vzhledem k rozsahu je to však nad rámec tohoto článku.
V příštím díle se podíváme, co s takovými nově přidanými odkazy provede administrátor. Ten bude mít k dispozici skript zarad_odkazy.php, který bude zajišťovat zařazení odkazu z tabulky ZADOSTI do katalogu (tj. odkaz bude přesunut do tabulky ODKAZ). Obsah skriptu zarad_odkazy.php bude tedy náplní dalšího článku.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Vlastní web: Jak nainstalovat WordPress?
24. června 2024 -
Od iPhonu po Android: Ultra HDR přináší nový standard fotografií
1. listopadu 2024 -
Moderní trendy ve webdesignu: Top trendy pro rok 2024
12. ledna 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024