MIME transformace je inteligentní převod surových dat do lidsky uchopitelné podoby na základě jejich typu. Pokud například máte v databázi uložen obrázek, jen těžko vyčtete ze změti znaků, co vlastně zobrazuje. Samozřejmě, můžete problém řešit jednoúčelovým zobrazovacím skriptem, ale phpMyAdmin to zvládne lépe. A poradí si nejen s obrázky!

Podmínkou pro využívání MIME transformací je správná instalace aplikace phpMyAdmin minimálně ve verzi 2.5.0, včetně vytvoření všech podpůrných (PMA) tabulek. Pokud si nejste jisti, jak takovou instalaci provést, doporučuji vám článek Instalace phpMyAdmin, v němž je třináctý bod věnován tabulce „pma_column_info“, bez níž je MIME transformace nemyslitelná. V dalším textu budu používat phpMyAdmin 2.5.6 v české jazykové mutaci.

Správně vytvořená tabulka "pma_column_info"
Správně vytvořená tabulka „pma_column_info“

Spusťte si phpMyAdmin, otevřete si libovolnou databázi, z přehledu tabulek skočte na podrobný výpis vlastností jedné z nich a klepněte si na změnu vlastností některého z polí této tabulky. Měla by se vám zobrazit velmi dlouhá jednořádková tabulka, na jejímž konci se nacházejí tři sloupce, které nás budou zajímat – „MIME typ“, „Transformace při prohlížení“ a „Parametry transformace“.

Vlastnosti řídící MIME transformace
Vlastnosti řídící MIME transformace

Pole MIME typ má dvě funkce. Jednak určuje, zda se vůbec nějaká transformace provádět bude (je-li prázdné, transformace se neprovádí), druhak umožňuje výběr z několika MIME typů, u nichž existuje reálný předpoklad, že s nimi budou prohlížeče umět pracovat. V podstatě jde o obrázky, prostý text a bitový proud (například soubor ke stažení).

