• Home
  • střešní nosiče
Blue Orange Green Pink Purple

Archive for the ‘webdesign’ Category

You can use the search form below to go through the content and find a specific post or page:

Led 12

Zálohování MySQL dat přes PHP – update

UPDATE: Ve skriptu bylo opraveno escapování vkládaných dat podle Davida Grundla.

Pokud má člověk napsaný velký systém a klient z něj chce pravidelně zálohovat data, nezbude nic jiného než napsat zálohovací skript. Zde se nám ale nabízí různá řešení (např. exec, vypisovat jednu tabulku po druhé ručně), dnes si popíšeme jedno pomocí MySQL dotazů.

Protože tabulek máme v databázi opravdu požehnaně a ke každé psát dotaz by byla sebevražda, napíšeme si jednoduché funkce, které nám vrátí všechna data ze všech tabulek. A to pěkně v MySQL insertech.

Základem jsou dotazy

Vše je jen a jen o dotazech. Stačí chvíli hledat v MySQL nápovědě či umět anglicky a ovládat logické myšlení.

SHOW TABLES
SHOW COLUMNS FROM table

První z těchto dotazů nám vrátí seznam všech tabulek v aktuálně používané databázi, ten druhý vrací informace o sloupcích určité tabulky aktuálně používané databáze.

Zdrojový kód

<?php
/*
 *  @author: Jakub Brabec, http://www.jakubbrabec.cz
 */

function zalohujDatabazi($database)
{
    $query = mysql_query("SHOW TABLES");
    while($v = mysql_fetch_assoc($query))
    {
        $text .= "--------------------\nData tabulky ".$v['Tables_in_'.$database]."\n--------------------\n";
        $text .= tabulkaDatabaze($v['Tables_in_'.$database]);
        $text .= "--------------------\n\n\n";
    }
    return $text;
}

function tabulkaDatabaze($table)
{
    $i = 0;
    $query = mysql_query("SHOW COLUMNS FROM ".$table);
    while($v = mysql_fetch_assoc($query))
    {
        $sloupce[$i] = $v['Field'];
        if(strpos($v['Type'], "int") === false AND strpos($v['Type'], "decimal") === false)
            $cislo[$i] = false;
        else
            $cislo[$i] = true;
        $i++;
    }

    $query = mysql_query("SELECT * FROM ".$table);
    while($v = mysql_fetch_assoc($query))
    {
        $text .= "INSERT INTO ".$table." VALUES(";
        for($i = 0; $i < count($sloupce); $i++)
        {
            if($cislo[$i] == true)
                $text .= $v[$sloupce[$i]];
            else
                $text .= "'".mysql_escape_string($v[$sloupce[$i]])."'";
            if($i < count($sloupce) - 1)
                $text .= ", ";
        }
        $text .= ");\n";
    }
    return $text;
}

?>

Jak vidíte,  máme 2 funkce. První s názvem zalohujDatabazi nám projede všechny tabulky v aktivní databázi a vrací výsledek v textové formě. Druhá si nejprve přečte strukturu tabulky, tím zjistí názvy sloupců a jejich datové typy, a následně vytvoří samotný dotaz, který vypadá následovně.

INSERT INTO vyplaty VALUES(8, '2008-11-03');

Popis funkčnosti

Předat funkci zalohujDatabazi název databáze do proměnné $database je nutné, protože dotaz SHOW TABLES vrací data v proměnné Tables_in_nazevdatabaze. Průběh skriptu při MySQL dotazu doufám popisovat nemusím :-)

Funkci tabulkaDatabaze se předá název aktuální tabulky,  ze které si pomocí dotazu SHOW COLUMNS FROM tabulka vytáhneme sloupce s jejich typy a následně určíme zda-li se jedná o číslo nebo ne – pomocí funkce strpos. V uvedeném příkladu máme  2 číselné typy – int (zároveň i tinyint) a decimal. Ke každému sloupci tabulky si tak určíme její typ a využijeme ho později při tvorbě insert dotazu. Pokračujeme výběrem všech dat z tabulky, zde se již uplatňuje typ sloupce. Pokud nejde o číslo, uloží se data do jednoduchých uvozovek a tím zajistíme správné vložení do tabulek.

