aywars Posted March 26, 2009 Report Share Posted March 26, 2009 (edited) Ir vēlme uztaisīt case insensitive meklēšanu, tā lai nebūtu atšķirības kā lietotājs ieraksta meklējamo vārdu : Vārds, vārds, VĀRDS vai VāRdS utt.. Izlasīju, ka, lai to panāktu, salīdzināmajiem vārdiem abiem ir jānomaina case uz lower vai upper.. Izdarīju ar lower tā: $name = $_POST['name']; $name = strip_tags($name); $name = trim($name); $name = strtolower($name); $q = "SELECT * FROM tabula WHERE lower(name) LIKE '%$name%'"; bet tas nestrādā.. meklētājs atrod meklēto vārdu tikai tad, kad rakstu to lowercase.. Iesakiet lūdzu kādu risinājumu.. Vēlams lai tas strādātu arī ar garum- un mīkstinājum- zīmēm.. Pateicos! p.s. Uz uppercase arī mēģināju abus pārveidot.. nesanāk.. Edited March 26, 2009 by aywars Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted March 26, 2009 Report Share Posted March 26, 2009 pirmkārt, vajag mysql_real_escape_string otrkārt, vai nebija tā, ka defaultā mysql veic case insensitive meklēšanu? Tas ir, nevajag neko pārveidot uz lower/upper. vēl - ja jau pārveido, tad abus pārveido SQL izteiksmē, citādi var sanākt tie sarežģījumi ar garumzīmēm. Kā arī lauka charsetam jābūt utf8_general_ci vai utf8_unicode_ci. Quote Link to comment Share on other sites More sharing options...
aywars Posted March 26, 2009 Author Report Share Posted March 26, 2009 OK, pieliku mysql_real_escape_string. Pēc maniem novērojumiem mysql neveic case insensitive meklēšanu defaultā. Tāpēc jau arī prasu. Mēģināju arī abus pārveidot sql vaicājumā - nekādu rezultātu. Ar charsetiem nav nekādu problēmu. Varbūt tomēr kāds var ieteikt risinājumu? Quote Link to comment Share on other sites More sharing options...
Aleksejs Posted March 26, 2009 Report Share Posted March 26, 2009 Man šķiet, ka MySQL gadījumā ir jāskatās FULL TEXT SEARCH virzienā: http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html Quote Link to comment Share on other sites More sharing options...
aywars Posted March 26, 2009 Author Report Share Posted March 26, 2009 Nu šajā gadījumā man jāmeklē tikai projekti pēc to nosaukumiem, tāpēc fulltext-search man nešķiet, ka būs piemērots risnājums.. Via tiešām šim te nav reāli daudz maz vienkārša risinājuma? Quote Link to comment Share on other sites More sharing options...
mounkuls Posted March 26, 2009 Report Share Posted March 26, 2009 normāli, ja tabulai lauki ir _ci (case insensitive) kolācijas, tas notiek pats par sevi. Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted March 26, 2009 Report Share Posted March 26, 2009 domāju, ka problēma ir tā, ka lower funkcija tev šajā gadījumā neprot pārvērst Ā uz ā un sanāk 'vārds' LIKE '%vĀrds%' ... tikai minējums. izmanto case insensitive kodējumu, kas saprot latviešu burtus - utf8_general_ci vai latin_latvian_ci (? (biezpienu neēdu)) (ALTER TABLE ... utt.) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.