Výpis tabulky z UTF-8 přímo do Excelu
25. 2. 2008 | V kategorii webdesign | Přidejte komentář
Moc se mi líbí kategorická tvrzení. Jedno z nich třeba vyhlásil Radek Hulán (nic proti němu), že Office 2007 je o 10let před konkurencí.
To může být velmi potěšující zpráva zvlášť v okamžiku, kdy se marně snažíte importovat data z databáze MySQL do Excelu ve znakové sadě UTF-8, na jejíž podporu Billy se Stevem tak nějak pozapomněli. Netuším co k tomu vedlo vývojáře tohoto pokrokového software, ale já jsem měl zase o jednu starost navíc.
Tak co s tím? Překódovat samozřejmě, na to je PHP machr, ale do čeho? Windows-1250 jsem zavrhl, je potřeba taky vyexportovat věci v azbuce. Volba padla na nejrychleji nalezené řešení : UTF-16 little endian.
Pokud na začátek přidáme ještě správnou hlavičku, můžeme data rovnou i otevřít v Excelu.
Taky nesmíme zapomenout na znaky 0xFFFE označující znakovku UTF-16LE.
<?
header( "Content-type: application/vnd.ms-excel; charset=UTF-16LE" );
header('Content-Disposition: attachment; filename="export.csv"');
echo chr(255).chr(254).mb_convert_encoding( $vypis_csv, 'UTF-16LE', 'UTF-8');
?>
PHP: Zákeřná začátečnická chyba
1. 2. 2008 | V kategorii webdesign | 2 Comments
Nedá se to nazvat jinak než Chyba z lenosti…
<?
$a="jedna";
if($a==0){echo 'Nula';}
?>
Result: “Nula”
V těchto případech doporučuju používat === , tedy i typovou kontrolu proměnné.
Podrobnosti zde:
CSS: jak nastylovat <HR >
19. 1. 2008 | V kategorii webdesign | Přidejte komentář
Možná budete chtít někdy nastavit tag <HR> jako přerušovanou čáru. Tady je řešení, otestováno v IE6, 7 a FF
hr {
height: 0px;
border-width: 0;
border-bottom:1px dashed black;
}
Rychlé přepínání hodnoty v MySQL
14. 1. 2008 | V kategorii webdesign | Přidejte komentář
Ani při vytváření složitějších aplikací se nevyhnete jednoduchým úkonům.U databázových aplikací s využitím AJAXu (tam kde chceme klikat na tlačítko) to platí nejméně trojnásob. Proto myslím že není od věci se trochu zamyslet a vymyslet snazší řešení než klasické načítání a update hodnoty u tak triviální operace jako je přepnutí hodnoty z 0 na 1 a zpět.
V MySQL dokážeme hodnotu přepnout jediným příkazem:
update moje_tabulka set hodnota=if(1,0,1) where id=100
Podobně můžeme tímto příkazem cyklovat hodnoty, zde např. od 0 do 9
update moje_tabulka set hodnota=if(hodnota=9,0,hodnota+1) where id=100
Při vytváření tabulky nezapomeňte nastavit výchozí hodnotu pole hodnota na not null default 0. V prvním příkladu by se to “nějak opravilo”, ve druhém ale by hodnota zůstala “viset” na null.
Rychlá podmínka alias ternární operátor
14. 1. 2008 | V kategorii PHP, Programování, webdesign | Přidejte komentář
Někdy může takové rychlé vyhodnocení podmínky slušně zpřehlednit kód.
$id=18;
echo !$id ? "nic" : $id;
Samozřejmě je třeba vědět co děláte, zrovna tento příklad může být příčinou pár špatně identifikovatelných chyb.
Ternární operátor můžeme taky elegantně vložit přímo do řetězce.
<?php
echo'<strong>'.(isset($id)?'Úprava novinky':'Přidání novinky').'</strong>';
?>
Závorky nejsou nutné, ale v rámci zachování štábní kultury jsou určitě vhodné.