[ define @ 13.07.2005. 09:48 ] @
Imam dosta nekih podataka u bazi.
Hocu da vrsim pretragu po kategorijama, znaci na strani za pretragu se nalaze <select> tagovi i kada izaberem neku opciju ono uporedjuje sa bazom i nalazi podatak koji je potreban.

Problem je u tome sto ne znam kako da uradim da kada izabere iz liste prvu opciju "nije bitno" da ispise sve rezultate.
znaci $zahtev uzima neku vrednost iz "select" i uporedjuje u bazi sa uslovom.

select * from tabela where uslov='$zahtev';

napominjem da ima dosta uslova pa mi ne odgovara da radim nekoliko razlicitih $query-ja, ili je to jedini nacin?
[ Dejan Topalovic @ 13.07.2005. 10:00 ] @
@define: Pa, kada ne zelis da ogranicis upit, onda izostavis WHERE opciju, a kada zelis da ogranicis upit ili da dodas neku ogranicavajucu vrijednost, onda koristis WHERE opciju sa AND ili OR.
Mozda ce ti biti jos zanimljiva opcija LIKE, pogotovo ako zelis da koristis wildcards...
[ define @ 13.07.2005. 10:16 ] @
Izgleda da me niste bas razumeli, sada cemo ovako...

Sajt se odnosi na auto oglase. Na stranici za pretragu imam nekoliko <select tagova>, znaci jedan za proizvodjaca, drugi za tip itd....
Sve to funkcionise dobro kada izabiram neke odredjene uslove, znaci izaberem mercedes i $proizvodjac uzima vrednost mercedesa i salje je u stranicu za upit.
u stranici za upit pise
$query="select * from auto where proizvodjac='$proizvodjac' and tip='$tip' and ... and .. and..."

stvar je u tome sto ne znam kako da odradim sledece:
ako covek koji vrsi pretragu kaze ne interesuje me proizvodjac ili ne interesuje me tip ili bilo sta, onda upit treba da izvrsi selekciju svih automobila koji zadovoljavaju upit.

Konkretno ako kaze ne interesuje me proizvodjac

<option selected value="-2">nije vazno

tada $proizvodjac treba da uzme neku vrednot za tu opciju "nije vazno" u ovom slucaju -2
$query="select * from auto where proizvodjac='-2' and tip='$tip' and ... and .. and..."

znaci meni treba nacin da se ovo proizvodjac='-2' interpretira kao SVI PROIZVODJACI
[ bzero @ 13.07.2005. 10:48 ] @
Mozes da u zavisnosti od toga sta je izabrano napravis query. Npr, napravis ovakvu funkciju:

Code:

function SelectAuto($proizvodjac, $tip, $boja) {
    $query = "SELECT * FROM auto";

    if ($proizvodjac)
        $where[] = "proizvodjac='$proizvodjac'";
    if ($tip)
        $where[] = "tip='$tip'";
    if ($boja)
        $where[] = "boja='$boja'";

    if ($where) {
        $query .= ' WHERE ' . join(' AND ', $where);
    }

    print $query;
}


pa onda mozes da je koristis:

SelectAuto('BMW', '316', '');
SelectAuto('', '', 'zeleni');
itd...
[ define @ 13.07.2005. 10:58 ] @
koliko sam razumeo ovo $where[] je niz

a join ih spaja sa and izmedju njih
[ toroman @ 13.07.2005. 23:48 ] @
Ako te kriterijum $proizvodjac ne interesuje, onda uopste nemoj da ga stavljash u WHERE izraz.

Dakle, query bi izledao ovako nekako:
$query="select * from auto where tip='$tip' and ... and .. and..."

Znaci, bez $proizvodjac varijable ...