[ krcky @ 09.10.2003. 22:03 ] @
Kako napraviti skpirtu(ili kako se vec zove) za naprednu pretragu baze.Pod tim podrazumevam npr. ako pravim sajt za mobilne telefone kako da napravim pretragu
po proizvodjacu,ceni,ekranu u boji.....
Da li vec postoji gotova skripta za to??
[ dr ZiDoo @ 09.10.2003. 22:18 ] @
Jednostavno.
Ako ti je baza u SQlu onda u zavisnosti kakve kolone imaš. Nećeš čitav opis stavljati u jedan red nego ćeš to parčati. Evo primjera jedne tabele:

+-----------+---------+---------+------------+
| Proizodjac | Model | Velicina | Masa | ...
+-----------+---------+---------+------------+

i tako staviš polja koliko želiš satvki da pretražuješ. I onda jednostavno samo radiš upit u bazu

Code:

SElECT * FROM imetabele WHERE Proizvodjac=Sony;


I on vraća iz te tabele sve telefone koje su sonijeve. I tako za svaki stavku. Npr ako želiš sve telefone lakše od 120g.

Code:

SElECT * FROM imetabele WHERE Masa<120;


E sada pošto telefon ima dosta toga, ako želiš da smanjiš tabelu može da određene opise upišeš u samo jedno polje pa da preko eregi funkcije tražiš zadatu karakteristiku.
[ bluesman @ 09.10.2003. 23:31 ] @
Evo ti jedna koju sam zakomplikovao do krajnjih granica :-)) U principu nije to tesko napravit ali se na kraju ispostavilo da sto vise opcija imas - korisnici se teze usudjuju da koriste te opcije...

http://www.outdoor-monitoring....board.search.php?type=advanced

Ako te interesuje ovakav search, mogu ti objasniti prinicip.
[ noviKorisnik @ 10.10.2003. 08:16 ] @
Citat:
sto vise opcija imas - korisnici se teze usudjuju da koriste te opcije...
kako da se odrede optimalne opcije za filter, a da se pri tom ne optereti korisnik? primer koji si naveo deluje zastrašujuće za korisnike. ubacivanje opcija koje niko ne koristi je višak rada i opterećenje interfejsa.
[ bluesman @ 10.10.2003. 11:29 ] @
Citat:
noviKorisnik:
ubacivanje opcija koje niko ne koristi je višak rada i opterećenje interfejsa.


Zato se pravi basic search... na www.outdoor-monitoring.com ima 3 tipa pretrazivanja:
1. Samo 1 input box i search button koji se nalaze na svakoj strani u headeru
2. Osnovni search sa 2-3 opcije: http://www.outdoor-monitoring.com/billboard.search.php
3. Advanced search (onaj za koji sam ti dao link)

Znaci, slazem se sa tobom za "ubacivanje opcija koje niko ne koristi..." ali u ovom konkretnom slucaju, to nije slucja, jer je to je tek 3 nacin pretrazivanja i koristi se dovoljno cesto, jer ako covek zna da koristi te opcije moze 'ladno da isplanira celu billboard kampanju i izabere lica koja ce mu najvise odgovarati.

[ broker @ 10.10.2003. 15:14 ] @
Evo ti jos jedan jednostavan search sa prosirenim opcijama...
http://www.bgelektronik.co.yu/lager.php
[ dr ZiDoo @ 10.10.2003. 15:20 ] @
Ja ne kontam što su svi tako retardirani. Ima SQl ima eregi funkciju, ima string za traženje. Pogledaj search na www.telfon.net, search razvali, koristi ga svaka plavuša, objasnio sam gore kako funkcioniše i čem sada sve ovo!!!

Mrzim komplikovanja.
[ bluesman @ 10.10.2003. 17:06 ] @
O cemu ti to doktore?
[ krcky @ 10.10.2003. 18:18 ] @
Bluesmane dobro ti je ovo nego mene zanima sa sa 2-3 opcije pretrazivanje.Mozes to da mi objasnis kako se pravi.
[ arsa xx @ 10.10.2003. 18:24 ] @
Citat:
Ja ne kontam što su svi tako retardirani. Ima SQl ima eregi funkciju, ima string za traženje. Pogledaj search na http://www.telfon.net, search razvali, koristi ga svaka plavuša, objasnio sam gore kako funkcioniše i čem sada sve ovo!!!

Mrzim komplikovanja.

HEHEHEhehehe ima i opcija sa LIKE i fulltext index . Mada rec je o naprednoj pretrazi zar ne.

Ima monogop nacina evo prvi koji mi je pao na pamet:
Moze da se izvede sa "dimamickim" pravljenjem SQL upita
npr za svaki text field uradimo

