[ Kusur @ 28.07.2002. 12:43 ] @
Pozdrav svima!

Baza: MySql (nusphere)
Tabele: KNJIGA, INSTITUCIJA
Aplikacija: Dreamweaver Ultradev 4.0 + PHP (PHAKT ekstenzija)

Napravio sam trazi.php stranu sa poljem "tekst". Form action = rez.php
Pretrazujem u tabeli knjiga - (iz istog polja "tekst") sledeca polja:

knjiga_naslov
autor
isbn_broj

PITANJE 1

I to radi, mada kada ukucam np. ime knjige "Prva knjiga" pronadjem je, takodje i sa "prva" i sa "knjiga" ali kada promenim redosled reci np. "knjiga prva" ne pronadjem nista?

PITANJE 2

Kako da napravim "search" sa "list" poljem?
Zelim da dodam i pretrazivanje po INSTITUCIJI (list polje) + opcija "sve institucije". Obe tabele "KNJIGA" i "INSTITUCIJA" imaju polje "ins_id"



Strana REZ.PHP - Recordset knjiga

SELECT *
FROM knjiga
WHERE knjiga_naslov LIKE '%tekst%' or autor LIKE '%tekst%' or isbn_broj='tekst'

Variabiles

name = tekst

Default value = 1

Run-time value = $HTTP_POST_VARS["tekst"]

Unapred hvala
[ bOkIcA @ 28.07.2002. 21:34 ] @
Pokusacu da ti odgovorim na prvo


1. ako dobijes ovakav string $StariString = " prva knjiga", prvo treba da ocistis isti, (eregi, trim... i sl.)

2. razbijes string u array ($ArrayString = explode(" ", $StariString);

3. u for petlji vrtis stringove koliko ih ima (for ($i=1; $i < count($ArrayString; $i++))

4.
$TvojQuey = "SELECT * FROM knjiga WHERE knjiga_naslov LIKE '%$ArrayString[0]%'";
a u for petlji dodajes na isti string
$TvojQuery .= " AND knjiga_naslov LIKE '%$ArrayString[$i]%'";
(ako je AND onda trazi sve reci, ili stavis OR pa bilo koju)

5. i posle for petlje nastavis query
$TvojQuery .= " ORDER BY ...............";


Znaci koliko imas trazenih reci toliko puta kod doda " AND trt LIKE '%%'

si
nadam se da ce ti pomoci
btw mozes slobodno da menjas generisan kod phakta i da ga prilagodis sebi

[ Jbyn4e @ 29.07.2002. 15:26 ] @
Citat:

$TvojQuey = "SELECT * FROM knjiga WHERE knjiga_naslov LIKE '%$ArrayString[0]%'";
a u for petlji dodajes na isti string
$TvojQuery .= " AND knjiga_naslov LIKE '%$ArrayString[$i]%'";
(ako je AND onda trazi sve reci, ili stavis OR pa bilo koju)
5. i posle for petlje nastavis query
$TvojQuery .= " ORDER BY ...............";

Ja bih samo dodao da mozes umesto "knjiga_naslov" da stavis promenljivu (recimo $polje) i da na osnovu toga sta je odabrano da bude i knjiga_naslov like, i ins_id like i sta god vec. Sad, kako ces to odabrai - to je vec druga stvar (recimo mozes da if komandama, mozes sa switch ili koja vec bese) da odabiras koja je vrednost onoga $polje.
Takodje, mozes umesto LIKE da koristis i REGEXP ukoliko poznajes regular expressionse. Cak, stavise, ukoliko imas i nasa slova u nazivima - moraces da koristis i regexpe da bi nasao gde se javlja slovo c, č, ili ć (npr. Čitalište da bude prepoznato i ako korisnik unese citaliste). Ako hoces da moze da se koristi i OR i AND i NOT, to ces morati da odradis sa regexpovima razdvajanje na delove, ali o tom potom.

BTW. Moze li se znati sta to pokusavas da napravis, i za koga?
[ Kusur @ 29.07.2002. 18:33 ] @
Hvala na pomoći, mada malo razumem pošto nisam programer nego grafički dizajner.

Nadao sam se odogovoru tipa "ovde" ubaci "ovo" u SQL query ili pošto sam optimista da ću dobiti "gotov" query - Koji ću ubaciti u recordset u Dreamweaveru.

Radim u Megatrendu (Izdavačka služba) čiji sajt je radila agencija "Gistro" (valjda) ali deo o izdavačkoj službi je loš pa, pokušavamo da to mi uradimo (izdavačka služba) ali sa MySql bazom i PHP-om pošto je sajt na Apaču (linux).

Znači da studenti mogu da dobiju informaciju o udžbenicima, autorima i sadržaju udžbenika. Takođe bi voleli da ovaj deo sajta ima i pretraživanje knjiga po:

Naslovu knjige
Autoru
Isbn broju
i Instituciji (Megatrend ima šest institucija)

Eto to je priča. Uzged ja prvi put radim sa PHP-om i MySql-om. Više se snalazim sa ASP-om, ali sve kroz Dremweaver i njegove ekstenzije. Ručno editivanje koda ne znam osim ako imam neki primer pa uspem da ga ukapiram i promenim, onako kako meni odovara.

Mada mi se sve ovo jako dopada - ali čim nešto malo naučim vidim koliko još treba da učim, a nisam baš mlad :))negde ok��etiri sata, da su p
[ Kusur @ 29.07.2002. 18:49 ] @
Mnogo pričam - zaboravih, interesuje me ovo sa REGEXP i Yu slovima.

