[ meduljak @ 24.12.2006. 13:47 ] @
Pozdrav,
novi sam u radu sa bazama, pa postavljam pocetnicka pitanja.

Napravio sam sledeci query i on radi
Code:
 
$query = 'SELECT vrsta, liga, pocetak, sifra, datum 
FROM tabela
WHERE pocetak LIKE "pe%"
ORDER BY pocetak';


Evidentno je da ovdje filtrira podatke iz "tabela" tako sto u koloni "pocetak" trazi rijec koja pocinje sa "pe".
Ono sto mi treba je da napravim da na web stranici postavim tekstualne linkove, recimo, kad klinem na rijec "pe" u nekom meniju, da se izvrsi gornji query, kad klinkem na drugu stavku menija, npr "cet" da se filtriranje obavi po tom kriteriju.

Konkretno, koristio bih dane u sedmici (ponedjeljak, utorak...) da se filtriraju podaci, a koristio bih jedan te isti upit koji bi se nekako izvrsavao u zavisnosti koja mu je promjenjiva proslijedjena.
Znaci kako formulisati takav upit i kako proslijediti promjenjivu? Kombinovao bih PHP i MySql.
[ Miroslav Ćurčić @ 24.12.2006. 16:07 ] @
Ovako:
Code:

$kriterijum= (isset($_GET['dan'])) ? addslashes($_GET['dan']) : 'po';  // pokupi kriterijum, default je 'po'

$query = 'SELECT vrsta, liga, pocetak, sifra, datum 
FROM tabela
WHERE pocetak LIKE "'.$kriterijum.'%"
ORDER BY pocetak';


a linkovi treba da glase na primer:
<a href="index.php?dan=cet">cet</a>
[ Ivan.Markovic @ 24.12.2006. 16:17 ] @
Umesto addslashes koristi mysql_real_escape_string u upitu.
Btw, @mVeliki zasto zbunjujes pocetnika sa Ternary operatorima ... ;)
[ mulaz @ 24.12.2006. 16:37 ] @
malkice offtopi pitanje, ... dali ce addslashes da sredi i sve eventualne ';' i sl. karatere?

nisam nikad pokusavao, ali ne znam kako je da nebi neko ukucao u input nesto puput "; dump nesto" i unistio nesto?
[ Miroslav Ćurčić @ 24.12.2006. 16:39 ] @
Momak reče da je početnik u bazama, ne u PHP.

Kad smo već kod mysql_real_escape_string, koja je njegova inverzna funkcija, pandan stripslashes?
Nisam je našao ni u helpu ni na netu, pa sam je sam pisao.
[ Miroslav Ćurčić @ 24.12.2006. 16:43 ] @
@mulaz
neće dirati ";" znak, a nema ni potrebe jer dok god se on pojavljuje unutar stringa bezopasan je, smatraće se običnim tekstom.
Sleševi su tu da obezbede da u instrukciju ne uleti nešto što će završtiti string pre vremena, tj da dopusti napadaču da završi tekuću i započne sledeću instrukciju.
Druga je stvar ako radiš s numeričkim vrednostima ( recimo WHERE Id=45 ), pošto tu nema stringa, taj podatak ne obradjuješ s addslashes već sa intval ili (integer) konverzijom pre upita.

[Ovu poruku je menjao mVeliki dana 24.12.2006. u 17:58 GMT+1]
[ meduljak @ 24.12.2006. 17:02 ] @
Hvala mVeliki ali i ostali,
funkcionise.

btw. pocetnik sam ja i u php, nego mi se ne hvali time :-)
[ Nemanja Avramović @ 24.12.2006. 17:43 ] @
@mVeliki: Meni flylord reče da ti i ne treba inverzna funkcija funkciji mysql_real_escape_string već da nekom magijom to sve lepo radi Nisam još to probao, nemam vremena, ali čim nađem vremena probaću. Inače, ima karaktera koji mogu biti opasni a addslashes ih ne escape-uje dok ih mysql_real_escape_string escape-uje.