Pole Transformace při prohlížení určuje, k jaké transformaci má dojít. Je ovšem na uživateli, aby zvolil pro daný MIME typ vhodnou transformaci, protože phpMyAdmin neprovádí v tomto směru žádnou kontrolu. Vybírat můžete z vestavěných transformačních skriptů, jejichž seznam autoři phpMyAdmin neustále rozšiřují. Ve verzi, kterou aktuálně používám, jsou k dispozici tyto transformace:

  • application/octetstream: download – Odkaz ke stažení souboru. Předpokládá dva upřesňující parametry, buď přímo název souboru (který pak bude pro všechny položky stejný) nebo název sloupce, kde je jméno souboru uloženo (musí být ve stejné tabulce, použije se vždy aktuální řádek).
  • image/jpeg: inline – Náhled obrázku typu JPEG s odkazem. Předpokládanými parametry jsou výška a šířka v obrazových bodech (pixelech).
  • image/jpeg: link – Odkaz na obrázek. Lze použít ke stažení obrázku, uloženého v poli typu BLOB.
  • image/png: inline – Náhled obrázku typu PNG s odkazem. Předpokládanými parametry jsou výška a šířka v obrazových bodech (pixelech).
  • text/plain: dateformat – Datum nebo čas. Převod probíhá velmi inteligentně na základě analýzy datového typu a lokálního nastavení. Předpokládanými parametry jsou posun (počet hodin, přičtených k základu) a standardní formátovací řetězec, používaný PHP funkcí strftime().
  • text/plain: external – Umožňuje zobrazit výstup externího programu, kterému na standardní vstup pošle obsah pole. Předpokládá čtyři parametry – číslo programu, sadu spouštěcích parametrů programu a dva logické parametry pro formátování výstupu (nahrazování entit a zalamování řádek). Tato transformace je použitelná pouze na Linuxu, kde je standardně napojena na program Tidy.
  • text/plain: formatted – Zobrazí obsah pole, jako by šlo o standardní (X)HTML. Ve skutečnosti vlastně ruší standardní přepis speciálních znaků. Tato transformace může způsobit problémy, pokud je obsahem pole formulář v (X)HTML.
  • text/plain: imagelink – Obrázek a odkaz (obsahem pole musí být URL obrázku). Pedpokládá tři parametry, prefix URL (například „http://www.example.net/images/“), šířku a výšku v obrazových bodech.
  • text/plain: link – Odkaz (obsahem pole musí být URL). Předpokládá dva parametry, prefix URL a text odkazu.
  • text/plain: substr – Umožňuje zobrazit jen část textu, uloženého v poli. Předpokládá tři parametry, prvním je posun (číslo znaku, který se má jako první zobrazit, přičemž se čísluje od nuly), druhým počet zobrazovaných znaků (prázdný parametr znamená výpis všech znaků až na konec textu v poli) a třetím je sada znaků, kterým má být výpis ukončen (v češtině tři tečky). Výsledek transformace je velmi podobný standardnímu chování phpMyAdmin při zobrazování dlouhých textových polí.

Pole Parametry transformace je ono tajemné místo, kam se zapisují parametry, zmiňované v předchozím textu. Tyto parametry si lze představit jako ekvivalent parametrů PHP funkcí, jejich úkolem je řídit transformaci podle potřeb uživatele. Zapisují se podobně jako hodnoty do pole typu ENUM/SET, například 'a','b','c'. Pozor, hodnoty se musí oddělovat pouze čárkou (bez mezery) a uvozovat jednoduchými uvozovkami (ani apostrofy ani zpětnými uvozovkami)! Většina transformací se obejde i bez těchto parametrů, někdy je ale nutno je použít. V takovém případě nezapomeňte, že nemůžete uvést pouze vybrané parametry (například druhý a pátý), je nutné vypsat všechny a ty nepotřebné ponechat prázdné (tedy '','b','','','e').

Následující obrázek je montáží dvou snímků, ukazujících vlastnosti jedné z tabulek mé pracovní databáze a výpis fragmentu této tabulky v okně pro prohlížení záznamů. Tato tabulka obsahuje texty kontextové nápovědy malého informačního systému. Jak vidíte (či spíše nevidíte), jde o docela obyčejnou tabulku bez jakékoli MIME transformace a také text nápovědy, přestože se jedná o HTML fragment, se zobrazuje jako běžný (a dost nečitelný) výpis zdrojového kódu.

Tabulka bez definovaných MIME transformací
Tabulka bez definovaných MIME transformací (plná velikost, cca 12 kB)

Další obrázek je opět montáží dvou snímků. Jde o tutéž tabulku, ovšem s definovaným MIME typem pro sloupce „HelpDate“ a HelpArticle“. V obou případech jde o typ „text/plain“, ovšem nad prvním je provedena transformace text/plain: dateformat a nad druhým text/plain: formatted. Všimněte si, že datum vytvoření položky nápovědy se celkem správně zobrazuje v „lidsky srozumitelné“ podobě a navíc i v jazyce českém, přestože původně jde o UNIX timestamp, což phpMyAdmin správně analyzoval, aniž bych mu pomáhal nastavováním parametrů. Stejně tak text nápovědy je mnohem čitelnější a dokonce lze použít interní odkazy pro posun v textu.

Tabulka s definovanými MIME transformacemi
Tabulka s definovanými MIME transformacemi (plná velikost, cca 10 kB)

MIME transformace jsou velmi mocným nástrojem, který může značně usnadnit správu vašich databází prostřednictvím phpMyAdmin. Mohou urychlit orientaci v záznamech a zpřístupnit data i v takové podobě, v jaké se nikde jinde nevyskytují, takže si můžete snadno překontrolovat správnou funkci svých aplikací. Většinou si přitom vystačíte s vestavěnými transformačními funkcemi, které při použití patřičných parametrů pokryjí širokou škálu úkolů. Architektura mechanismu MIME transformací ovšem umožňuje i tvorbu uživatelských transformačních funkcí – to už je ale téma pro další článek…

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

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

Žádný příspěvek v diskuzi

Odpovědět