Vyšel phpMinAdmin 1.9.1
Školení, která pořádám
Do nástroje pro správu databáze MySQL phpMinAdmin jsem doplnil několik funkcí týkajících se především hromadných operací, proto jsem vydal novou verzi.
Na stránku s informací o databázi jsem přidal výpis jejích tabulek spolu s informacemi o nich. Na stejné stránce je možné provádět s tabulkami i hromadné operace. Tomuto kroku jsem se dlouho bránil, protože seznam tabulek je v navigaci dostupný na každé stránce, nakonec jsem ale uznal, že další podrobné informace (jako např. hodnota auto_increment, typ tabulky nebo počet řádek) se můžou hodit a navíc je užitečné je vidět pohromadě, takže nemusí strašit v detailu každé tabulky. Díky tomuto výpisu je navíc možné s tabulkami provádět údržbové operace (jako analyzování nebo optimalizace tabulky), které sice osobně nepoužívám, ale někdo je potřebovat může. Na stejném místě lze tabulky přesunout i do jiné databáze.
Další hromadnou operací je editace více záznamů najednou. Funguje to tak, že v hromadné editaci záznamů lze u každého sloupce zvolit, zda si má zachovat svou původní hodnotu nebo zda má dostat hodnotu novou. Bohužel aktuální hodnota sloupce nejde upravit (např. k ní něco přičíst) nebo převzít z jiného sloupce, protože mě k této funkčnosti nenapadá vhodné uživatelské rozhraní.
U každého záznamu přibyla operace klonování – to znamená vytvoření nového záznamu na základě starého. Nový záznam převezme od původního záznamu hodnoty všech sloupců (kromě sloupce auto_increment), umožní je změnit a vloží je do tabulky. I tuto operace lze provádět hromadně.
V editaci záznamu přibyla možnost aplikovat na zadanou hodnotu nějakou vestavěnou funkci. K dispozici je pouze pět funkcí, o kterých si myslím, že je možné je při editaci záznamu smysluplně použít. Pokud byste postrádali nějakou další funkci, tak dejte vědět. Zvažuji ještě přidání funkcí pro matematické operace (např. plus) a operací pro posouvání data a času.
Do výpisu záznamů jsem přidal vyhledávání pomocí NOT operátorů (např. NOT IN) a možnost vyhledávat bez omezení sloupce (stačí nezadat, v jakém sloupci chcete vyhledávat). Pokud není zadaná numerická hodnota, tak se vyhledává v nenumerických sloupcích (protože 0 = 'a'
), jinak se hledá ve všech sloupcích.
Další novinky už jen stručně: V editaci uživatele se pro vstupní políčko hesla používá typ password, ve výpisu záznamů jsem zredukoval počet tlačítek a změnu jazyka jsem předělal na výběrový seznam (protože řada odkazů už se do navigace v některých jazykových verzích nevešla).
Opravil jsem také několik chyb:
- Chyby v XHTML kódu (děkuji uživateli kozotoc)
- V exportu se nenastavuje globální proměnná max_allowed_packet (stejně její nastavení MySQL nerespektuje)
- Zohledňuje se situace, kdy uživatel nemá oprávnění SHOW DATABASES (databázi lze v tom případě zadat ručně)
- Třídění podle výsledku funkcí ve výpisu záznamů funguje i ve starších verzích MySQL
- phpMinAdmin jsem otestoval na IIS (děkuji hostingu krasl.cz)
A co znamená ta setina v čísle verze? Před vydáním jsem zapomněl obeslat překladatele, takže 1.9.0 vyšla s aktuální verzí pouze anglického a českého překladu.
Diskuse
Jakub Vrána :
Vážně jsem o něm uvažoval, ale nemám moc rád, když aplikace přistupují na Internet aniž by musely.
v6ak:
Stačilo by třeba hned po přihlášení nabídnout update. Byl bych rád, kdyby spojení s aktualizačním serverem bylo zajištěno polymorfním mechanismem (kvůli proxy apod.) a kdyby to šlo nastavit v externím souboru, který by nemusel existovat. Taky by bylo dobré, kdyby to šlo zakázat.
v6ak:
... nebo by to ve výchozím stavu nešlo zakázat, ale povolit.
Pak bych změnil jednosouborovou koncepci PhpMinAdmina na 1-2 souborovou: Jeden soubor by byl povinný a to by byl samotný PhpMinAdmin. Druhý soubor by byl nepovinný a bylo by to jeho nastavení. Pokud by neexistoval, byly by použity výchozí hodnoty.
Ladislav Prskavec:
Díky za nové funkce, teď už mi to phpmyadmina plně nahradí. Jen se mi nedaří export tabulek s daty, to dřív fungovalo. Žádná chyba se neobjeví jen prázdná stránka.
Ladislav Prskavec:
Problém se vyskytuje jen u exportu pod tabulkou, nějak se nezmění url nahoře jak by mělo.
Ladislav Prskavec:
tak moje chyba nic jsem nezatrhnul a tak vysledek byl prazdny, predpokladal jsem ze udela vsechno :-(
Gimli2:
Narazil jsem na drobny problem, jehoz odstraneni ale bude asi znamenat vetsi zasah:
Pokud pri prohlizeni databaze INFORMATION_SCHEMA a konkretne pohledu ROUTINES kliknu na editaci nejake stored procedury/funkce, ktera je delsi nez 8kB, pokus o editaci selze.
To proto, ze se cele telo procedury cpe encodene do URL, kam se dle specifikace tusim muze vejit max prave tech 8kB.
Testovano na WinXP+SP3 v Opere 9.60 - posledni verze phpminadmina 1.9.1.
Jakub Vrána :
Ty pohledy v information_schema by především asi vůbec neměly být editovatelné.
Gimli2:
Tot otazka. Obcas muze byt uzitecne videt napriklad datum posledni upravy dane SP. A kdyz si pak vzpomenu, ze ji chci upravit, tak nemusim preklikavat do dane DB, ale dam primo editovat.
Ale je to asi tak minoritni pripad pouziti, ze si s tim nema smysl delat tezkou hlavu.
Spis jestli neni pouzito stejne predani velkeho mnozstvi dat pres URL i jinde.
Jakub Vrána :
Ono to technicky není možné – pokud mi něco neuniká, tak MySQL nedovoluje pohledy v information_schema editovat. Muselo by to být namapované na editaci procedury a to už mi přijde jako moc velká magie.
Gimli2:
Jasne, samotny pohled nezedituju. Ale jim vypsane polozky jdou jen mazat a ne uz editovat. To namapovani asi za to nestoji. ;-)
Pavel Dvořák:
hazi me to chybu
Warning: array_filter(): The first argument should be an array in /home/web@xxxx.cz/mysql.php on line 551
Fatal error: Unsupported operand types in /home/web@xxx.cz/mysql.php on line 551
Jakub Vrána :
Díky za upozornění, docházelo k tomu nejspíš u prázdných databází. Opravil jsem to v SVN.
václav mařík:
Díky za skvělý software, zdá se mi lepší než konkurent.
Co bych doplnil (možná mi ale ještě něco uniká), je možnost při exportu nastavit co exportovat pro všechny tabulky naráz (klikám u 120 tabulek na struktura-přeskočit).
A u okna pro SQL příkazy (fakt se mi líbí zpracování sql příkazů a chybová hlášení) volbu "po první chybě nepokračuj dál" a skvělé by bylo také zpracování pouze označené části SQL skriptu. Píšu nějaké selecty, postupně zjišťuji proč něco nejde a hodilo by se, pokud by se dal odeslat pouze 1 select z několika, přičemž obsah textarea by samozřejmě zůstal nezměněn.
Poslední myšlenka je rozšíření o další DB systémy (MSSQL, Oracle, Firebird, ...).
Jakub Vrána :
Stačí kliknout na záhlaví sloupce. Asi by to chtělo nějak zvýraznit.
"Po první chybě nepokračuj dál" je dobré rozšíření. Spuštění označeného - to jako že by se JavaScriptem detekovalo, co je označené? To asi dělat nebudu.
Rozšíření na další DB zvažuji, hlavní problém je ten, že to nepotřebuji.
pojízdná kočka:
Prosíím dotaz: jak se přes phpMinAdmin nastaví DEFAULT ''?
pojízdná kočka:
…coby výchozí hodnota sloupce v tabulce. Podle toho, co phpMinAdmin udělal, provedl všemi sloupci, u nichž nebyla zadána hodnota, DROP DEFAULT…
Jakub Vrána :
Nebylo to možné, opravil jsem to v SVN. Díky za upozornění.
Diskuse je zrušena z důvodu spamu.