Letní a zimní čas v PHP

V jedné aplikaci používám kalendář. Zobrazuje se tak, že k prvnímu dni v timestamp formátu přičtu vždy 7 dalších dní = 7 (dni) * 24 (hodin) * 60 (minut) * 60 (vterin). Bohužel PHP je tak inteligentní (nebo já nevim co), že do toho počítá i letní a zimní čas. Tím se mi udělal “problém” v některých říjnových týdnech.

Na stránkách Jakuba Vrány jsem ale našel pomoc, jak tuto mou kravinku pořešit. Díky moc!

Předávání proměnných do Flashe

Někdy je třeba, aby HTML (či jiná) stránke řekla Flashi co má dělat. Nejlépe to asi jde pomocí předání hodnoty proměnné do Flashe. Flash soubor s proměnnou pak pracuje.

Proměnná se předá podobně jako tomu je například v PHP – tedy tak, že za jméno souboru se dá znak otazníku a poté se vloží hodnoty proměnných ve stylu “název_proměnné=hodnota”.

Například soubor_flash.swf?promenna=hodnota

Tuto hodnotu promenne pak musime napsat do HTML, ktery Flash zobrazuje – do tagu PARAM i EMBED.

Konkrétně tedy najdeme v HTML, které zobrazuje Flash tyhle řádky
<span name=”movie” value=”flash_nazev.swf” class=”mceItemParam”></span><span class=”mceItemEmbed” src=”flash_nazev.swf” mce_src=”flash_nazev.swf” quality=”high” …atakdale<br /></span>

a dáme do nich název proměnné a její hodnotu:
<span name=”movie” value=”flash_nazev.swf?promenna_nazev=hodnota” class=”mceItemParam”></span><span class=”mceItemEmbed” src=”flash_nazev.swf?promenna_nazev=hodnota” mce_src=”flash_nazev.swf?promenna_nazev=hodnota” quality=”high” …atakdale<br /></span>

Pokud bychom tedy chtěli mít Flashovou animaci / reklamní banner, u kterého nevíme dopředu kam uživatele po kliknutí přivede, uděláme to následovně:
1 – Do Flashové animace umístímě do vrchního Layeru objekt, který bude tlačítko. (Většinou se používá neviditelné přes celou plochu Flashe). Na toto tlačítko “navěsíme” Akci
<br />
on (release) {<br />
getURL (_root.clickthru, “_blank”);<br />
}<br />

Do HTML zobrazující Flash pak déme hodnotu například http://www.google.com do proměnné s názvem “clickthru”. HTML pak bude vypadat následovně:
<br />
<span class=”mceItemObject” classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″<br />
codebase=”http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0″<br />
width=”770″ height=”100″ id=”flash_banner” align=”middle”><span name=”allowScriptAccess” value=”sameDomain” class=”mceItemParam”></span><span name=”movie” value=”flash_banner.swf?clickthru=http://www.google.com” class=”mceItemParam”></span><span name=”quality” value=”high” class=”mceItemParam”></span><span name=”bgcolor” value=”#000000″ class=”mceItemParam”></span><span class=”mceItemEmbed” src=”flash_banner.swf?clickthru=http://www.google.com” mce_src=”flash_banner.swf?clickthru=http://www.google.com”<br /></span>
quality=”high”<br />
bgcolor=”#000000″ width=”770″ height=”100″ name=”flash_banner”<br />
align=”middle” allowScriptAccess=”sameDomain”<br />
type=”application/x-shockwave-flash”<br />
pluginspage=”http://www.macromedia.com/go/getflashplayer” /><br />
</span><br />

PHP nahrazení znaků v řetězci jinými

pokud chceme nahradit znaky v jednom řetězci jinými znaky, použijeme funkci StrTr(). Funkce má tři argumenty:
– řetězec
– znaky, které se mají nahradit
– znaky, kterými se maji nahradit

Pokud mámte tedy proměnnou $prijemci_final, ve které jsou Emailové adresy oddělené středníky a my je chceme oddělit čárkami, aby byly použitelné pro funkci mail(), uděléme to následovně

