Tipy pro Adminer
Školení, která pořádám
Při vývoji Admineru se snažím hodně přemýšlet nad uživatelským rozhraním. Snažím se do něj přidávat nové funkce, které usnadní používání, a přitom ho zachovat co nejkompaktnější, aby uživatele nezahltilo. Nemám rád, když je v aplikaci nebo někde stranou návod k použití, všechno by mělo být pokud možno intuitivní. Kvůli tomu ale může méně zvědavým uživatelům zůstat leccos skryto. Připravil jsem proto několik tipů, které by mohly používání Admineru usnadnit.
Přihlášení a databáze
- Při nevyplnění přihlašovacích údajů se použije konfigurace PHP (MySQL nebo MySQLi). Výchozí hodnota pro název serveru je
localhost
. Nestandardní číslo portu se zadává za dvojtečku, např. localhost:3456
.
- Do oblíbených položek si lze uložit libovolnou stránku. Když na ni přijde nepřihlášený uživatel, tak se mu zobrazí přihlašovací formulář, po jehož vyplnění se stránka zobrazí.
- Když dojde k chybě, která se dá opravit v jiném panelu prohlížeče, tak stačí stránku s chybou obnovit. Když dojde při odeslání formuláře k vypršení session, tak se po přihlášení formulář automaticky odešle znovu.
- Při vytváření uživatele je obvykle potřeba mu nastavit nějaká práva, typicky pro objekt
db.*
.
- Odkazy z čísel v přehledu tabulek v databázi vedou na jednotlivé operace s tabulkou (změna, změna indexů, vložení záznamu, výpis).
- Schéma databáze zobrazuje vazby vytvořené z cizích klíčů. Tabulky lze přetahovat myší.
- Pokud je zobrazena stránka s SQL příkazem, exportem nebo schématem, tak změna databáze v menu na tomto typu stránky zůstane. V jiném případě nás přenese na seznam tabulek v databázi.
Výpis a editace
- Popisek sloupce ve výpisu a editaci má bublinu s typem sloupce.
- Kliknutí na sloupec ve výpisu záznamy podle něj setřídí,
druhé kliknutí kliknutí na šipku je setřídí sestupně.
- Z hodnot cizích klíčů jsou vytvořeny odkazy na výpis odkázaných záznamů. Odkazy nevedou na editaci záznamů, protože cizí klíče nemusí v MySQL vést na unikátní hodnoty.
- Dvojité kliknutí na hodnotu ve výpisu ji dovoluje na místě upravit. Odkaz „upravit“ v záhlaví dovoluje na místě upravit všechny vybrané hodnoty.
- Vložení prázdného řetězce do číselného nebo datumového sloupce v editaci na místě způsobí vložení hodnoty
NULL
. Stejně se chová i běžná editace v Adminer Editoru.
- Zaškrtávací políčko v záhlaví výpisu označí záznamy na aktuální stránce, zaškrtávací políčko u počtu záznamů označí vybrané záznamy na všech stránkách.
- Kliknutí kdekoliv v řádku výpisu způsobí jeho označení.
- Označením více záznamů a stisknutím tlačítka „Upravit“ lze provádět relativní operace (přičíst číslo, ubrat čas, …).
- Pokud se v rámečku „Vypsat“ vyberou nějaké sloupce a k nim agregační funkce, tak se sestaví dotaz s klauzulí
GROUP BY
. Tím lze tedy snadno získat i DISTINCT
výpis.
- Z hodnot ve sloupci
COUNT(*)
je vytvořen odkaz na výpis těchto hodnot.
- Kliknutím na odkaz „Stránka“ lze při zapnutém JavaScriptu přejít na libovolnou stránku.
- Předáním pole
set
do parametrů URL nového záznamu lze předvyplnit hodnoty formuláře. Např. edit=table&set[title]=Test
.
- Shift+click na zaškrtávací políčko označí jejich rozsah.
Tabulka
- Ve výpisu indexů se jejich název zobrazuje v bublině nad seznam sloupců.
- Při vytváření nebo změně tabulky lze rovnou vytvořit cizí klíče směřující na primární klíč jiné tabulky.
- Typ nově přidaného sloupce se odvodí od jeho předchůdce. Při vytváření tabulky se ale sloupec přidá hned po vyplnění názvu předchozího sloupce, takže pokud chceme vytvořit více sloupců stejného typu, je praktické nejprve vyplnit typ a potom teprve název prvního takového sloupce.
- Při označení sloupce jako AI se doplní název
id
, pokud ještě není vyplněn.
- Výchozí hodnoty a komentáře lze zobrazit pomocí zaškrtávacích políček pod tabulkou.
- Vybrané úložiště se zapamatuje v cookie při vytváření tabulky, ne ale při její změně.
- Možné hodnoty sloupců
enum
a set
se při zapnutém JavaScriptu zadávají na samostatné řádky bez apostrofů. Pokud ale výčet potřebujeme zkopírovat odjinud, lze vložit i jediný řádek s hodnotami uzavřenými do apostrofů a oddělenými čárkami.
- V PostgreSQL slouží sloupec Auto Increment ve změně tabulky k vytvoření typu
serial
, případně bigserial
.
SQL příkaz a export
- Z hodnot primárních klíčů jsou vytvořeny odkazy na editaci záznamu a to dokonce i při dotazu spojujícím více tabulek.
- V textových oblastech pro zadávání SQL příkazů lze používat tabulátor, formulář lze odeslat pomocí
Ctrl+Enter
.
- Obrovský SQL skript lze na server nejprve nahrát pomocí FTP a následně spustit „Ze serveru“.
- Cíl odkazu „Export“ záleží na zobrazené stránce. Z výpisu a detailu tabulky odkaz vede na export jen této tabulky.
- Pokud je potřeba exportovat jen některé sloupce nebo řádky tabulky, lze to udělat ve výpisu záznamů.
- Import CSV je k dispozici pod každou tabulkou, import ze SQL se provádí v SQL příkazu.
Adminer Editor
- Provedené příkazy se vypisují v HTML komentářích.
- Hodnoty cizích klíčů se v základu zobrazují jako první řetězcový sloupec.
- Výsledky se v základu řadí podle prvního neunikátního indexu, datumy sestupně.
- Vyhledávání <= s prázdnou hodnotou způsobí u
NULL
sloupců vytvoření podmínky IS NULL
, operátor >= zase IS NOT NULL
.
- Vyhledávání v neřetězcových sloupcích dovoluje uvést více hodnot oddělených čárkami (od verze 3.2.0).
Diskuse
Michal:
Pěkné shrnutí skvělého nástroje.
John Wernon:
Pracuji s Adminerem teprve chvíli a je skutečně vynikající. Měl bych snad jen jeden námět k úvaze. Neustále pro vypsání tabulky klikám rychle a intuitivně na její název :-). Mně osobně by asi lépe vyhovovalo "prohození" sloupců linků, tj. vlevo vypsané tabulky (při kliku na ně vypsat data) a vpravo "editovat" a tím otevírat příslušnou tabulku pro úpravu struktury. Ale jinak zatím zcela bez výhrad. Díky
Stejnou chybu jako phpMyAdmin (který prohodil defaultní význam těchto dvou linků a ještě ho udělal konfigurovatelný) se udělat nechystám. Pokud by navíc konstantně dlouhý text byl vpravo, tak by nebyl hezky zarovnaný pod sebou, ale rozházený po celé šířce.
John Wernon:
OK, s tím zarovnáním, to je fakt, souhlasím. Nicméně si myslím, že klik na název tabulky = vypsat data :-)
Martin:
100% souhlas. Taky mě to dlouho mátlo. Ale člověk si zvykne... musí.
Juraj:
Ja to vidím naopak. Ty si len zvyknutý z phpMyAdmin. Klik na tabulku, chcem vidieť jej štruktúru, má to logiku a podobne je to i v mnohých offline nástrojoch na správu DB.
Aichi:
Jsem pro aby stránkování bylo i nad tabulkou.
Jakub Vrána :
Zjištění celkového počtu záznamů může být časově náročné, takže zobrazením stránkování nechci zdržovat zobrazení hlavních dat. Ve verzi 3 je nahoře alespoň generický odkaz na poslední stránku.
v6ak:
Tak šlo by to pak pomocí JS zkopírovat.
Jakub Vrána :
Zajímavá myšlenka – ale při kopírování by to zbytečně bliklo. Nepovažuji to za tak důležitou věc, abych v tom dělal kompromisy a zesložiťoval aplikaci. Odkaz na poslední stránku přidaný ve verzi 3 mi úplně stačí.
LuKo:
Adminer postupuje mílovými kroky, ale jedna nejnovější vychytávka je minimálně pro mě krokem zpět: na notesu jsem zvyklý označovat jednoslovné výrazy nebo číslice dvojitým kliknutím, protože označovat text na touchpadu není moc pohodlné. Nyní mi to zobrazí editační pole, ve kterém mi ale dané slovo nebo číslo utíká "za roh", protože textové pole má jinou velikost a typ písma včetně paddingu a marginu. Existuje, například formou uživatelského nastavení, nějaká šance, jak tuto vychytávku vypnout?
Jakub Vrána :
Také jsem na to narazil a naučil jsem se k označení slova použít trojklik. Možnost vypnutí formou konfigurace určitě nebude (žádná konfigurace neexistuje), ale formou uživatelského rozhraní by to jít mohlo – i když teď momentálně asi ne zrovna moc čistě.
Považuji to ale za tak užitečnou funkci, že se ji vyplatí naučit používat a k označení holt použít ten trojklik.
David Grudl:
Spíš než označovat jednoslovné výrazy se hodí označovat celé buňky. To by se mohlo namapovat třeba na shift-click a chybějíci označování slov by se tím částečně eliminovalo.
v6ak:
Ve Firefoxu označuji buňky tabulky pomocí ctrl+click.
Jakub Vrána :
Pro označení celé buňky se dá normálně použít trojklik, při inline editaci tedy čtyřklik. Shift+click má jiný význam, který já osobně taky využívám – rozšíří výběr do daného místa. Navíc nevím, jak by jiný význam uživatelé mohli uhodnout.
David Grudl:
Docela by bodlo, kdyby kliknutí na AI nastavilo typ unsigned. Nebo má signed AI nějaký význam?
Jakub Vrána :
Já pro AI unsigned nepoužívám, protože mysql_insert_id() a spol. vrací int. A vzhledem k tomu, že v PHP je int vždy signed, tak by to při překročení maximální signed hodnoty mohlo dělat potíže.
Megaloman:
Přinejmenším pro TINYINT a SMALLINT má UNSIGNED význam. AFAIK pro hodnoty větší než PHP_INT_MAX je použit datový typ FLOAT.
Potíž nastává až u BIGINT UNSIGNED, kde nad horní mezí BIGINT SIGNED neumí počítat ani MySQL.
bene:
"Vybrané úložiště se zapamatuje v cookie při vytváření tabulky, ne ale při její změně."
Bylo by skvělé aby si to takto pamatovalo charset pro celou tabulku ale hlavně pro varchar/text.
Jakub Vrána :
Charset se dědí – u tabulky z databáze, u sloupce z tabulky. Jeho ruční nastavování je tedy obvykle zbytečné a potřebuji ho nastavit pouze v případě, kdy chci definovat nějakou výjimku. Což je nesmysl ukládat.
Torqe:
Mám menší problém s Adminerem, asi bude na mé straně, ale raděj bych se o něj podělil.
Nahrál jsem soubor do adresáře Adminer, přejmenoval ho na index.php, přihlásím se svými údaji jako na hostingu a vše "jakoby funguje". Jenže....
V levém sloupci, kde jsou odkazy na výpis tabulek a struktury při najetí kurzorem vidím ve stavovém řádku "správnou" adresu, ale tabulka napravo sice ukazuje správný výpis tabulek v databázi, ale již v celé tabulce jsou jen otazníky, namísto délek záznamů a podobně.
Při najetí kurzorem na odkaz (název) tabulky, se zobrazí cesta ve stylu file///|c: .... atd.
Můžeš mi prosím poradit kde je chyba?
Hostuju na SAVANA.CZ a server pro MySQL je tam jako Localhost.
Jakub Vrána :
Je možné tam získat nějaký testovací přístup? Pokud ano, tak prosím o zaslání přihlašovacích údajů mailem.
Jaké jsou parametry hostingu (operační systém, webový server, verze PHP)?
Torqe:
Parametry hostingu jsou tady: (nevím co přesně potřebuješ vědět)
http://www.savana.cz/webhosting/popis-webhostingu/mám hosting SAVANA 1000 s PHP 5.3 a MySQL 5.1
zde výpis MyAdmina:
MySQL
* Server: Localhost via UNIX socket
* Verze MySQL: 5.1.53
* Verze protokolu: 10
Webserver
* Apache/2.2.16
* Verze MySQL klienta: 5.1.53
* Rozšíření PHP: mysqli
Torqe:
jak to mám chápat?
Nemohu Vám poskytnout svoje přihlašovací údaje....
Dá se tam aktivovat DEMO hosting pomocí SMS za 79 Kč.
Ale mohu např. vytvořit DB s nazvem TEST a heslem dle domluvy. A přímou adresu k admineru mohu poskytnout. To by stačilo?
Torqe:
poslal jsem meila s infem
Odo:
Dobrý den,
nejde mi na localhostu otevřít databáze SQLite 2 a 3, ani když ji mám umístěnou přímo v adresáři Admineru - po klepnutí na "Přihlásit se" se po chvilce objeví stránka "Spojení přerušeno". Na webhostingu to ale funguje. Potřebuji tedy nějak speciálně nastavit PHP? V php.ini mám
[PHP_SQLITE]
extension=php_sqlite.dll
[PHP_PDO]
extension=php_pdo_sqlite.dll
a phpinfo hlásí extensions nainstalované. Kde může být chyba?
Děkuji za odpověď.
Jakub Vrána :
Ty sekce v php.ini jsou zbytečné. S MySQL Adminer funguje? Jiné stránky na stejném serveru využívající SQLite fungují?
Odo:
Po kliknutí na Přihlásit se u jakéhokoliv typu databáze se objeví "Spojení přerušeno". Z nějakého důvodu se neprovede požadavek POST adminer.php s údaji z přihlašovacího formuláře :(. Používám PHP 5.3.8, server je standardní IIS na Windows XP.
Jakub Vrána :
Jiné stránky na stejném serveru využívající SQLite fungují?
Odo:
Ano, Nette na stejné konfiguraci funguje (používám db SQLite2).
laik:
V phpmyadmin si uživatele-sebe vytovřím předem v konfiguračním souboru a pak se normálně přihlásím.
Toto když poprvé spustím tak nejdřív nevím pod čím se přihlásit a když se teda přihlásím bez údajů, hledám možnost vytvořit uživatele. No a pak zkouším vytvořit uživatele a to mi nejde proto, že nemám právo na vytvoření uživatele. Tak tomu asi nerozumím, ale intuitivní to rozhodně není.
Jakub Vrána :
Adminer nemá svou vlastní správu uživatelů, používá databázi. Pro přihlášení je tedy nutné mít uživatele vytvořeného v databázi. Pro vytváření dalších uživatelů se obvykle používá účet root.
phpMyAdmin pro práci také potřebuje přihlašovací údaje k databázi. Zapsáním údajů do jeho konfigu se databázový účet nevytvoří.
Diskuse je zrušena z důvodu spamu.