if($_POST[textpolje]!="" or $_POST[textpolje]!="Nije bitno")
{
$string_sa_uslovima .=" kolona1 LIKE '%$_POST[textpolje]%' AND'';
}
.....
Izuzetak "AND" koji se javlja na kraju resavamo tako sto odsecemo zadnja tri karaktera
.....
$sql="SELECT * FROM tabela WHERE $string_sa_uslovima"



[ krcky @ 10.10.2003. 18:42 ] @
Jer mozete to detaljno da objasnite jer sam pocetnik sto se tice PHP-a i MySQL-a
[ dr ZiDoo @ 10.10.2003. 19:48 ] @
Citat:
krcky:
Jer mozete to detaljno da objasnite jer sam pocetnik sto se tice PHP-a i MySQL-a


Pa čim ne zna napraviti search sistem pretpostaviš da je čovjek početnik. A ako je početnik onda mu koje kakve 2advanced skripte ne znače puno jer ih ne zna prapraviti u ubaciti u svoj sajt.
Ako već imate volje objasnite mu fino, a ne eto tebi url.
[ bluesman @ 11.10.2003. 01:39 ] @
Doktore, kako ja mogu da znam da je pocetnik? Nekoliko puta se desilo da pokusas nesto da objasnis "od nule" pa ti covek odgovori "nisam ja bre glup..." zato sam mu postovao link da vidim kakav tip pretrazivanja hoce. Jednostavno, toliko je sujetnih ljudi, da moras da budes jako pazljiv da se neko ne uvredi. Na primer, neko sujetan kao ja lako popizdi kada neko kaze "retardirani"...

@krki: evo kratkog uputstva, mada mislm da ima toga ovde na forumu. Objasnicu ti onaj najosnovniji search koji se nalazi u headeru na www.outdoor-monitoring.com

1. postavis formular:
<form action="search.php" method=post">
<input type='text' name='search_text' width=30>
<input type='submit' value='pronadji'>
</form>

2. u "search.php" stoji sledece:
if (!empty($_POST['search_text']))
{
$query_string = "SELECT * FROM moja_tabela WHERE polje_koje_trazim='".trim($_POST['search_text'])."' ";
$res = mysql_query ($query_string) or die ('Moram da promenim imena moja_table i polje_koje_trazim u prava imena polja');

... ispisivanje rezultata
}

3. Ako hoces da pretrazuje "slobodnije" odnosno sve sto sadzri trazenu rec zameni deo u $query posle "WHERE":
... " polje_koje_trazim LIKE '%".trim($_POST['search_text'])."%' ";

4. Ako hoces samo da pocinje sa trazenom reci:
... " polje_koje_trazim LIKE '".trim($_POST['search_text'])."%' ";

5. Ako hoces samo da zavrsava... to mozes sada da skapiras i sam.

6. Ako hoces da trazi u vise polja istovremeno:
..." polje_koje_trazim1 LIKE '%".trim($_POST['search_text'])."%' ".
" OR polje_koje_trazim2 LIKE '%".trim($_POST['search_text'])."%' ".
" OR polje_koje_trazim3 LIKE '%".trim($_POST['search_text'])."%' ".
" OR polje_koje_trazim4 LIKE '%".trim($_POST['search_text'])."%' ";

Napomena: trim() je samo da bi obrisao nepotrebne "space" sa pocetka i kraja stringa.

Dobra ideja je da na search formi proveravas iz JavaScript da li je prazan search_text i ne dozvolis mu submit ako je prazan...

Jos bolja ideja je da prvo pogledas koliko ima rezultata,
umesto: SELECT *
napises: SELECT COUNT(*) AS BrojRezultata
pa onda dobijes jedan jedini red sa jednom vrednoscu BrojRezultata sto predstavlja tacan onaj broj koliko ce taj upit da vrati rezultata po kriterijumu koji je korisnik zadao, pa ako je previse, onda mu skreses na nekirazuman broj tako sto na kraju dodas:
... " LIMIT 100"
ali ga obavestis da si to uradio

Najbolja ideja je da kreiras "paged navigation" a to je ono kada imas vise od recimo 30 rezultata, izbacuje sve rezultate u stranama od po 30...

Za 2-3 opcije je slicno ovome, kao i za 200-300 opcija... princip je isti, samo imas veci query.
[ arsa xx @ 11.10.2003. 12:30 ] @
Napredna pretraga je sirok pojam.
Ima raznih slucajeva. Navescu neke dve "komponente" korisnickog intrfejsa napredne pretrage.(Naravno one nemoraju da se koriste ako nepostoji za to razlog)

1. Dve(a i vise) padajuce liste stim da se druga dinamicki menja kada se promeni u prvoj opcija.
2. checkbox koji selektovanjem otkljucava za unons novih opcija i obratno.

Ima slucajeva u naprednoj pretrazi gde stoji text field koje reci netreba da se nadju u rezultatu.

