Oct 10 2011

JavaScript array splice()

splice() omogućuje dodavanje i micanje jednog ili više elemenata iz javascript arraya s neke određene pozicije.

sintaksa: array.splice(pozicija,koliko maknuti,element 1 za dodati ,…,element x za dodati);

npr:

var slova= ["a", "b", "c", "d"];

—————————————————————–

da bi maknuli “c” stavit ćemo:


var slova= ["a", "b", "c", "d"];
slova.splice(2,1);

… gdje je 2= redni broj elementa (index… počinje od nula…) kojeg želimo maknuti, a 1= broj elemenata koje želimo maknuti, u ovom slučaju samo jedan…

slova sad izgledaju: ["a", "b", "d"]

—————————————————————–

da bi dodali “ć” i “č” stavit ćemo:


var slova= ["a", "b", "c", "d"];
slova.splice(3,0,"ć","č");

… 3 je pozicija na koju želimo staviti ć i č, 0 je broj elemenata koje pri tome mičemo, dakle niti jedan…

slova sad izgledaju: ["a", "b","c","ć", "č", "d"]

—————————————————————–

da bi “b” zamijenili sa “x” stavit ćemo:


var slova= ["a", "b", "c", "d"];
slova.splice(1,1,"x");

… dakle, na poziciji jedan makni jednog i stavi x…

slova sad izgledaju: ["a", "x","c", "d"]


Oct 6 2011

jquery i checkbox status

Provjera je li checkbox čekiran ili ne:

$('input[name=x]').is(':checked');
$('input[name=y]').attr('checked');

rezultat je true/false...

Promjena statusa checkboxa:

$('input[name=x]').attr('checked', true); //čekiramo ga
$('input[name=x]').attr('checked', false); //ne čekiramo ga

ili
$('input[name=x]').prop('checked', true);
$('input[name=x]').prop('checked', false);

ima li selektiranih? var broj_selektiranih = $(".mojCheckbox:checked").length;


Jun 30 2011

MySQL – ORDER BY, hrvatski znakovi čćžđš i pogrešna kodna tablica

Problem:

Nekim čudom nam se zalomilo (čitaj nismo se naspavali, nismo popili kavu… ma koga ja lažem, bili smo mladi i neiskusni) da kreiramo website u neki čudnim kombinacijama kodne tablice baze podataka i stranica na kojima se nalaze formulari za upis u bazu… neke perverzne kombinacije windows 1250 i utf-8 ili nešto slično… I dobili smo nešto što kod ispisa na web stranici izgleda kao čćžđšČĆŽĐŠ, ali kad otvorimo bazu vidimo nekakve ž,  Š ili slične điđabaje… I to nam se ne čini neki veliki problem jer se stvar uredno ispisuje kao hrvatski znak. No, problem nastaje kada popis toga nečega (uzmimo da je riječ o prezimenima) pokušamo poredati po abecedi… I taj nesretni Č i Ć nam nikako ne sjedne iza C, a prije D ma što napravili…

Prije nego šro se počnemo igrati nekim globalnim promjenama kolacije, kodne tablice ili sl. dobro je znati da postoji jedan jednostavan sistem kako na brzinu stvar ispisati po abecedi iako smo svjesni da nam rješenje i nije baš najelegantnije.

Rješenje:

SELECT * FROM Persons ORDER BY replace(Prezime,'Č','Cx') ASC

Ovdje smo kod ORDER BY naredbe Č zamijenili sa Cx…
budući da po abecedi Č dolazi iza C ovim načinom početno slovo svih prezimena koja počinju sa Č zamijenjujemo sa C ali mu dodajemo i x kako bi došlo na kraj popisa svih prezimena koja počinju sa C.
…(budući da x po abecedi dolazi iza ž)…
zvuči kompliciranije nego što je… ma zapravo ja neznam objasnit…

Kad bi sve hrvatske znakove željeli odjednom zamijenit na ovakav način to bi izgledalo ovako:

SELECT * FROM Persons ORDER BY
replace(replace(replace(replace(
replace(replace(replace(replace(
replace(replace(Prezime,'č','Cxx')
,'š','Sx'),';ž','Zx'),
'đ','Dx'),'ć','Cx'),'Č'
,'Cxx'),'Š','Sx'),'Ž','Zx')
,'Đ','Dx'),'Ć','Cx')  ASC

Jun 30 2011

MySQL – zamjena praznog stringa s null

Problem:

Vezano uz http://systasis.biz/blog/?p=37 i napomenu o funkciji COALESCE postoji mali problem. Naime, ako u bazi imamo prazan string (”) umjesto null stvar neće raditi jer, kao što rekosmo:

COALESCE traži prvu pojavu vrijednosti koja nije null

A prazan string nije null. Dakle, prvo bi trebalo zamijenit prazan string sa null da bi COALESCE radio kako valja.

