MySQL dotaz na vyhladavanie

Programovacie jazyky, rady, poradňa...
Altar4972
Novice
Novice
Príspevky: 3
Registrovaný: 30 júl 2009, 15:31

MySQL dotaz na vyhladavanie

Príspevok od používateľa Altar4972 »

Ahojte vsetcia.
Velmi casto chodievam do tejto sekcie. Naucil som sa tu uz mnoho uzitocnych veci.
No a dostal som sa do stadia ked dozrel cas aj na vlastnu prosbu o pomoc.

Mam nasledovnu (dajme tomu) sql tabulku:

Kód: Vybrať všetko

>select * from files;
|-------|-----------------------------------|
|  ID   |  Name                                 |
|-------|-----------------------------------|
| 1      | Moja.zaloha.2008.rar            |
| 2      | Moja.zaloha.2008.r01            |
| 3      | Moja.zaloha.2008.r02            |
| 4      | Songy-repete.rar                  |
| 5      | Fotky dovolenka 2009.zip      |
| 6      | Fotky dovolenka 2009.001     |
|-------|-----------------------------------|
Mam nejaky php skript ktory komunikuje s touto databazou.
Mam v nom nejaky search-box. Ako by ste prosim vas zostavili mysql dotaz, ak by "uzivatel" zadal, ze chce najist vsetky suvisiace subory "Moja zaloha 2008".

Ide oto, ze v samotnej databaze mozu byt nazvy suborov v roznych tvaroch (vid. tabulka).

nieco taketo: "select * from files where Name like '%$retazec%';" - nefunguje vzdy (dovod je zrejmy).

Neviete ci je na strane mysql toto nejak riesitelne? Aby som nemusel vyhladavaci string moc modifikovat na strane php este pred zostavenim dotazu.
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

Najprv si budeš musieť pridať fultext na stlpec name:

Kód: Vybrať všetko

ALTER TABLE `files` ADD FULLTEXT (`Name`);
a potom vyhladávacie query bude takto:

Kód: Vybrať všetko

SELECT * FROM `files` WHERE MATCH (`Name`) AGAINST ('moja zaloha');
samozrejme do against ti príde premenna z formuláru na vyhladávanie
Altar4972
Novice
Novice
Príspevky: 3
Registrovaný: 30 júl 2009, 15:31

Príspevok od používateľa Altar4972 »

Este jedna otazka.

Ten Fulltext musim pridavat pred kazdym vyhladavanim alebo to staci raz alebo to musim zakazdym ked pridam nejaky zaznam do DB?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Príspevok od používateľa audiotrack »

iba raz
Shakal
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 206
Registrovaný: 31 jan 2006, 18:54

Príspevok od používateľa Shakal »

Uz som prisiel nato, ze vyhladavane slovo musi byt min 4 znaky dlhe.
Ale aj tak mi ten fulltext funguje ako sa mu zachce.
Nechapem to.
:(
Napísať odpoveď