Gde mogu da "skinem" primere rađene u DW Ultradev-u (PHP, MySql)?

Unapred hvala!
[ Jbyn4e @ 29.07.2002. 19:19 ] @
Hm, pazi, nema bas mnogo veze sa dreamweaverom sve to, on je tu samo kao alat - a da bi mogao da uradis nesto sa regexpovima trebace ti mnogo vremena. Potrebno je opet malo iskustva sa bazom i sa php-om da bi znao kako da sve to realizujes, nije bas tako jednostavno da se svodi na select nesto from nesto_drugo where nesto_trece like nesto_cetvrto. Mislim, na kraju se svede na to, ali prethodno se pripremi sql upit pomocu php funkcija, pa se onda pljusne upit sql serveru koji vrati podatke. Nisam bas siguran da bi kao pocetnik u PHP-u to mogao da odradis, ali pitanje je - Megatrend je ipak (trebalo bi) bogatija skola, sto lepo ne plate nekoj firmi ili nekom programeru koji se time vec bavio da to odradi, nego muce tebe koji to nisi radio?
Meni je trebalo ipak neko vreme da osmislim search za neke stvari na knjizara.com, a i za to mi je trebalo neko iskustvo, proucavanje skripti i dosta toga na internetu da dobijem ideju kako da to uradim... u principu ne moze bas sve da bude uopsteno, vec na osnovu specificnog zahteva da se uradi.
Sto se tice regexp-a, ja sam to uradio tako sto imam nekoliko linija koje su oblika:
$string = ereg_replace ("č, "[č|c]", $string);, tj. kazem mu da ako naidje na č da mu da mogucnost da to bude ili č ili c. I obrnuto,
$string = ereg_replace ("c", "[č|ć|c]", $string); - ovde mu kazem da umesto c trazi i č i ć. (ovo sve pricam zbog onih koji znaju o cemu se radi, i dajem ideju ako im je potrebno).
Kod regexp-a , ovo [a|b|c] znaci - ili a ili b ili c.

Kod tebe bi mozda bilo uproscenije - da se stavi <select><option NAME="list" VALUE="naziv_prve_institucije"><option...></select> (jel to zoves "list"?), pa da posle php skripta ima nesto kao
switch $list: {
case "naziv_prve_institucije": $query .= "AND institucija REGEXP $list";
...
}
ili nesto slicno, u zavisnosti od specificnosti.

Moj savet na kraju - ja ne znam nekoga da ima volje i vremena da vam da ceo kod - da se trudi da uradi samo da bi ste ga vi iskoristili na sajtu, a da od toga on ima samo izgubljeno vreme. Bolje kontaktirajte nekoga ili neku firmu da vam to odradi za neku kolicinu love.
[ subwire @ 18.12.2002. 10:00 ] @
Treba da napravis drugaciji SQL upit. Koji treba da izgleda ovako na primer:
SELECT Ime FROM NekaTabela WHERE MATCH(Ime, Prezime, Detalji) AGAINST ('programer')
Posto me mrzi da kucam, pusti cu tebe da trazis malo po dokumentaciji. Ali bi ovo trebalo da resi tvoj problem.
Pozdrav!