Rješenje:

To možemo na sljedeći način:

IF(LENGTH(Prezime)=0,NULL,Prezime)

Dakle, ako je dužina stringa Prezime 0 (nula) tada to znači da je u pitanju prazan string i tada se vrijednost polja Prezime zamijenjuje sa NULL

U toj situaciji COALESCE bi izgledao ovako:

SELECT COALESCE(IF(LENGTH(Prezime)=0,NULL,Prezime),Ime)  FROM Persons

Dakle, selektiraj Prezime iz tablice Persons, a ako je Prezime NULL onda selektiraj Ime umjesto prezimena


Jun 14 2011

Random selekcija i SQL

Problem:

Selektirati podatke iz tablice i poredati ih nasumično.

Rješenje:

MySQL

ako želimo samo jedan podatak ali svaki put neki drugi
SELECT polje FROM tablica ORDER BY RAND() LIMIT 1

ako želimo sve podatke prema nasumičnom poretku

SELECT polje FROM tablica ORDER BY RAND()

MSSQL

ako želimo sve podatke prema nasumičnom poretku
SELECT TOP (100) PERCENT polje FROM tablica ORDER BY NEWID()

ako želimo samo jedan podatak ali svaki put neki drugi

SELECT TOP 1 polje FROM tablica ORDER BY NEWID()

 

 


Jun 9 2011

Tabindex – kontrola tab poretka form elemenata unutar HTML-a

Problem:

Klikom na tipku TAB fokus prelazi na polja formulara onim redom kojim se polja pojavljuju unutar HTML-a. Međutim, ponekad želimo da taj poredak bude drugačiji i da se fokus stavlja na polja onim redom kojim mi to želimo.

Rješenje:

Upotreba tabindex atributa na elementu.
Primjer:

<input type="text" name="polje1" tabindex=1 />
<input type="text" name="polje2" tabindex=2 />
<input type="text" name="polje3" tabindex=0 />
<input type="text" name="polje4" tabindex=3 />

Dodavanjem atributa tabindex svakom elementu fokus se stavlja na elemente od najmanjeg tabindexa prema najvećem. Polja označena tabindexom -1 (tabindex=”-1″) bit će preskočena. Polja označena istim tabindexom bit će fokusirana onim redom kojim se pojavljuju unutar HTML-a.

Skrivena polja ne reagiraju na TAB pa njih niti ne treba označavati tabindexom. Isto vrijedi i za polja koja imaju atribut disabled.

Osim na input polja tabindex može se primijeniti i na <a>, <textarea>, <select> i <button> elemente.

Osim navedenog tabindexom je moguće obuhvatiti i druge elemente (npr. h1 ili option unutar liste) na način da im se dodijeli tabindex nula (tabindex=”0″).

Detaljnije o tabindex atributu: http://reference.sitepoint.com/html/a/tabindex


May 17 2011

MySql: STR_TO_DATE – konverzija datuma iz stringa u date

Problem:

U bazi imamo datum kao string u formatu d.m.YYYY i treba ga pretvoriti u MySql formatirani datum
npr. datum 15.4.2010 treba pretvoriti u 2010-04-15

Rješenje:

SELECT STR_TO_DATE('15.4.2010','%d.%m.%Y') as datum ...

rezultat: 2010-04-15


May 9 2011

MySql: LENGTH

Problem:

Odabrati iz tablice samo rezultate gdje je duljina rezultata veća od 10 karaktera

Rješenje:

 SELECT myField FROM myTable WHERE LENGTH(myField)>10

Apr 29 2011

MySql: CAST

Problem:

Coldfusion 9 ponekad javlja grešku ako mysql datum  prilikom prikazivanja ne pretvorimo u string. Greška obično glasi:

ByteArray objects cannot be converted to strings

Rješenje:

Tome možemo dostočiti na dva načina:

1. Tako da dobiveni rezultat pretvorimo u string pomoći toString() naredbe

<cfoutput>#toString(RS.myDate)#</cfoutput>

2. Tako da već prilikom SQL selecta pretvorimo datum u string

SELECT CAST(DATE_FORMAT(datum,"%d.%m.%Y") as CHAR)  AS myDate FROM ...

Na isti način možemo pretvoriti string u broj, string u datum itd:

MySql CAST functions and operators


Apr 29 2011

MySql: CONCAT

Problem:

Trebamo spojiti dva polja prilikom pretrage. Npr. ime i prezime

Rješenje:

SELECT * from tablica WHERE CONCAT(ime," ",prezime) = 'Pero Perić'

CONCAT možemo upotrijebiti i kod select-a:

SELECT CONCAT(ime," ",prezime) as korisnik  from tablica WHERE CONCAT(ime," ",prezime) = 'Pero Perić'