Adminer 3.7.0

Školení, která pořádám

Asi největší novinkou v Admineru 3.7.0 je možnost v SQL příkazu importovat více souborů najednou. Využívá se k tomu <input multiple>. Další změny jsou drobnější:

  1. U provedených dotazů se nově zobrazuje čas zpracování. Umístil jsem ho do SQL komentáře příkazu, takže se přenese třeba i do historie. Nicméně je možné, že mi na tomto místě časem začne vadit a přesunu ho někam jinam.
  2. Počínaje předchozí verzí se Adminer pokusí obnovit původní pohled, trigger a uloženou proceduru, pokud vytvoření nové selže. Pokud se ovšem nepodaří ani obnova, tak objekt zmizí. Nová verze se proto nejprve pokouší pohled a uloženou proceduru vytvořit pod novým názvem. Když to selže, tak by nejspíš selhalo i vytvoření pod správným názvem (práva jdou sice nastavit i na jednotlivé objekty, ale moc často se to nevyužívá). Když to projde, tak se smaže dočasný a původní objekt a nový se vytvoří pod správným názvem. U triggerů tenhle postup není možný, protože MySQL dovoluje mít jen jeden trigger pro danou událost. Pokud je to možné, tak se použije ALTER VIEW, ale ALTER PROCEDURE je bohužel k ničemu.
  3. Vizuální maličkostí (vyžadující JavaScript) je zvýrazňování výchozího formulářového tlačítka. Tato funkce odpovídá na otázku: „Co se stane, když zmáčknu Enter?“ V Admineru je na stránce často několik formulářů a nemusí být úplně jasné, které tlačítko je pro daný formulářový prvek výchozí. Např. u možností exportu pod tabulkou bych čekal, že výchozí bude tlačítko pro export. Ale protože tyto formulářové prvky jsou součástí velkého formuláře skoro přes celou stránku, pomocí kterého si můžu vybrat záznamy k exportu, tak to tak není a výchozí je tlačítko pro uložení dat. Časem této funkce možná využiji k tomu, že výchozí tlačítko bude určeno nikoliv podle pravidel prohlížeče, ale podle kontextu.
  4. Do přihlašovacího formuláře jsem přidal placeholder pro název serveru. Tento atribut se často používá špatně a uvádí se v něm popis políčka. Správně v něm má být ukázková hodnota.
  5. Výsledky výpisu dat už nejde exportovat do SQL, pokud se ve výběru sloupců použily funkce.
  6. V rozšířeních lze nyní pro překlady používat funkci lang(). Při kompilaci se totiž všechny identifikátory překladu (což je obvykle anglická verze) z důvody úspory místa nahradí číslem. Rozšíření se ale nekompilují, takže z nich chodí původní textový identifikátor. Nová verze to řeší tak, že když zkompilované překladové funkci přijde text, tak pohledem do anglického překladu zjistí jeho číslo a pro překlad použije to.
  7. Z importu a exportu jsem odstranil podporu komprese Bzip2. Zjistil jsem, že jakékoliv exporty větší než 1 MB byly oříznuté. Vzhledem k tomu, že to nikoho příliš netrápilo, tak tato možnost asi nebyla moc využívaná.
  8. Při exportu více tabulek do CSV se vytvoří archiv TAR. V minulosti se to dělalo tak, že se každý soubor CSV nejprve umístil do paměti a z ní se potom vypsal do archivu, což žralo hodně paměti. Nová verze proto CSV soubory ukládá do dočasného souboru na disku. V PHP 5.2 by k tomu šlo využít php://temp, Adminer ale podporuje i starší verze, takže je to potřeba udělat ručně.
  9. Pokud jeden pohled závisí na druhém, tak je musíme vyexportovat ve správném pořadí. To je dost pracné určit, takže nová verze místo toho nejprve vytvoří tabulku pro každý pohled a před vytvořením skutečného pohledu ji zase smaže.
  10. Předchozí verze při vymazání vyhledávacího políčka vymazala i sloupec, ve kterém se hledá. Bohužel to nefungovalo správně, protože jsem pojmenoval dvě různé funkce stejně – taková hloupá chyba.
  11. Při úpravě záznamu se používá klauzule LIMIT 1. Ta je jako pojistka pro případ editace záznamů v tabulce bez primárního klíče. Bohužel to způsobuje varování při statement-based replikaci, že tato klauzule způsobuje nejednoznačné výsledky. Varování ničemu nevadí, ale „zasírá logy“. Nová verze proto kontroluje, jestli se záznam edituje podle primárního klíče a klauzuli LIMIT 1 přidá jen pokud ne.
  12. Nová verze také opravuje velmi ošklivou chybu, která je v Admineru nejspíš už od jeho vzniku. Ta se projevuje tehdy, pokud vyfiltruji záznamy, vyberu jen některé sloupce (bez primárního klíče), označím nějaké řádky a dám je upravit. Předchozí verze upravily všechny záznamy, jejichž hodnoty odpovídaly zobrazeným údajům. Žádoucí chování je, aby se upravily jen ty záznamy, které odpovídají výsledkům vyhledávání a zobrazeným údajům. Přepsal jsem si takhle nějaká data a doufám, že to nepostihlo moc dalších uživatelů – jde přeci jen o poměrně pokročilou funkci a většina uživatelů pro takovéto změny Adminer asi nepoužívá.
  13. Nová verze také aplikaci dále vylepšuje v mobilních prohlížečích. Změna spočívá v přesunu navigace až pod hlavní obsah. Zvažoval jsem dokonce, že bych navigaci udělal na desktopu schovávací, protože se mi špatně pracuje s výpisem širokých tabulek. Ale vzhledem k tomu, že seznam tabulek používám skoro stejně často jako hlavní obsah, tak jsem tuto změnu neudělal.
  14. Počet řádků v tabulkách na stránce exportu se nově načítá asynchronně, stejně jako na stránce se seznamem tabulek.
  15. V MySQL je z nějakého důvodu příkaz SHOW TABLE STATUS u velkých databází hrozně pomalý. Adminer ho potřebuje pro zjištění komentářů a typů tabulek. Nová verze si proto tyto informace vytahuje z information_schema, což je rychlejší. Projeví se to na stránce pro vytvoření tabulky a v Adminer Editoru.
  16. Datový typ bit se nově zobrazuje jako číslo v dvojkové soustavě. Hodnoty tohoto typu se vrací odlišně v MySQLnd a libmysql a jde o jedinou mně známou nekompatibilitu mezi těmito nízkoúrovňovými knihovnami. Adminer chování sjednocuje.
  17. Pro export binárních dat se nyní používají konverzní funkce.
  18. S datovým typem point se v některých případech pracovalo jako s číslem, protože obsahuje podřetězec int, ha ha.
  19. Při výpisu nezobrazitelných dat se používá dotaz ve tvaru SELECT *, HEX(binary) AS binary. To vedlo k dvojitému uvedení těchto dat v exportu. Nová verze to ošetřuje. Možná si říkáte, proč se prostě nevyjmenuje seznam všech sloupců. I když by se přeneslo míň dat, tak by dotaz byl podstatně míň přehledný, proto se používá verze s hvězdičkou.
  20. Předchozí verze rozbila EXPLAIN v MySQL < 5.1, nová verze to opravuje.
  21. Export SQLite nově obsahuje i pohledy.
  22. PostgreSQL vrací pravdivostní hodnoty jako znaky t a f. Jeden uživatel mi ale nahlásil, že mu je PostgreSQL vrací jako 1 a 0, což způsobovalo problémy při detekci NOT NULL sloupců a primarních klíčů. Nepodařilo se mi zjistit, čím je to způsobené, jestli nějakým nastavením PostgreSQL nebo nestandardním ovladačem, každopádně jsem Adminer upravil tak, aby přijímal oba formáty.
