Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 12 odgovora
  • 3.932 pregleda

Najnovija ↓

Mysql upit za pretragu 05.05.2011. u 01:31 · pre 188 meseci #1
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?
Re: Mysql upit za pretragu 05.05.2011. u 02:15 · pre 188 meseci #2
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)..
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Mysql upit za pretragu 05.05.2011. u 02:25 · pre 188 meseci #3
relevance sta to znaci? (posto nisam bas predugo ne radim u php-u)

Hvala na brzom odgovoru.
Re: Mysql upit za pretragu 05.05.2011. u 02:34 · pre 188 meseci #4
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..
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: Mysql upit za pretragu 05.05.2011. u 02:44 · pre 188 meseci #5
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>';
      }
      }
      }
Re: Mysql upit za pretragu 05.05.2011. u 09:06 · pre 188 meseci #6
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.
Re: Mysql upit za pretragu 05.05.2011. u 17:41 · pre 188 meseci #7
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?
Re: Mysql upit za pretragu 05.05.2011. u 17:54 · pre 188 meseci #8
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
Potpis
Banned - Not available
Re: Mysql upit za pretragu 06.05.2011. u 20:02 · pre 188 meseci #10
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...
Re: Mysql upit za pretragu 06.05.2011. u 20:29 · pre 188 meseci #12
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....
Re: Mysql upit za pretragu 10.05.2011. u 00:59 · pre 188 meseci #13
Pa dosta toga sam naucio iz gotovog koda, i po meni je tako lakse uciti.

Pokusacu sad da odradim kako si me rekao.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme