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');
?>

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:

http://www.blueshoes.org/en/developer/php_cheat_sheet

http://www.php.net/manual/en/types.comparisons.php

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;
}

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.

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é.

« novější článkydalší články »