Jakub Vrána, Adminer, 20.5.2013, diskuse: 68 (nové: 0)

Diskuse

srigi:

Jakube, vdaka ze tento update. Mam dve poznamky:

- keby si na obrazovke "Select" umoznil pri vybere jednotlivych stlpcov ich /rearrangement/, tak sa ti komunita zlozi na pol princeznej, vid.: http://i42.tinypic.com/261df6a.png

- od tejto verzie su vsetky odosielacie tlacitka vykreslene nepeknym, zastaralym sposobom, az kym formular nestrati focus, vid.: http://i41.tinypic.com/amedf8.png (Mac OS, Google Chrome, Firefox).

srigi:

Ten moj druhy bod asi suvisi s tvojim tretim bodom - vseobecne sa nedoporucuje stylovat formularove prvky ako checkbox, button, radiobox, lebo sa to "rozoserie" (sorry za vyraz).

Mozno by bolo vhodnejsie "vychozie" tlacitko zvyraznit pomocou box-shadow.

ikona Jakub Vrána OpenID:

Experimentoval jsem se změnou fontu a to bylo ošklivé, tak jsem nakonec změnil barvu pozadí. Ale máš pravdu, že to je ošklivé taky. Použít box-shadow mě nenapadlo, díky za tip. Změnil jsem to v Gitu.

Igor Aufricht:

Potvrdzujem druhy bod s vykreslovanim tlacitok (win7 + chrome).

ikona Jakub Vrána OpenID:

To přeuspořádání sloupců výběru by se mi často taky hodilo. Stejně tak přesouvání řádků ve změně tabulky, to sice jde, ale pěkně blbě. Nějaká podpora drag/drop je ve schématu, tak to zkusím použít i tady.

ikona Jakub Vrána OpenID:

Bez nějaké knihovny (např. jQuery UI) je to dost složité a přidávat závislost se mi nechce, takže to dělat nebudu. Nicméně by to mělo jít udělat jako plugin (včetně té závislosti).

Lukáš:

Ahoj, chci se jen zeptat, je normální chování že když soubor adminer-3.7.0.php přejmenuji na adminer.php tak pak je z admineru rozsypaný čaj? Používám ho jak na localhostu tak na webech a právě jsem zjistil že to je tím jménem...
Díky

Pinky:

Jménem to zajisté není ;)

ikona Jakub Vrána OpenID:

Ne, to není normální. Na jménu nezáleží. Zkus být přesnější v popisu rozsypaného čaje, pošli třeba screenshot.

Lukáš:

Jakoby by se špatně načetlo kódování, ale teď budu za troubu... soubor jsem přejmenoval a už to samozřejmě nedělá :/ Díky za reakci, problém se vyřešil. :)

Roman:

Zdravím, nechtěl bys zavést v příštích verzích funkčnost zakliknutí checkboxu i v případě kliknutí do buňky tabulky s daným checkboxem, nebo třeba i na buňku s labelem ? Dost často vybírám např. v oprávněních více práv najednou a dost mi vadí, že se musím vždy trefit přesně na checkbox a nemůžu trochu minout, nebo kliknout třeba rovnou na label buňku. Díky.

ikona Jakub Vrána OpenID:

Určitě! Většina tabulek dovoluje zaškrtnout řádek kliknutím kdekoliv v řádku, ale třeba export nebo právě práva to nedovolují (protože na řádku může být checkboxů víc). Změnil jsem to v Gitu, díky za tip.

Milan Majer:

bod 22: jediná možnost, jak tam dostat 1/0 místo t/f je mít vlastní patchnutou a zkompilovanou verzi. Díval jsem se do zdrojáků a je třeba upravit tento řádek: https://github.com/postgres/postgres/blob/…/bool.c#L168 .

Pinky:

Taky jsem si řikal co je to za krávovinu...

ikona Jakub Vrána OpenID:

A nemůže se to převádět na klientu? Driver dostane 't' nebo 'f' u sloupce, o kterém ví, že je to boolean, tak z toho udělá true nebo false.

Milan Majer:

Máš pravdu. Adminer detekuje dostupné rozšíření PHP a podle toho co najde se rozhodne mezi pdo_pgsql a pgsql (viz https://github.com/vrana/adminer/blob/master/….inc.php#L7).
A v tom je ten rozdíl:
- rozšíření pdo_pgsql převádí t/f na PHP 1/0 (viz https://github.com/php/php-src/blob/master/…_statement.c#L519) kdežto
- rozšíření pgsql se získanou hodnotou nic nedělá (viz https://github.com/php/php-src/blob/master…/pgsql.c#L6357).

v6ak:

Budu zvědavý. Co Tě vede k podpoře PHP 4.3.3 a starých verzí PHP 5 dnes? Mnohé z nich už nemají bezpečností updaty. Zaříznutí starších verzí by mohlo více nebo méně usnadnit vývoj (např. zmíněný php://temp).

Ne, že by mi to nějak vadilo, jen jsem zvědavý.

ikona Jakub Vrána OpenID:

Zatím nebyl velký důvod starší verze zaříznout, oser s jejich podporou není tak velký. Zraje mi v hlavě pár plánů na Adminer 4, pak bych starší verze asi přestal podporovat. Ale nejsem si jist, jestli to vůbec udělám – se současným kódem se mi pracuje v zásadě dobře, takže nemám moc velkou motivaci trávit spoustu času předěláváním všeho, když výsledkem by bylo hlavně to, že přestanou fungovat starší verze.

Michal:

Ad 13. Desktopová navigace. Dalo by se udělat jako rozšíření ? Já (asi nejen já) naopak často pracuji s pravou částí :)

ikona Jakub Vrána OpenID:

Myslím, že by to mělo jít, možná dokonce jen uživatelským stylem.

repli2dev:

Občas potřebuju upravit nějaké view v PostgreSQL a bylo by fakt užitečné, kdyby je Adminer uměl naformátovat, protože jinak se mi zobrazí v jednom dlouhém řádku.

ikona Jakub Vrána OpenID:

Adminer bohužel nemá SQL parser.

randomguest:

zdravím a díky za dobrý kus softwaru. Jakube, trochu mu působí potíže dump, který generuje všechny řádky tabulek do jednoho insertu, což mi potom nepřijme lokální SQL server.
Námět do budoucna: umožnit export jeden řádek tabulky - > jeden INSERT.

ikona Jakub Vrána OpenID:

Adminer data kouskuje po 1 MB, což je výchozí velikost paketu přijímaná MySQL. Co znamená „nepřijme“, máš nějakou chybovou hlášku?

LT:

Škoda tej podpory bzip2 - dosť som ju využíval na export velkých tabuliek - niekedy aj viac ako 10MB a s problémom orezania na 1MB som sa zatial nestretol.
Je pravda že ak som sa pokúsil ten súbor znova naimportovať tak sa naimportovali len niektoré tabulky. Ja ho ale vždy rozbalujem 7zipom na .sql súbor ten sa naimportoval vždy v poriadku.

ikona Jakub Vrána OpenID:

Tak aspoň něco, že to dokázalo rozbalit. Já jsem to zkoušel pluginem do Total Commanderu a ten to taky nerozbalil. Možná bych to vrátil ve formě pluginu.

juzna:

Já export do bzip2 používám běžně a vždycky mi fungoval a funguje správně. Teď nemůžu aktualizovat na nový adminer, protože bych musel stahovat 10x větší exporty ze serveru :(

Na ostrý server mám přístup pouze přes adminer a každý týden si udělám dump a importuju na localhost, abych mohl testovat na reálných datech. Importuji většinou přes CLI.

Dnes jsem exportoval do bzip2, výsledek 13MB. Nekomprimované to má 163MB. To přece nebudu tahat přes síť. Nechceš bzip2 vrátit zpět? Díky

ikona Jakub Vrána OpenID:

Kolik to má v Gzip?

Standa:

Také bych se přimlouval za bzip2... teď se tu zrovna patlám s gzipem:-(

ikona Jakub Vrána OpenID:

Vrátil jsem to alespoň formou pluginu.

Vojtěch Dobeš:

Díky za vývoj tohoto pro mě neprostradatelného a skvělého software :). Bohužel píšu jen proto, abych se podělil o negativní feedback hned k tomu prvnímu bodu. Jsem zvyklý provádět různé úpravy ve struktuře DB, a pak si jednotlivé dotazy vykopírovávám z historie, a ten čas v komentáři mi tam pěkně vadí. Přemístění kamkoliv jinam bych uvítal.

ikona Jakub Vrána OpenID:

Nějaký nápad, jak by to mělo vypadat? Nejlépe formou screenshotu.

Vojtěch Dobeš:

Buď nevýrazně za dotazem: http://s22.postimg.org/jeuqn4hkh/inline_time.png. Anebo z mého pohledu ještě lépe jako tooltip: http://s22.postimg.org/o20sow4xd/title_time.png.

Michal:

Si tak říkám, že když je vždy po vydání verze tolik (neberte to špatně prosím) připomínek tak by se možná hodilo vydat nejprve nějaký preview, aby pak ty úpravy nebyly jen v devu a nečekali na další verzi.

ikona Jakub Vrána OpenID:

Nejsem si jist, kolik lidí by ten preview používalo a jaký by to tedy mělo smysl. Každá vydaná verze je stabilní a funkční, takže vydat 3.7.0 a 3.7.1 není velký rozdíl oproti vydání 3.7.0RC1 a 3.7.0. Nesnažím se číslo verze udržet co nejnižší, takže ani s tím není problém.

Michal:

Ano, v tom případě tomu rozumím.

Milsa:

Chcel by som požiadať, či by aj pouužívateľ nemohol byť predvyplnený ako root. Teda aspoň v prípade, že je spustený lokálne. Ušetrilo by mi to ustavičné vyplňovanie root. Adminera totiž na 80 % používam lokálne na svojom počítači a myslím, že takých nás je viac.

ikona Jakub Vrána OpenID:

localhost není předvyplněný, je to jen placeholder. Pokud jsou políčka nevyplněná, tak se použije http://php.net/mysql.configuration#ini.mysql.default-host a další (nebo mysqli varianty podle použité extenze).

Michal:

To stránkování co se posouvá se scrollem je super !

Jakub:

Jakube,
napadla mě teď, při vytváření nové tabulky, věc, co by usnadnila práci.

Bylo by možné při zvolení řetězcového typu vyplnit porovnávání stejně, jako je vyplněno u celé tabulky?

Díky za zvážení, Jakub

Michal:

Mám pocit že přesně takto to již funguje. Sice se hodnota inputu nepřebírá - je tam stále "(porovnání)", ale nastavuje se z tabulky. Při následném editu tabulky je to vidět.

Jakub:

Pravda, při editu je to již vyplněno "správně". Dobré vědět, ušetří to práci, díky. :-)

Michal:

Zdravím.

Zajímalo by mě proč při změně struktury tabulky není tato tabulka v menu aktivní resp. nemá třídu "active". Díky.

ikona Jakub Vrána OpenID:

Třídu "active" mají odkazy, na kterých se momentálně nacházím. Odkaz v levém menu vede na zobrazení struktury tabulky, nikoliv na její změnu.

ikona David Grudl:

Tohle mi taky dost vadí. Chápu logiku „ze spoda“, ale z uživatelského pohledu provádím správu určité tabulky a v některých případech zvýraznění najednou zmizí.

Ještě jedna trošku matoucí věc: když chci pozměnit index nebo klíče, automaticky mířím na odkaz Pozměnit tabulku, ale toto se nachází v Zobrazit strukturu. Přitom chci měnit, nikoliv zobrazovat. Proč je nedat i do Pozměnit tabulku?

ikona Jakub Vrána OpenID:

„Správně“ by asi bylo nechat to tak, jak je to teď. Ale užitečnější bude, když se tabulka zvýrazní i při její změně, takže jsem to tak udělal.

Co se druhé věci týče: Technicky jsou tabulka a index dvě různé věci. Z pohledu efektivity práce by bylo lepší stránku pro změnu tabulky a indexů spojit, ale je to velká výzva – jednak stránku udržet rozumně přehlednou a jednak formulář pro změnu indexu měnit spolu s tím, jak přidávám, měním a odebírám sloupce. Takže to nechám tak, jak to je.

Michal:

Super. To je dle mých představ. Díky !

ikona David Grudl:

U toho odkazu Pozměnit tabulku je problém i s tím, že zmizí „menu“, tedy odkazy Vypsat data, Zobrazit strukturu, Pozměnit atd.

Chápu technickou rovinu, tedy že Pozměnit tabulku a Pozměnit indexy jsou obojí rovnocenné podstránky Zobrazit strukturu, leč z uživatelského pohledu se to jeví tak, že Pozměnit tabulku je rovnocenné se Zobrazit strukturu (je to prostě sousední položka v „menu“) a z toho plyne zmatení.

Myslím, že menu by mělo být zachováno pro všechny stránky, které jsou v něm uvedeny (tj. i Nová položka). A bylo by fajn dát odkaz na změnu indexů/klíčů do stránky Pozměnit tabulku. Není ani tak podstatné, že tabulka a index jsou dvě různé věci, důležité je, že jde o jediný odkaz v menu, který obsahuje sloveso „měnit“ a člověk přes něj instinktivně jde.

(Ačkoliv Adminer používám hodně často, v tomhle jsem ještě nepřestal chybovat.)

Michal Randa:

To mě také přijde zbytečně nekonzistentní na Admineru. Proč by nabídka pro tabulku (se zvýrazněným odkazem) nemohla být i při úpravě tabulky či úpravě záznamu nebo záznamů?

Vojta:

Od té doby co jsem si upgradoval na tuto verzi mi nefunguje úprava záznamu pouhým dvojklikem na buňku, to je záměr?

ikona Jakub Vrána OpenID:

Ano, nově se používá Ctrl+klik, protože doubleclick mi chyběl pro označení slova.

Vojta:

Aha, supr díky za info :)

trestná smradlavice:

Ahoj Jakube,
Vím, že Adminer má UI pro editaci partitions, triggerů, klíčů a cizích klíčů. Má UI také pro podmínkových omezení (CONSTRAINT ... CHECK)?

ikona Jakub Vrána OpenID:

Ne.

trestná smradlavice:

A plánuješ to? Je to konec konců další featura tabulky, stejně jako výše zmíněné...

ikona Jakub Vrána OpenID:

Sám to nepoužívám, MySQL to ani nepodporuje, takže tomu nedávám velkou prioritu.

Michal:

Když v Admineru v selectu dat dám vyhledat podle nějakého sloupce, zvolím sloupec, zvolím IS NULL a na dalším vstupním poli odešlu enterem (ne tlačítkem Select), není toto vyhledávání (filtr) akceptováno.

ikona Jakub Vrána OpenID:

Nedaří se mi to reprodukovat. V jakém prohlížeči?

Michal:

Chrome Verze 29.0.1547.62m
Dělá to jen v Chromu. Ve Firefoxu je to OK.

Michal:

Zdravím. Povedlo se ti už problém reprodukovat? U mě chyba stále přetrvává.

ikona Jakub Vrána OpenID:

Ano, už jsem to opravil. Díky za nahlášení.

Michal:

Potvrzuji, funguje.

Martin:

Ahoj. Svoji databázi administruji z mobilu a potřebuji mít přístup k položkám navigace. Teď je na dotykovém mobilu obtížně dosažitelná, protože je až dole pod ostatními položkami. Lze nějak jednoduše "zapnout" zobrazování vlevo, nebo se budu muset vrátit ke staré verzi? Lze také nějak zapnout, aby ťuknutí na položku výpisu ji vybralo (a bylo možné řetězec kopírovat), místo aby se tím zaškrtle checkbox vlevo? Klidně ať se zaškrtne, ale ať zůstane řetězec označený. A další, tentokrát námět - podpora sqlite je vylepšená, ale chybí administrace triggerů na pohledu. Ty jsou v sqlite dost důležité (INSTEAD OF INSERT) a řeší tam absenci určitého typu uložených procedur.

ikona Jakub Vrána OpenID:

Třeba Chrome na Androidu umí vyžádat desktopovou verzi. Nejspíš to bude umět i na iOS. Nevím, jak ostatní prohlížeče. Mě to takhle vyhovuje.

Výběr řetězce na mobilu provádím podržením prstu na daném slově. Funguje to i v Admineru.

Na triggery u pohledů se podívám.

ikona Jakub Vrána OpenID:

Triggery na pohledech jsem doplnil, bylo to velmi jednoduché.

Martin:

Ještě drobnost: Je-li na mobilu (HTC7Pro, Internet Explorer 9) výpis delší, než stránka, objeví se zápatí na konci stránky a roluje se s výpisem nahoru při posunu výpisu. Funkčně to moc nevadí. V podstatě mi chybí hlavně tlačítko "zobrazit klasicky", tedy vynucení desktop verze.

Michal:

Čtu v Admineru SQLite databázi. Zobrazení struktury tabulky 'sqlite_sequence':

Sloupec    Typ
name    NULL
seq    NULL

Pokud dám pozměnit tabulku, zobrazuje typy jako numeric. Proč? Chyba? Vlastnost SQLite?

ikona Jakub Vrána OpenID:

Jde o systémovou tabulku SQLite, nedoporučoval bych na ni sahat.

Vložit komentář

Používejte diakritiku. Vstup se chápe jako čistý text, ale URL budou převedeny na odkazy a PHP kód uzavřený do <?php ?> bude zvýrazněn. Pokud máte dotaz, který nesouvisí s článkem, zkuste raději diskusi o PHP, zde se odpovědi pravděpodobně nedočkáte.

Jméno: URL:

avatar © 2005-2018 Jakub Vrána. Publikované texty můžete přetiskovat pouze se svolením autora. Ukázky kódu smíte používat s uvedením autora a URL tohoto webu bez dalších omezení Creative Commons. Můžeme si tykat. Skripty předpokládají nastavení: magic_quotes_gpc=Off, magic_quotes_runtime=Off, error_reporting=E_ALL & ~E_NOTICE a očekávají předchozí zavolání mysql_set_charset. Skripty by měly být funkční v PHP >= 4.3 a PHP >= 5.0.