Celá procedura se tedy logicky volá

$zaloha = zalohujDatabazi("blog");

Doufám že vám funkce přijde užitečná a popis dostatečně srozumitelný.

Srp 16

Jak upravit Swazz javascript calendar

Swazz javascript calendar je jeden z nejlepších javascriptových kalendářů, na které jsem měl tu možnost narazit. Je miniaturní (cca. 6kB), rychlý, přehledný, lehce upravitelný, počítá s přestupními roky. Nejde o žádné ajaxové řešení, vše je naprosto jednoduché.

Pro použití v našich podmínkách se ale musí upravit pár věcí – např. datum. Formát, v němž javascript formát vrací je dd/mm/yy. Řešení je jednoduché, stačí nahradit celý řádek začínající na

calvalarr[d]

za

calvalarr[d]=“+(d-cd)+’.'+(cm-(-1))+’.'+cy;

. Výsledkem je datum klasického formátu – dd.mm.yy.

Dále se hodí české názvy měsíců – celý řádek začínající

var mn

nahradíme textem

var mn=new Array(‘leden’,'únor’,'březen’,'duben’,'květen’,'červen’,'červenec’,'srpen’,'září’,'říjen’,'listopad’,'prosinec’);

.

To jsou základní úpravy, které aplikujeme. Celý kalendář ale umožňuje naklikávat data pouze ode dneška vpřed, to je pro některé případy nepoužitelné. Proto upravíme dva řádky na proklikávání zpět.

Podmínku

if ((ccy>sccy)|((ccy==sccy)&&(ccm>=sccm)))

nahradíme za

if ((ccy<sccy)|((ccy==sccy)&&(ccm<=sccm)))

– tím si zajistíme, že tlačítky pro výběr měsíců půjde listovat pouze zpět. Nahrazením

dip=((d-cd < sd)&&(cm==sccm)&&(cy==sccy));

za

dip=((d-cd > sd)&&(cm==sccm)&&(cy==sccy));

zase pojistíme výběr dnů.

Kompletní javascriptový soubor kalendáře si můžete stáhnout zde.

Brabčákův blog

  • Jakub Brabec

    Narodil se a již tenkrát mu byla prorokována skvělá budoucnost. Jeho osobnost je dostatečně silná na absolutní destrukci všech nástrah.

    Rád žere párky, pizzu, rád řídí, rád myslí, rád píše, rád spí a nerad pracuje. A taky rád řídí auto.

    Největší úspěch měl v první třídě (to víš, matika), pak ale dostal první počítač a už to s ním šlo z kopce. Vyhrával jednu matematickou soutěž za druhou, na těláku mu daly na prdel ženský a ve fyzice byl lepší snad i křeček.

    Dnes, v jeho 22 letech, je již beznadějně ztracen v online bludišti a už není cesty zpět. Proto má jakousi zvrhlou povinnost vylejvat své poznámky do tohohle online bloku. Poznámkáče.

  • Rubriky
    • Finance (2)
    • Flash a Actionscript (2)
    • Internet (10)
    • Moje projekty (8)
    • Sakumprdum (8)
    • Sociální pokusy (2)
    • Vztahy, volný čas (17)
    • webdesign (2)
  • Twitter
  • Mé projekty
    • EGO
    • Thule
    • Webdresink studio
  • Archives
    • Červenec 2010
    • Červen 2010
    • Červen 2009
    • Leden 2009
    • Prosinec 2008
    • Listopad 2008
    • Září 2008
    • Srpen 2008
    • Červenec 2008
    • Červen 2008
  • Search






  • Home

© Copyright Brabčákův blog. All rights reserved.
Designed by FTL WordPress Themes brought to you by DT Web Template

Back to Top