![]() |
ВходЗдравствуйте, Гость ( Вход | Регистрация )
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() |
Jul 8 2011, 22:31
Сообщение
#1
|
|
|
Юзверь Группа: Пользователи Сообщений: 38 Регистрация: 1.5.2008 Пользователь №: 3,547 Спасибо сказали: 0 Вставить ник |
Люди кто знает как сделать поиск стандартный без учета регистра?????
|
|
|
|
Jul 9 2011, 10:21
Сообщение
#2
|
|
|
Живу на АС Группа: Пользователи Сообщений: 714 Регистрация: 10.6.2008 Из: Тольятти Пользователь №: 4,176 Спасибо сказали: 197 Вставить ник |
Я знаю. Тебя какой конкретно участок кода интересует?
Запрос к БД? Если да, то используя LIKE '%ТвоЙ тЕкСт%' все равно что LIKE '%твой текст%' |
|
|
|
Jul 9 2011, 16:45
Сообщение
#3
|
|
|
Фэнат Stamina-ы Группа: Разработчики Сообщений: 2,572 Регистрация: 6.7.2007 Из: (-: Украина :-) Пользователь №: 268 Спасибо сказали: 946 Вставить ник |
street
будет ли учитываться регистр, опреляется кодировкой поля. Если кодировка заканчивается на "_ci" (Case Insensitive) - регистр символов не будет учитываться. Если же поставить "_cs" (Case Sensitive) - регистр символов БУДЕТ учитываться. |
Sunvas, Вас 1 раз(а) поблагодарили за это сообщение: vitalik1972 | |
|
|
|
Jul 10 2011, 02:53
Сообщение
#4
|
|
|
Юзверь Группа: Пользователи Сообщений: 38 Регистрация: 1.5.2008 Пользователь №: 3,547 Спасибо сказали: 0 Вставить ник |
по ответу sunvas ничего не понял(((( меня интерисует когда в форму ввода искомого текста вводишь текст, он искал все без учата регистра.... сейчас если название новости с большой а искать его с маленькой, он не ищет....
|
|
|
|
Jul 10 2011, 17:20
Сообщение
#5
|
|
|
Живу на АС Группа: Пользователи Сообщений: 714 Регистрация: 10.6.2008 Из: Тольятти Пользователь №: 4,176 Спасибо сказали: 197 Вставить ник |
Санвас тебе очень четко ответил. Посмотри кодировку полей в своих таблицах, по которым делается поиск
|
|
|
|
Jul 11 2011, 01:18
Сообщение
#6
|
|
|
Юзверь Группа: Пользователи Сообщений: 38 Регистрация: 1.5.2008 Пользователь №: 3,547 Спасибо сказали: 0 Вставить ник |
стоит cp1251_general_ci
|
|
|
|
Jul 11 2011, 08:29
Сообщение
#7
|
|
|
Продвинутый юзверь Группа: Пользователи Сообщений: 54 Регистрация: 29.1.2008 Из: Кубинка-8 Пользователь №: 2,152 Спасибо сказали: 8 Вставить ник |
street ну так Sunvas и написал тебе...
Если кодировка заканчивается на "_ci" (Case Insensitive) - регистр символов не будет учитываться. Если же поставить "_cs" (Case Sensitive) - регистр символов БУДЕТ учитываться. У тебя суффикс _ci, следовательно регистр символов не будет учитываться... Куда уж понятнее... |
|
|
|
Jul 11 2011, 11:35
Сообщение
#8
|
|
|
Юзверь Группа: Пользователи Сообщений: 38 Регистрация: 1.5.2008 Пользователь №: 3,547 Спасибо сказали: 0 Вставить ник |
так втом то и дело что не должен учитыватся, а он учитуется..
|
|
|
|
Jul 17 2011, 12:33
Сообщение
#9
|
|
|
Я только смотрю... Группа: Пользователи Сообщений: 4 Регистрация: 17.7.2011 Пользователь №: 11,190 Спасибо сказали: 0 Вставить ник |
Мда. Вот так и выростает поколение программистов, которые сидят на шиндошсе и не читают мануалы. Приставка _ci не делает регистровых различий внутри данных, а то, что приходит в строке поиска - не внутренние данные, если что.
Решается одним запросом, просто приводя весь текст к единому регистру, в данном случае - к нижнему. Native SQL КОД SELECT field FROM table_name WHERE LOWER(field) like '%Текст%' PHP КОД $query = "SELECT * FROM table_name WHERE LOWER(name) LIKE "%".strtolower($name)."%" ";
|
|
|
|
Jul 21 2011, 19:45
Сообщение
#10
|
|
|
Юзверь Группа: Пользователи Сообщений: 38 Регистрация: 1.5.2008 Пользователь №: 3,547 Спасибо сказали: 0 Вставить ник |
помогите переделать запрос, что бы он не учитывал регист
КОД $result = $db->sql_query("SELECT s.sid, s.name, s.title, s.time, s.hometext, s.bodytext, c.id, c.title, u.user_name FROM ".$prefix."_stories AS s LEFT JOIN ".$prefix."_categories AS c ON (s.catid=c.id) LEFT JOIN ".$prefix."_users AS u ON (s.uid=u.user_id) WHERE s.time <= now() AND s.status!='0' AND (s.title LIKE '%".$word."%' OR s.hometext LIKE '%".$word."%' OR s.bodytext LIKE '%".$word."%') ORDER BY s.time DESC");
|
|
|
|
Aug 27 2011, 08:20
Сообщение
#11
|
|
|
Юзверь Группа: Пользователи Сообщений: 38 Регистрация: 1.5.2008 Пользователь №: 3,547 Спасибо сказали: 0 Вставить ник |
вобщем все что было посоветовано не подходит..... точнее ищет без учета регистра только в самом контенте, в названих нет. Методом проб и ошибок нашел в чем запара. По умолчанию почему-то табилицы "title" имеют тип данных varbinary(версия системы 4.3.1 NEXT).
И так решение: Идем в phpmyadmin-выбираем таблицу(например новостей(stories))- нажимаешм структура - нажимаем изменить(напротив title) и выбираем "Тип - TEXT" дальше ставим сравнение у кого как(utf8 или cp1251), но с окончанием _general_ci, пример "ваша кодировка_general_ci". Как ни странно поиск начал нормально искать в заголовках....=))) |
|
|
|
![]() ![]() |
|
Текстовая версия | Сейчас: 4 October 2011 - 12:04 |