Šta je novo?

Dve SELECT forme i pretraga baze

pecooou

Cenjen
Učlanjen(a)
25.02.2013
Poruke
2
Poena
151
Ovako, imam dve select forme:

<form method="post" action="pretraga.php" name="podatak">
<select name="usluga">
<option value="">Izaberite tip</option>
<option value="prodaja">Prodaja</option>
<option value="najam">Najam</option>
</select>

<select name="tip" >
<option value="">Izaberite tip</option>
<option value="Garsonjera">Garsonjera</option>
<option value="Jednosoban">Jednosoban</option>
<option value="Dvosoban">Dvosoban</option>
<option value="Trosoban">Trosoban</option>
</select>
<input type="submit" name="submit" value="Pretra&#382i">

Kad pretrazujem bazu po oba kriterijuma radi sve OK, ali kad stavim jedan kriterijum a drugi ne, ne radi kako treba.
 
Podesi da svako polje ima neku default-nu vrednost kad nije izabrano.
 
A da napravis SQL upit koji ce moci da radi pretragu i po jednom kriterijumu a ne samo oba?
Bilo bi kul da kopiras SQL upit koji koristis... jer trenutno mogu samo da pretpostavim da ti upit izgleda ovako(otprilike):
Kod:
SELECT * FROM nekretnine WHERE usluga LIKE 'prodaja' AND tip LIKE 'garsonjera'

Naravno ako ne prosledis oba parametra ovom upitu, neces dobiti nikakve rezultate, odnosno dobices 0 rezultata, jer je logicno tako. Takodje, jako bitno... obe te vrednosti bi trebale da budu numericke, integer vrednosti. Da imas dodatne tabele koje bi se zvale: tabela_usluge(pk int ID, varchar 255 naziv) i tabela_tip(pk int ID, tip), to bi bila osnova relacionih baza podataka...

Ali da ti trenutno ne komplikujem dodatno zivot:

Kod:
$usluga = isset($_POST['usluga']);
$tip      = isset($_POST['tip']);

$query = "SELECT * FROM nekretnine";

if($usluga && !empty($usluga)) { // proveri da li promenljiva $usluga postoji i da li ima vrednost
  $query .= ' WHERE usluga LIKE "$usluga"';
}
if($tip && !empty($tip) { // proveri da li promenljiva tip postoji i da li ima vrednost
  if(strpos($query, 'usluga') === true) { // proveri da li promenljiva $query sadrzi string 'usluga'
    $query .= ' AND '; // ako sadrzi dodaj kljucnu rec AND
  }
  else {
    $query .= ' WHERE '; 
  }
  $query .= 'tip LIKE "$tip"';
}

... izvrsi sada svoj kod za prikaz rezultata...

Ovo sto je ubaceno za proveru kod druge promenljive je u slucaju da postoji i prva promenljiva, onda nam je potrebna kljucna rec AND(ili OR) kako bismo napravili SQL upit. Ako nema prve promenljive, onda ubacujemo WHERE i dodajemo upit samo za pretragu preko "tip".
Medjutim... ako nema niti jedne niti druge... onda ce ti se vratiti svi rezultati... barem u ovoj varijanti.

Srecno. 🙂

p.s.
Izvini ako sam negde zeznuto nesto oko PHP koda, nisam ga pisao, ima neko duze vreme... 😉
 
Mozes da stavis pod value za Izaberite tip "%".
Tako ces dobiti>
<option value="%">Izaberite tip</option>

Tako da ce u slucaju kada korisnik ne izabere konkretno Uslugu ili Tip, query tu da pregleda sve vrednosti iz baze, kao da si mu rekao ALL. 🙂

To je najprostije, ako ti je upit ovog oblika
SELECT * FROM nekretnine WHERE usluga LIKE 'prodaja' AND tip LIKE 'garsonjera'
 
Da, naravno, direct2db. Naucite coveka pogresno ako moze 🙂 Sta se desilo sa serverskom validacijom, ciscenjem stringova i sl.?
 
Da, naravno, direct2db. Naucite coveka pogresno ako moze 🙂 Sta se desilo sa serverskom validacijom, ciscenjem stringova i sl.?

Iskreno... ne znam da li koristi PDO ili mysqli ili najobičniji mysql.
A znaš i sam da se te serverske validacije razlikuju od jednog do drugog. 😉

Imao sam jako malo vremena i mislio sam da sam mu dao dovoljno informacija da nastavi sam dalje... jer kao što i sam znaš, najbolje se nauči kada te neko uputi u pravom smeru a ti sam rešiš ostatak problema. 😉
 
Poslednja izmena:
Slazem se, samo mu treba napomenuti da moira da radi serversku validaciju i da nikako ne radi direct2db 🙂 Inace, ode mast u propast.
 
Slazem se, samo mu treba napomenuti da moira da radi serversku validaciju i da nikako ne radi direct2db 🙂 Inace, ode mast u propast.

Nema spora... 101% si u pravu za to.

Kad smo kod toga... ja bih predlozio da odmah krene sa koriscenjem PDO-a. Bice mu lakse cim predje na neki od framework-a.
 
Da, od uslovom da planira da seli svoj projekat na drugi DB sto nije toliko cesto, cak se retko vidja. Za pocetak je MYSQLi sasvim dovoljan za njega imajuci u vidu da on omogucava i proceduralno programiranje sto je, sudeci po startu teme, trenutni domet. PDO je ok ako posle zavrsis radeci na nekom petom projektu koji koristi neki n-ti DB sistem, ali kako vecina web devela radi sa MYSQL-om (ili Pgsql-om), PDO i nema nekih preteranih prednosti.
 
Nazad
Vrh Dno