<br /> $prijemci_final=StrTr($prijemci_final,&#8221;;&#8221;,&#8221;,&#8221;);<br />

Rozdělení řetězce do pole v PHP

pokud chceme rozdělit řetězec do položek pole, slouží k tomu jednoduchý příkaz explode(). Například pro získání jednotlivých mailů z řetězce kde jsou odděleny středníkem, můžeme použít:

<br /> $maily=&#8221;honza@gmail.com; franta@google.com; stonozka@sranda.cz&#8221;;<br /> $pole=explode(&#8220;;&#8221;, $maily);<br />
Pro vypsání všech mailů z pole pak můžeme použít:
<br /> foreach ($pole as $mejl) {<br /> print &#8220;$mejl<br />\n&#8221;;<br /> }<br />

Jak opravit vadné sektory v iPodu?

Můj krásný černý iPod 80 GB dovezený z USA za polovinu ceny než se prodává zde (díky Aleší!) (fuck cenová politika Apple) používám půl na půl jako přehrávač a jako přenosný harddisc. Pravděpodobně jeho častým odpojováním bez ohlášení (nebezpečné vyjmutí hardware) mi tam vznikly nějaký vadný soubory či sektory a některý adresáře pak nešly smazat, dokonce se mi podělal i iPodovský adresář obsahující “Artworks”.

Naštěsí existuje skoro retro prográmek chkdsk, kterým se vše dá krásně napravit. Stačí:

  • zapojit iPod
  • vypnout iTunes, nezobrazovat adresář iPodu v žádném souborovém prohlížeči nebo průzkumníkovi
  • dát (ve windows) Start – Spustit
  • napsat “chkdsk i: /f” kde i: je název disku iPod (můžete mít jiné písmeno)
    Prográmek pak sám opraví vadné sektory a zeptá se zda má vadné soubory opravit.

  • Update formuláře pomocí JavaScriptu

    Pokud píšete často do formulářového pole nějaké texty, které updatujete například o tagy (obrázky, odkazy), může člověka štvát neustálé vkládání tagů jako například “a href…” a podobných.

    Do formuláře si můžeme jednoduchyým způsobem vložit pole, do kterých zadáme hodnoty a po stisknutí tlačítka nám to odkaz vloží samo.

    Pro příklad vkládání HTML kódu pro odkaz nám bude fungovat následující script:
    – mějme formulář s názvem “formular” (to se dává do tagu form atributem name :o)
    – budeme mít dvě textová vstupní pole
    1) name=”url” (sem budeme zadávat cílové URL odkazu včetně http://
    2) name=”odkaz” (sem budeme zadávat viditelnou část odkazu – aktivní klikatelný text
    – budeme mít jedno velké textarea pole, do kterého se bude náš odkaz vkládat
    – odkaz se vloží po stisknutí tlačítka Vlož

    Do headu dokumentu nebo prostě někam do html před začátek formuláře vložíme následující script:

    <br /> <script language="Javascript"> function VlozOdkaz (){ url = formular.url.value; odkaz = formular.odkaz.value; celyodkaz = "<a href=\"" + url + "\">"+ odkaz +"</a>"; textik = formular.text.value; voba = textik+celyodkaz; formular.text.value = voba; } </script><br />


    Na button vlož pak umístíme spouštění scriptu, tedy
    <br /> <input type="button" value="Vlož" onClick=VlozOdkaz()><br />
    A to je vše :o) Snad to bylo aspoň trošku srozumitelné.

    Vynulování pole v PHP

    Vynulováno pole (array) v PHP rozhodně nelze udělat tak, že dáme hodnotu proměnné=0. Například, pokud méme proměnnou $pole[$i], tak nemůžeme dát $pole=0. Musíme projet všechny úrovně pole a dát jim hodnotu 0. To provedeme následujícím cyklem

    foreach ($pole as $index => $hodnota)
    {
    print $hodnota; //tim vypíšeme původní hodnotu úrovně pole
    $pole[$index] = 0; //tím vynulujeme danou úroveň pole
    }

    Hezké formátování čísel v PHP

    Taková krásná funkce v PHP je number_format. Umí zaokrouhlit a zároveň doplnit oddělovací znaky.

    Například:
    $vystup=number_format($puvodni_cislo,0,”,”,” “);
    nám vezme číslo uložené v proměnné $puvodni_cislo a:

  • zaokrouhlí ho na 0 desetinných míst
  • použije desetinnou čárku (ta je v pevních dvojitých uvozovkávh a může místo ní být i jiný znak
  • oddělí tisíce mezerou, například 2 000 000 (mezera je v posledních dvojitých uvozovkách a také může místo ní být jiný znak.
  • Export do Excelu v PHP

    Pro exportování do excellu z PHP jsem našel dvě třídy:
    PHP Simple Excell Generator na SourceForge
    a
    PHP Write Excell třída, která byla původně napsaná v Perlu

    Tak uvidíme která bude lepši. Ta druhá, německá ma alespoň příklady a dokumentace se dá získat z Perlovského originálu. Ta ze SourceForge nemá nic.

    UPDATE
    Tak po hledání po všech čertech jsem nakonec našel nejlepší pomoc doma, na serveru www.interval.cz. Byl tam jednoduchý script, který mi funguje (narozdíl od těch předchozích). Navíc jsem si ho dovolil trošku vylepšit, protože ten Intervaláckej pouze vytvářel soubor a já ho chtěl hned otevřít.

    Tento script je treba akorát si ho dát do nějakého .php souboru a spustit. Zároveň je třeba vytvořit v adresáči kte je ten script vytvořit adresář “exporty” a nachmolodat ho na 777 nebo “a+w”.

    Zároveň do proměnné $export uložíme v HTML kódování obsah Excellu, který chceme otevřít.

    $soubor=”exporty/tabulka.xls”;
    $fp=FOpen($soubor,”w”); // Otevřeme soubor tabulka.xls, pokud existuje, bude smazán, jinak se vytvoří nový soubor
    FPutS($fp,$export); // Zapíšeme do souboru obsah
    Fclose($fp); // Zavřeme soubor
    header(“Content-Type: application/x-msexcel; name=$soubor”);
    header(“Content-Disposition: inline; filename=$soubor”);
    $fh=fopen($soubor, “rb”);
    fpassthru($fh);
    unlink($soubor);

    Good bye Windows Media Player 11

    Sklátily mně horečky, tělo potřebovalo oddech. Kombinace intenzity nočního blouznícího zážitku, zkušeností jak to odvařilo Martina a lehkého tlaku jednoho blonďatého stvoření mně přiměly k návštěvě paní doktorky. Takže jsem po třech letech zašel za doktorkou namísto do lékárny a ukázalo se to jako dobrej krok. No nic .. Večer si takhle pouštim klasiku české kinematografie – film Šetpej a najednou můj Windows Media Player 10 říká – Hondzýku .. kluku jeden .. pojďme mně zaktualizovat. Tak jsem to kouzelný tlačítko zmáčknul. Nejdřív to psalo něco o 1 MB aktualizaci .. ta ale spustila stahovací soubor, kterej si dotáhz dalších asi 25 Mega. Ještě že je dneska ten internet tak rychlej. Koukám že se stahuje Windows Media Player 11. Těším se na nové funkce, grafické vychytávky a to, že se to bude pomaleji spouštět, ale nedočkal jsem se. Microosft nelenil a protože byla pravděpodobně aktualizace W XP, která ověřovala pravost systému Windows málo používaná, dali ji kluci i do WMP 11. Ano, mám legální Windows, ale tohle mně štve. Takže si 11tku just nevychutnám…

    Takže kluci – papa, odcházím zpět k mému nejoblíbenějšímu VPlayeru. Na odkazu se dá stáhnout verze s českým jazykem a skiny.

    Datumy v PHP

    Několik funkcí pro práci s datumy v PHP:

    Pokud máme proměnnou $retezec ve formátu DD.MM.YYYY, dostaneme z ní jednotlivé položky datumu následujícím způsobem:
    $den=substr($retezec,0,2);
    $mesic=substr($retezec,3,2);
    $rok=substr($retezec,6,4);

    Když pak chceme položky spojit do php timestampu, použijeme
    $timestamp=mktime(0,0,0,$mesic,$den,$rok);

    První tři nuly označují hodiny, minuty, vteriny, takže pokud chceme uložit poslední vteřinu daného dne, použijeme
    $timestamp=mktime(23,59,59,$mesic,$den,$rok);

    Když pak z timestampu chceme dostat jednotlivé položky zpátky, dostaneme je následujícím způsobem (promenna $vyber_start_timestamp je datum v timestamp formatu:
    $datum=strftime(“%D, %T”,$vyber_start_timestamp); (datum ve formátu MM/DD/YYYY HH:MM:SS)
    $datum2=date(“d M,Y”,$timestamp); (datum ve formátu DD Mesic zkratka slovne, YYYY)
    $rok=strftime(“%Y”,$vyber_start_timestamp);
    $mesic=strftime(“%m”,$vyber_start_timestamp);
    $kolikatyho=date(“d”,$vyber_start_timestamp);
    $tyden=strftime(“%W”,$vyber_start_timestamp);

    Ostatní formátovací znaky funkce date() jsou:
    y … rok jako dvojčíslí (00)
    Y … rok jako čtyřčíslí (2000)
    L … 0 (nepřestupný rok) nebo 1 (přestupný rok)
    z … číslo dne v roce (001-365)
    m … číslo měsíce (01-12)
    n … číslo měsíce (bez případné úvodní nuly, 1-12)
    M … anglická zkratka názvu měsíce (Jul)
    F … anglický název měsíce (July)
    d … číslo dne v měsíci (01-31)
    j … číslo dne v měsíci (bez případné úvodní nuly, 1-31)
    t … počet dní v daném měsíci (28-31)
    S … anglická koncovka čísla dne v měsíci (st, nd, rd, th)
    D … anglická zkratka názvu dne v týdnu (Mon)
    l … anglický název dne v týdnu (Monday)
    w … číslo dne v týdnu (0-6 nebo 1-7 v závislosti na verzi PHP – neděle má číslo 0 nebo 7)
    h … hodiny (01-12)
    g … hodiny (bez případné úvodní nuly, 1-12)
    H … hodiny (01-23)
    G … hodiny (bez případné úvodní nuly, 1-23)
    a … am/pm (dopoledne/odpoledne)
    A … AM/PM (dopoledne/odpoledne)
    i … minuty (00-59)
    s … sekundy (00-59)
    U … počet sekund od 1. ledna 1970
    W … číslo týdne podle ISO-8601

    K610i

    Náš nový firemní telefon za 1 Kč se jmenuje Sony Ericsson K610i a má ho na svědomí operátor O2. SE jako značku mám moc rád, SE byl i můj první telefon. Pak jsem přešel na Nokie, na kterých jsem byl asi 10 let, takze přechod na SE je dosti drsny, porad nekomu nechtene volam, porad se nekam připojuju.

    Proč to píšu je ale pár odkazů na stránky, kde je možné Schémata stáhnout.

  • http://gallery.mobile9.com/c/sony-ericsson-k610k610i-themes/1/
  • http://www.myk610.lasyk.net/
    Ta poslední stránka obsahuje i hezkou řádku software pro K610i zde.

    Každé téma na tomto webu obsahuje tlačítko umožňující stáhnout Schéma do PC a po stažení schématu (v angličtině Themes) do PC a připojení telefonu přes kabel nebo Bluetooth je možné přetáhnout schéma do adresáře Schémata v paměti telefonu a Schéma se objeví v nabídce telefonu.

  • HTML – výpis kódu

    Pokud chceme vypisovat HTML kód do textu na nějaké webuové stránce, potýkáme se s malým problémem spočivajícím v tom, že když do článku napíšeme nějaký kód, prohlížeč si ten kód vezme jako že je to součást HTML kódy stránky a ne vypíše nám tagy.

    Pro zobrazení kódu slouží tag

    <xmp>, který použijeme před a za kódem (je párový, takže na konci musí mít zpětné lomítko ‘/’.

    Pak už to funguje a není problém vypsat třeba takovýto kód:

    <br /> <a href="http://blog.79.cz">Hondzýk blog</a><br />

    DHTMLgoodies

    Mezi nejlepší, nejkompatibilnější, bez reklam a zadarmo zdroje hezkých kódů pro webové stránky a aplikace patří jednoznačně dhtmlgoodies.com. Na jejich stránkách se dá najít pousta užitečných pomůcek. Nyní kluci z dhtml vše spojili do jedné velké aplikace DHTML Suite. No .. jdu si to stáhnout a uvidíme zda to k něčemu bude. Obecně jsem spíše nepřítel koncentrace spousty užitečných věcí dohromady s těma méně užitečnýma :-(. Bohužel, když jsem si chtěl stáhnout jenom novou verzi scriptu pro kalendář, je už jenom pro DHTML Suite.