[ nikol@c @ 16.01.2008. 10:05 ] @
Pozdrav, nisam siguran da li sam temu trebao staviti ovdje ili u mysql forum, pa se izvinjavam na mogucoj gresci.

Napravio sam pretragu na sajtu, nesto slicno kao na sajtu: http://www.punmiris.com/parfemi/

Sve radi ok ali se javlja jedan mali problem. Kada jednu od stavki iz pretrage ostavim praznu, izvjestaj mi javlja da nema rezultata. Logicno je da to izbaci jer ni jedna stavka nije prazna, pa pretpostavljam da je potreban neki if uslov za prazno polje. Ili ima neki jednostavniji nacin.

Pozdrav, Nikola
[ centaur @ 16.01.2008. 10:24 ] @
Jedan od načina je da u zavisnosti od toga šta je popunjeno praviš query.
Pomoglo bi kada bi postavio source tog dela ovde pa onda može i neka ko nkretnija pomoć.
[ nikol@c @ 16.01.2008. 10:32 ] @
Evo upit:

Code:

$sql="select date_format(datum,'%d. %m. %Y.') as datum, clanak, komitent, username, sredstvo, status, cijena, clanak_id from nalozi WHERE komitent='$komitent' and username='$username' and status='$status' order by clanak_id";
$result=MySQL_query($sql);


[ nikol@c @ 16.01.2008. 13:33 ] @
Sredio sam ovo na slijedeci nacin.

kreirao sam if uslove za svaku stavku:

Code:


// SVA POLJA POPUNJENA
if ($komitent!='' && $username!='' && $status!='')
    {
    $sql="select date_format(datum,'%d. %m. %Y.') as datum, clanak, komitent, username, sredstvo, status, cijena, clanak_id from nalozi WHERE komitent='$komitent' and username='$username' and status='$status' order by clanak_id";
$result=MySQL_query($sql);
    }

// SVA POLJA PRAZNA
if ($komitent=='' && $username=='' && $status=='')
    {
    $sql="select date_format(datum,'%d. %m. %Y.') as datum, clanak, komitent, username, sredstvo, status, cijena, clanak_id from nalozi order by clanak_id";
$result=MySQL_query($sql);
    }
... itd


Sve je uradjeno na principu da li je polje u pretrazi prazno ili nije.
Nadam se da ce nekome biti od koristi, pa sam iz tog razloga ovo i napisao.

Ipak interesuje me postoji li neko elegantnije rjesenje???

Pozdrav, Nikola

[ miljakovic @ 16.01.2008. 22:44 ] @
Ja sam ti jos malo zakomplikovao ali mislim da su ovde sve mogucnosti uzete u obzir.

Code:
ok=0;//pokazivac da li je nesto vec dodato upitu za pretragu =0 ako nije =1 ako jeste


$sql="select date_format(datum,'%d. %m. %Y.') as datum, clanak, komitent, username, sredstvo, status, cijena, clanak_id from nalozi";

if($komitent!='') {

$sql=$sql + "WHERE komitent='$komitent'"; //dodaje sql upitu jos jedan deo, moze i preko naredbi za stringove
ok++;

}


if($username!='')
{

if (ok==1) $sql=$sql + " and username='$username'";
else 
{
$sql=$sql + "WHERE username='$username'";
ok++;
}

if($komitent!='') 
{

if (ok==1) $sql=$sql + " and komitent='$komitent'";
else 
{
$sql=$sql + "WHERE komitent='$komitent'";

}

$sql=$sql + " order by clanak_id";

Probaj, mozda radi.


[Ovu poruku je menjao Nemanja Avramović dana 17.01.2008. u 10:19 GMT+1]
[ Jbyn4e @ 16.01.2008. 23:03 ] @
Code:

$sql="select date_format(datum,'%d. %m. %Y.') as datum, clanak, komitent, username, sredstvo, status, cijena, clanak_id from nalozi where 1=1";
if($komitent!='') $sql.=" AND komitent='$komitent'";
if($username!='') $sql.=" AND username='$username'";
if($status!='') $sql.="and status='$status'";
$sql.= " order by clanak_id";
...

Naravno, ovo sad radi za bilo koji od uslova upisan. Ako si hteo samo za sva polja, onda sve u jednom if-u:
Code:

$sql="select date_format(datum,'%d. %m. %Y.') as datum, clanak, komitent, username, sredstvo, status, cijena, clanak_id from nalozi";
if ($komitent!='' && $username!='' && $status!='') $sql.=" WHERE komitent='$komitent' and username='$username' and status='$status'";
$sql.= " order by clanak_id";
...

Cekamo jos drugih predloga... ;)

Edit: ispravio sam jedan zaboravljeni " i u drugom primeru umesto AND ide WHERE (jbg, ko radi, taj i grOsi :) )

[Ovu poruku je menjao Jbyn4e dana 17.01.2008. u 08:49 GMT+1]
[ centaur @ 16.01.2008. 23:24 ] @
Najprirodnije je kao što je napisao @Jbyn4e u prvom primeru.
Ja bih jedino koristion funkciju empty() umesto poredjenja vrednosti promenjive sa praznim stringom.

[Ovu poruku je menjao centaur dana 17.01.2008. u 00:34 GMT+1]