Adminer 3.2.0 – AJAX
Školení, která pořádám
Hlavní novinkou v právě vydané verzi Admineru je využití AJAXu. Kromě jednoduchého použití pro stažení pomalu načítaných dat (což je čistší dělat AJAXem než vloženým JavaScriptem) a načtení dlouhých textů do inline editace se AJAXem odesílají také všechny požadavky (kromě formulářů s přiloženými soubory), které nemění navigaci – to ovšem pouze v moderních prohlížečích s podporou history.pushState
(Firefox 4 a Google Chrome). O detailech implementace mám v plánu napsat samostatný článek.
A jaký je vlastně smysl použití AJAXu v Admineru, není to jen technologická masturbace? Hlavním přínosem je rychlost – subjektivní dojem zrychlení je opravdu značný. Původně jsem chtěl s novou verzí Admineru počkat až na vydání Firefoxu 4, ale ten má proti původnímu plánu zpoždění.
Dalších změn v Admineru se totiž nakupilo také poměrně dost:
- Kromě možnosti přesunout tabulky do jiné databáze přibyla i možnost tabulky zkopírovat. Ta funguje i se stejnou databází, kdy tabulky dostanou prefix
copy_
.
- Ve výpisu tabulky lze nyní hledat i podle výrazu, tedy např.
date > NOW()
. Slouží k tomu prázdný operátor.
- Nově lze exportovat výsledek SQL dotazu.
- Při vkládání nového záznamu (nikoliv při editaci) se focus nastaví do prvního políčka.
- Schéma databáze ukládá rozmístění tabulek do cookie. Ta se nastavovala pro celé URL, s čímž byl v některých prohlížečích problém, proto se nově nastavuje jen pro cestu před otazníkem a název cookie obsahuje název databáze. Nově se také dá na aktuální rozložení schématu trvale odkázat pomocí URL.
- V režimu vykonávání SQL příkazu, při kterém se zobrazují pouze chyby, se nyní vypisuje celkový čas provedení všech příkazů.
- V historii SQL příkazů přibyl příkaz pro editaci všech příkazů najednou. To se hodí hlavně v případě, kdy si historii chcete uložit do souboru.
- V MS SQL se nyní lépe vytváří primární a cizí klíče.
- Ve výpisu ze SQLite se zobrazuje 0.
- Výchozí typ při vytváření tabulky byl změněn na
int
.
- Při vytváření tabulky a editaci hodnot se na horní a spodní políčko dá přesunout pomocí Ctrl+nahoru a Ctrl+dolů.
- Při přihlašování k SQLite uživatelé nevěděli, co mají vyplnit jako server, login a heslo, nově se proto tato pole skrývají (stačí totiž vyplnit cestu k databázi).
- V databázi PostgreSQL dokáže Adminer nově využít sloupce
oid
. Ty jsou sice pomalu na ústupu, ale někdo je stále používá místo primárních klíčů.
- V přizpůsobení lze určit, co se má zobrazovat na titulní stránce.
- V Editoru se při hledání čárkami oddělených hodnot hledá u číselných sloupců pomocí operátoru
IN
.
- V Editoru se pro políčka
md5
a sha1
používá <input type="password">
.
- Adminer vždy dokázal pracovat i bez cookies (pokud to bylo v konfiguraci PHP povoleno), ve verzi 3.1.0 to ale bohužel bylo porouchané. V nové verzi lze tedy opět pracovat i při vypnutém
session.use_cookies
(ne, že bych to někomu doporučoval).
- Přibyl portugalský, slovinský a turecký překlad.
Diskuse
Díky za novinky. Parádička, jen tak dál. Jediné 2 věci, co Admineru z mého pohledu chyběly k dokonalosti, byly přidány. Kam se hrabe phpMyAdmin :-)
asdf:
Ďakujem, skvelá práca ako vždy!
Díky Jakube! Moc dobrá práce, teď už mi tam vůbec nic nechybí:) Přeju Admineru spoustu spokojených uživatelů a budu pokračovat v rozšiřování mezi známé;)
marek:
Vynikajúce, ale mne chýba ešte jedna maličkosť: listbox s hodnotami (s možnosťou označiť viac možností) pri filtrovaní stĺpcov s typom "enum" alebo "set".
Takhle to funguje v Adminer Editoru, kde mi to dává lepší smysl. Šel by z toho udělat i plugin, ale dělat se mi to nechce.
marek:
Nerozumiem prečo to v plnom Adminere nedáva zmysel. Je to nejako obmedzujúce?
Ja mám db s vyše 100 tabuľkami a nedokážem si pamätať všetky hodnoty enum alebo set pre všetky položky zo všetkých tabuliek. A už vôbec si nepamätám ich číselné hodnoty, aby som podľa nich mohol filtrovať. Vždy si musím otvoriť druhý tab so štruktúrou tabuľky a ručne opisovať názov hodnoty, ak chcem podľa nejakej filtrovať. Vy to robíte ako, ak sa môžem opýtať?
V Admineru to taky může dávat smysl, v Adminer Editoru ale lepší.
Já pro práci s daty používám Adminer minimálně, na to skoro vždy používám Adminer Editor.
Ale jak říkám – zkuste vytvořit plugin, já ho pak milerád zveřejním.
mp:
Skoda ze je to tak rozdelene, nechce sa mi velmi prepinat medzi dvoma nastrojmi, ked skoro vzdy potrebujem i pracu s datmi i strukturou
Ještě by bylo moc pěkné, kdyby adminer uměl dělat SQL hinting jako je třeba v PlSQL Developeru. Tedy že když píši SQL dotaz a chvilku čekám, pokusí se mi systém doplnit název tabulky nebo sloupečku. Případně to dělá na vyžádání při stisknutí klávesy F6.
MatJ:
Dakujeme za aktualizaciu. Cim dalej tym silnejsi je tento nastroj :) Niekde si uz spominal, ze zatial neplanujes robit kopirovanie databaz v admineri, ze to treba riesit import/exportom, predsa len by som zahlasoval za takuto funkciu. A taktiez by bolo mozno dobre, mat tam moznost pozriet sa, ktori uzivatelia maju pristup ku danej databaze. Inac super, velmi dobre sa s tym pracuje.
Jakub Vrána :
V nové verzi přibylo alespoň kopírování tabulek. Práci s uživateli se vylepšovat nechystám.
Tomáš Pavlacký:
adminer je super
Ot@s:
Velmi uzitečná utlitka. Díky. Mě osobně chybí jedinné - volba portu v přihlašovacím formuláři.
Jakub Vrána :
Port se zadává pomocí dvojtečky v názvu serveru, je to docela běžná konvence, např. tedy localhost:3306
Martin Hujer:
//Adminer je super, pořád překvapuje - dnes to bylo automatické předvyplnění cizích klíčů během vytváření tabulky :)
Ad. URL na konkrétní schéma - nejsem si jistý, jestli není chybka, že na něj odkazuje jen znak '#' (ale nechci to reportovat jako bug, pokud to je záměr)
Martin Hujer:
Čekal bych něco jako "Trvalý odkaz na rozložení" nebo jen "Trvalý odkaz" - kdybych z changelogu nevěděl, že to tam je jako novinka, tak by mě na ten # ani nenapadlo klikat
Shamania:
Super nástroj, ale chybí mi u exportu SELECTu možnost "otevřít-INSERT" vedle možností CSV,/CSV;/TSV.
Takhle pak následný import musím dělat přes soubor místo ctrl+c/ctrl+v.
Shamania:
Omlouvám se a nechápu, teď už tam vidím na prvním místě i SQL vedle těch třech zmíněných.
Filip Procházka:
Nedaří se mi přihlásit na zdroják a nechce se mi to teď řešit, tak se snad nebudeš zlobit, když ti to napíšu sem :)
Feature request: napadlo tě už přidání podpory, pro snažší přejmenování sloupce? :) Takhle musím smazat FK, index a pak teprve můžu přejmenovat sloupec a nastavit mu FK znovu. Bylo by to super :)
Jakub Vrána :
Také už mě to napadlo, ale přijde mi to příliš magické, takže to dělat nebudu. Mazat index by nemělo být potřeba, stačí cizí klíč.
David Hynek:
Zdravím. Nechci být rypákem nad tak dobrým dílkem jako je adminer, ale přec drobnost bych měl. Mám verzi 3.2.0 MySql CZ
a html není ukončené. Chybí tam </body></html>
David Hynek:
Aha, a důvod? Nějaká finta na roboty vyhledávače?
Profík jako ty nedělá nic co by nemělo nějaký účel :o)
Jakub Vrána :
Důvod je ten, že ty značky jsou nepovinné, takže je zbytečné je uvádět. Zmenšuje to velikost (tedy i zvyšuje rychlost), navíc to dovoluje dělat různé triky (např. neuvedení </body></html> znamená, že můžu zavolat page_footer() a pak třeba ještě vložit nějaký kód, který má být až za patičkou).
Vyki:
Také velmi děkuji za nový adminer, skvěle a rychle se s tím pracuje. Jsem velmi překvapen, že history.pushState nezvládá IE9. To snad dělají programátorům schválně. Jinak ve FF4 to běhá v pohodě, ale v chrome to běhá tak rychle, že se ani nestihne zobrazit kolečko načítání. Testoval jsem tuto funkčnost i na Githubu a výsledek stejný. FF4 je oproti Chrome v tomto ohledu líný.
Marty:
Připojuji se k pochvalám!
Mohl bych se zeptat, proč je v Adminerovi míchána prezentace s logikou aplikace?
Jakub Vrána :
Projekt jsem stavěl jako co nejkompaktnější a nechtěl jsem ho zatěžovat šablonovacím systémem a složitější logikou, která by s tím nutně byla spojená.
Další věc je ta, že Adminer někdy provádí dlouhotrvající operace, během kterých je potřeba odsypávat výstup, takže klasický postup (naplnit proměnné, zpracovat šablonu) by selhal. Musely by se tedy použít aktivní šablony (jak jsem to kdysi nazval, viz http://php.vrana.cz/vyhody-aktivnich-sablon.php), což by samozřejmě šlo, ale komplexita by se ještě o něco zvýšila.
Takže zatímco u běžných webových aplikací si výhod šablon naplno užívám, u Admineru svého rozhodnutí nelituji. Kromě výše zmíněných praktických výhod se mi totiž dobře pracuje i s kódem.
František Svoboda:
Je možné nějak vypnout používání AJAXU? Musím říct, že mi asynchronní načítání dělá značné potíže - například když dám zpět, místo zobrazení stránky se stránka načte znovu, což třeba při editaci nové tabulky znamená ztracení práce.
Diskuse je zrušena z důvodu spamu.