Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mysql upit za pretragu

[es] :: PHP :: Mysql upit za pretragu

[ Pregleda: 2595 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Somborski_Fantom
Sinisa Sladic
Sombor

Član broj: 271966
Poruke: 41
*.dynamic.sbb.rs.



+2 Profil

icon Mysql upit za pretragu05.05.2011. u 00:31 - pre 157 meseci
Ima bazu u kome se nalaze 2 kolone. Jedna je izvodjac duruga je pesma. I zalim da napravim pretragu kao na youtubu.
http://www.mcstojan.iz.rs/
Kucajte mcstojan u pretrazi i izbacice vam dve pesme. I sad kad pocnem kucati naziv pesme on i dalje prikazuje 2 pesme mesto 1. Kako da zadam upit?
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Mysql upit za pretragu05.05.2011. u 01:15 - pre 157 meseci
sa fulltext searchom bi to islo ovako nekako:
Code:

SELECT *, MATCH(col1, col2) AGAINST ('sta trazis') AS relevance 
FROM tablename 
WHERE MATCH(col1, col2) AGAINST('sta trazis') 
ORDER BY relevance DESC


naravno treba ti zajednicki fulltext index na obe kolone:

Code:

ALTER TABLE tablename ADD FULLTEXT (col1, col2)


mada mislim da tebi fulltext ne treba ako radis search nad VARCHAR poljima, LIKE bi ti vrsio posao samo sto bi u tom slucaju morao da koristis OR sto nije preporucljivo (ili sam ja to samo negde procitao da OR ne ume bas da koristi indexe, u svakom slucaju ja OR izbegavam)..
 
Odgovor na temu

Somborski_Fantom
Sinisa Sladic
Sombor

Član broj: 271966
Poruke: 41
*.dynamic.sbb.rs.



+2 Profil

icon Re: Mysql upit za pretragu05.05.2011. u 01:25 - pre 157 meseci
relevance sta to znaci? (posto nisam bas predugo ne radim u php-u)

Hvala na brzom odgovoru.
 
Odgovor na temu

Aleksandar Ružičić
Software Architect, Appricot d.o.o.
Beograd

Član broj: 26939
Poruke: 2881

Jabber: krckoorascic@gmail.com
Sajt: krcko.net


+44 Profil

icon Re: Mysql upit za pretragu05.05.2011. u 01:34 - pre 157 meseci
relevance je naziv "kolone" koju ces dobiti u rezultatu. ne mora tako da se zove, mozes ti slobodno umesto "relevance" da pises "rezultat" ili "podudarnost".. najbolje ti je da testiras upit prvo direktno na bazi (putem mysql cli-a, phpmyadmina, heidisql-a ili nekog drugog mysql klijenta) da vidis sta dobijas kao rezultat (i da vidis da li ti je upit ispravan, tj da li radi ono sto hoces) pa tek onda da pises php kod..
 
Odgovor na temu

Somborski_Fantom
Sinisa Sladic
Sombor

Član broj: 271966
Poruke: 41
*.dynamic.sbb.rs.



+2 Profil

icon Re: Mysql upit za pretragu05.05.2011. u 01:44 - pre 157 meseci
hmm ovo mi je php kod, ne vidim nigde gresku a on mi izbaci rezultat kao gresku
Code:

    if(isset($_POST['queryString'])) {
            $queryString = $_POST['queryString'];        
            if(strlen($queryString) >0) {

                $query = "SELECT * MATCH(izvodjac, muzika) AGAINST ('$queryString%') AS relevance FROM muzika WHERE MATCH(izvodjac, muzika) AGAINST('$queryString%') ORDER BY relevance DESC";
                $result = mysql_query($query) or die("There is an error in database please contact [email protected]");
                    while($row = mysql_fetch_array($result)){
                    echo '<li onClick="fill(\''.$row['pesma'].'\');"><a href="?p='.$row['pesma'].'&i='.$row['izvodjac'].'">'. $row['izvodjac']. " - " . $row['godina_pesme'] . "-" . $row['pesma'] . '</a></li>';
      }
      }
      }
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.static.stelkom.net.



+18 Profil

icon Re: Mysql upit za pretragu05.05.2011. u 08:06 - pre 157 meseci
Citat:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MATCH(izvodjac, muzika) AGAINST ('mc ') AS relevance FROM muzika WHERE MATCH(izv' at line 1


Ako pogledas prvu liniju u query-ju i uporedis sa query-jem kojeg ti je Aleksandar napisao vidjeces da hvali znak "," ,vjerovatno je u tome problem.
 
Odgovor na temu

Somborski_Fantom
Sinisa Sladic
Sombor

Član broj: 271966
Poruke: 41
*.dynamic.sbb.rs.



+2 Profil

icon Re: Mysql upit za pretragu05.05.2011. u 16:41 - pre 157 meseci
Da, to je bila greska.
Ali sad mi se pojavljuje ovo
Code:
Can't find FULLTEXT index matching the column list

E sad to je verovatno ovo
Code:
ALTER TABLE tablename ADD FULLTEXT (col1, col2)

Ali kako to da ubacim u moj kod? Kao novi query ili?
 
Odgovor na temu

Br@nkoR
http://localhost

Član broj: 2597
Poruke: 1603

Sajt: localhost


+23 Profil

icon Re: Mysql upit za pretragu05.05.2011. u 16:54 - pre 157 meseci
Izvrši ga pomoću MySQL cli-a ili phpMyAdmina ili MySQL Workbench-a ili HeidiSQL ili nekog dr. clienta koji koristiš, a možeš i pomoću php-a
Banned - Not available
 
Odgovor na temu

Somborski_Fantom
Sinisa Sladic
Sombor

Član broj: 271966
Poruke: 41
*.dynamic.sbb.rs.



+2 Profil

icon Re: Mysql upit za pretragu05.05.2011. u 17:10 - pre 157 meseci
Jesam, ali sad mi nista ne izbacuje kao resenje.
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.dynamic.t-2.net.



+18 Profil

icon Re: Mysql upit za pretragu06.05.2011. u 19:02 - pre 157 meseci
U cemu je problem?
Jesi probao otvoriti ovu stranicu sa kodom koji si postavio i sta ispise ona?

Ako ne ispise nista idi red po red i ispisuj sa var_dump varijable i vidi jesu li u redu...
 
Odgovor na temu

Somborski_Fantom
Sinisa Sladic
Sombor

Član broj: 271966
Poruke: 41
*.dynamic.sbb.rs.



+2 Profil

icon Re: Mysql upit za pretragu06.05.2011. u 19:12 - pre 157 meseci
Pa nista ne ispisuje.
var_dump kako mislis sa tim da ispitam?
 
Odgovor na temu

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
*.dynamic.t-2.net.



+18 Profil

icon Re: Mysql upit za pretragu06.05.2011. u 19:29 - pre 157 meseci
Code:

if(isset($_POST['queryString'])) {
            $queryString = $_POST['queryString'];        
            if(strlen($queryString) >0) {

                $query = "SELECT * MATCH(izvodjac, muzika) AGAINST ('$queryString%') AS relevance FROM muzika WHERE MATCH(izvodjac, muzika) AGAINST('$queryString%') ORDER BY relevance DESC";
                $result = mysql_query($query) or die("There is an error in database please contact [email protected]");
                    while($row = mysql_fetch_array($result)){
                    echo '<li onClick="fill(\''.$row['pesma'].'\');"><a href="?p='.$row['pesma'].'&i='.$row['izvodjac'].'">'. $row['izvodjac']. " - " . $row['godina_pesme'] . "-" . $row['pesma'] . '</a></li>';
      }
      }
      }


Brate moras nauciti sam otkrivat greske u kodu. Ovako nikad neces naucit programirat.

Na gornjem primjeru:

prvo mozes recimo provjeriti jel $queryString dobija pravu vrijednost. Kako to uraditi? - Poslije reda "$queryString=$_POST['queryString']" ispisaces vrijednost te varijable:
var_dump($queryString);

Ako ispise ono sto bi trebalo ispisat ides dalje. Na gornjem primjeru ispisaces u 6. liniji vrijednost $query i dobijeni ispis ces unjet u MySQL client program i vidjeti jel query vrati to sto treba. Tako ides dalje do kraja....
 
Odgovor na temu

Somborski_Fantom
Sinisa Sladic
Sombor

Član broj: 271966
Poruke: 41
*.dynamic.sbb.rs.



+2 Profil

icon Re: Mysql upit za pretragu09.05.2011. u 23:59 - pre 157 meseci
Pa dosta toga sam naucio iz gotovog koda, i po meni je tako lakse uciti.

Pokusacu sad da odradim kako si me rekao.
 
Odgovor na temu

[es] :: PHP :: Mysql upit za pretragu

[ Pregleda: 2595 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.