Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: поиск на сайте по mysql
Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008
Помог: 0 раз(а)
Как то давно делал поиск для одного сайта, вроде всё работало.
Сейчас вот потребовалось на очередной сайт сделать поиск, нашел этот скрипт.
Почему когда ввожу русские слова для поиска по mysql
то получаю ошибку:
Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008
Помог: 0 раз(а)
Ну а если проще! то почему вот такой код работает только с английскими буквами.
При вводе русских же получаю ошибку
mysql_fetch_array() expects parameter 1 to be resource, boolean given in search.php on line 5
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
sofck пишет:
Если добавляю в конфиг то ошибку не выдает но ничего не находит...((
Вероятно нужно установить не только кодировку MySQL-соединения - но также проверить кодировку самого PHP-скрипта и получаемых и отправляемых данных - ведь если их кодировка не совпадает то коды символов будут разные и поиск не получится Если кодировка действительно в определенных местах не совпадает то используйте iconv для перекодировки - а если используются регулярные выражения и сложные строковые функции но не забудьте поставить локаль
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
sofck
Отправлено: 14 Апреля, 2010 - 00:44:23
Гость
Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008
Помог: 0 раз(а)
JustUserR пишет:
sofck пишет:
Если добавляю в конфиг то ошибку не выдает но ничего не находит...((
Вероятно нужно установить не только кодировку MySQL-соединения - но также проверить кодировку самого PHP-скрипта и получаемых и отправляемых данных - ведь если их кодировка не совпадает то коды символов будут разные и поиск не получится Если кодировка действительно в определенных местах не совпадает то используйте iconv для перекодировки - а если используются регулярные выражения и сложные строковые функции но не забудьте поставить локаль
Скорей всего вы правы!!!
А случаем не могли бы подсказать функцию что бы он определяла в какой кодировке строка запроса и переводила её в кодировку удобную для базы если он отличаеться от нужной
JustUserR
Отправлено: 14 Апреля, 2010 - 09:04:10
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
sofck пишет:
Скорей всего вы правы!!! А случаем не могли бы подсказать функцию что бы он определяла в какой кодировке строка запроса и переводила её в кодировку удобную для базы если он отличаеться от нужной
Благодарю Сложность работы с кодировками заключается в том что формат передачи произвольных текстовых данных не предусматривает передачу с ним кодировки текста - то есть в общем случае определить ее невозможно разве что эврестически (По набору символов чтобы например они были кириллецей а не псевдографиков в выбираемой кодировке Но при раболе в web задача несколько упрощается - во-первых получаемую от пользователя кодировку можно посмотреть в accept-charset или же определять ее с помощью JS на клиентской сторооне и передавать с формой запроса Во-вторых при раболе с базой данных можно схитрить и полробовать получить collation таблицы который по сути и есть кодировка
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
sofck
Отправлено: 15 Апреля, 2010 - 10:22:20
Гость
Покинул форум
Сообщений всего: 94
Дата рег-ции: Сент. 2008
Помог: 0 раз(а)
Ну вообщем разобрался и вот что получилось.
По крайне мере работает нормально. Можно искать не только одно слово, с регистром тоже всё гуд, ну и с кодировкой тоже справляеться.
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Viper пишет:
Setlocale не есть хорошим решением. Хотя иногда и нужен.
Я бы с вами не согласился и рекоммендовал его использовать всегда - все зачастую проблемами при работе со строкомыми функциями и регулярными выражениями становится отсутствие установленной верной локали
Viper пишет:
А вот писать в запросах COLLATE это нехорошо
Если он подставляется автоматически функцией то ничего особенно плохого здесь нет - зато точно уверены что нет проблем ни с кодировкой передачи ни кодировкой хранения данных
sofck пишет:
Может кто нибудь внесет какие нибудь поправки или дополнения, то буду благодарен.
В идеале определять кодировку по collcation и всюду устанавливать ее при работе с БД - а потом с помощью iconv переводить в кодировку PHP-скрипта и выводимых данных согласно заголовку Content-type
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.