Varijacija i kompbinacija ima bezkonacno.

Mislim da je najbolje da krcky iznese bazu na videlo i formu pa da diskutujemo
[ bluesman @ 12.10.2003. 01:50 ] @
Pa tu od pocetka postoji problem. Prvo kao totalni pocetnik hoce da napravi naprednu pretragu, a na kraju se ispostavilo da u stvari njemu i ne treba nista napredno.
[ broker @ 12.10.2003. 10:02 ] @
Citat:
dr ZiDoo:
Ako već imate volje objasnite mu fino, a ne eto tebi url.


Ja sam razumeo da je coveku problem korsinicki interfejs koji treba da bude jednostavan a opet da omoguci napredno pretrazivanje...

[ arsa xx @ 13.10.2003. 14:14 ] @
Citat:
broker:
Citat:
dr ZiDoo:
Ako već imate volje objasnite mu fino, a ne eto tebi url.


Ja sam razumeo da je coveku problem korsinicki interfejs koji treba da bude jednostavan a opet da omoguci napredno pretrazivanje...



To sto ti kazes to je tako apstraktno jer pri pretrazi pored tekst polja imamo jos radio button, checkbox, padajuce liste, mozda ima jos nesto...

Npr. mobilni telefoni, dve padajuce liste, kada izaberem marku automatski se menja druga pdajuca lista gde dogijam tipove.


[ dr ZiDoo @ 13.10.2003. 19:49 ] @
Mislim da ova tema lagano gubi smisamo pa ći pokušati da je vratim na pravi put.

Ako prvo krcky mora da kaže šta on podrazumjeva pod naprednom pretragom. Da bi mu u tančine objasnili kako da napiše svoj code treba da znamo koje pojmove treba da pretražuje skripta.

Da zaključimo već poznato.
Napredna pretraga se može napisati korišćenjem mySQL upita sa stavkama: WHERE, LIKE.
Što se tiče HTML upita checkbox i edit box je sasvim dovoljan, iako se kao zamjena za editbox u nekim slučajevima može koristiti i combobox ili listbox.

Izgled PHP skripte diktira izgled tabele/a u kojem su smješteni podatci o telefonima.



P.S. Izvinjavam se ako sam bio pogrešno svaćen ili (kako sam od nekih na kafi čuo) drzak, bilo je ne namjerno.
[ _owl_ @ 13.10.2003. 21:50 ] @
Citat:
dr ZiDoo:
Izgled PHP skripte diktira izgled tabele/a u kojem su smješteni podatci o telefonima.

Potpuno pogresno (da ne kazem da je situacija obrnuta, dizajn baze i funkcionalnost koju sistem treba da pruzi diktiraju kako ce da se to implementira).
[ Goran Rakić @ 14.10.2003. 22:25 ] @
ja mislim da je to i rekao. da to kako će skripta biti dizajnirana zavisi od strukture baze i podataka.
[ Vuk Nikolić @ 14.10.2003. 23:02 ] @
ok mozda sam zakasnio...

ja sam svoju "pretragu" koja bas i nije napredna (za forum, da se pretrazuju poruke iz foruma koji su dostupni tom korisniku) napravio: www.daska.org . Radi samo kad se korinsik registruje. ako ti treba nesto tog (jednostavnijeg) tipa ti javi :D
[ dr ZiDoo @ 15.10.2003. 08:25 ] @
Citat:
Gorna Rakić:
ja mislim da je to i rekao. da to kako će skripta biti dizajnirana zavisi od strukture baze i podataka.


Baš to, i to jako jasno.
[ darkoPOKLONCIC @ 25.10.2003. 19:26 ] @
ima li ko, nakon ovako zive rasprave, jos malo zivaca objasnit slicaj sa FULLTEXT indexom?

recimo, postoji ovakav forum kojem su polja poruka FULLTEXT. u pretragama po bilo kojoj rijeci zelim da pretrazi sve poruke (ili od nekog korisnika ili sta vec, nije bitno), a u rezultatu da podeblja sve rijeci po kojima je trazeno.

i naravno, kakvim upitom se postize najveca brzina ovakve vrste pretrage?

tnx

[ -zombie- @ 27.10.2003. 21:44 ] @
prvo, za sam upit pogledaj mysql manual. nema boljeg objašnjenja od tog http://www.mysql.com/doc/en/Fulltext_Search.html

a za označavanje reči koje su bile u pretrazi, možda ti pomogne http://www.elitesecurity.org/poruka/187330
[ darkoPOKLONCIC @ 28.10.2003. 11:12 ] @
da. sve jasno. hvala ti!

jos nesto. u bazi tekstova zelim kao rezultat query-ja sve koji su napisani recimo u 9. mjesecu 2001. godine. kakvim query-jem je to najbolje napraviti?...