2014 m. kovo 16 d., sekmadienis

HTML simbolių kodai

Kad nupiešti paprastą rodyklytę, ne visada būtina naudoti paveikslėlį. Kiek daug įvairių simbolių - rodyklyčių, ikonėlių galime sugeneruoti naudojant html kodus: http://character-code.com/

2014 m. kovo 14 d., penktadienis

PHP - pranešimo išvedimas į naršyklę dalimis (flush buffer)

Paprastai išvesties pranešimas išvedamas į naršyklę kai baigiamas vykdyti visas PHP skriptas. Bet jei kuriate skriptą kuris vykdomas gana ilgai ir reikia į naršyklę išvesti pranešimus dalimis, pvz, vykdant ciklą, tai reikia:
a) - išjungti kodo bufferį:
ob_implicit_flush(true);
ob_end_flush();
b) ARBA po kiekvieno echo pranešimo paleisti buferio išvalymo funkcijas:
flush();
ob_flush();

2014 m. kovo 13 d., ketvirtadienis

MySQL - pasikartojančių duplicated eilučių trynimas

Jei DB lentelė neturi unikalumą nustatančių indeksų, ir norite pašalinti pasikartojančias eilutes, paliekant vieną, naudokite tokią užklausą (veikia jei eilutės turi unikalų ID):
DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name
Paskutinė sąlyga aprašo ką tikrinti dėl unikalumo, tad galima ją papildyti daugiau faktorių (stulpelių).

ALTER IGNORE TABLE your_table ADD UNIQUE (field1,field2,field3);
The IGNORE above makes sure that only the first found row is kept, the rest discarded.

2014 m. kovo 2 d., sekmadienis

MySQL atsarginių kopijų darymas ir atstatymas

Visų MySQL DB atsarbinių kopijų kūrimas į atskirus failus pagal DB pavadinimą:
mysql -uroot -e 'show databases' | while read dbname; do mysqldump -uroot --complete-insert --some-other-options "$dbname" > "$dbname".sql; done
Vienos lentelės atstatymas iš visos duombazės SQL DUMP:
$ sed -n -e '/CREATE TABLE.*mytable/,/CREATE TABLE/p' mysql.dump > mytable.dump
Mysql Backup darymas suspaudžiant į gzip, failo pavadinime panaudojant backup darymo datą:
mysqldump -u usrname -p password database | gzip >   /backupfolder/DailyDB_`date '+%Y-%m-%d_%T'`.sql.gz


2014 m. vasario 26 d., trečiadienis

2014 m. vasario 21 d., penktadienis

Daugiakalbio puslapio DB struktūra

Jei kuriate daugiakalbį puslapį, projektuoti duombazę galite tokiu pavyzdžiu:
PRODUCTS (
    id   
    price
    created_at
)

LANGUAGES (
    id   
    title
)

TRANSLATIONS (
    id           (// id of translation, UNIQUE)
    language_id  (// id of desired language)
    table_name   (// any table, in this case PRODUCTS)
    item_id      (// id of item in PRODUCTS)
    field_name   (// fields to be translated)
    translation  (// translation text goes here)
)
Nekomentuosiu, nes schema manau pati kalba už save. Lentelių, žinoma, gali būti ir daugiau, be "products", pvz. "pages". Vėliau pateiksiu užklausų pavyzdžius, kaip traukti informaciją.

2014 m. vasario 13 d., ketvirtadienis

PHP - kaip eksportuoti duomenų masyvą į Excel palaikomą CSV

Tam, kad Excel tinkamai rodytų Lietuviškas raides eksportuotame CSV faile, reikia jį eksportuoti laikantis tokio pavyzdžio:
header("Content-Type: text/csv; charset=utf-8");
//failo pavadinimas export.csv
header("Content-Disposition: attachment; filename=export.csv"); 
header("Pragma: no-cache");
header("Expires: 0");

echo "\xEF\xBB\xBF"; //reikalinga, kad excel tinkamai suprastų UTF

$outstream = fopen("php://output", "w");

//$data - gali būti tiesiai iš MySQL gautas eilučių masyvas UTF-8 koduotėje
if (is_array($data)) foreach ($data as $d) 
{
   //excel naudojamas delimiteris yra kabliataškis
   fputcsv($outstream, $d , ";"); 
}

fclose($outstream);
exit;