ОсновноеRadiotalkПользовательское
Общие вопросы по интернет радио вещанию
7   •   Посмотреть все темы

samPHPweb поиск. помогите с кириллицей

 

10
spryart @spryart
Привет, форумчане!
Сам не смог разобраться, поэтому решил написать сюда. В общем проблема такая:
На странице поиска из базы песен. Есть поиск по артисту и перечислен ряд английских букв. К сожалению когда кликаешь на одной из букв, то в результатах поиска выскакивают песни и на латинице и на кириллице вместе.

Как сделать отдельный ряд русских букв, чтобы искал только на кириллице. Либо подскажите как отбросить в результатах кириллицу при поиске английских артистов.

И если это для вас покажется легким, то вот еще пища для ума. Опять же проблема с кириллицей, когда вводишь слово на русском языке, то после нажатия кнопки поиска, русские буквы превращаются в непонятные иероглифы, но при это если слово встретилось в названии русских песен, то он их все выводит. Как избежать такое превращение буковок при нажатии на кнопку?

Желательно, привести готовые примеры на php. Или на чем там поиск осуществляется, либо подсказать странички где эта проблема обсуждалась и дано решение.

Извините за многословие (пытаюсь подробно описать проблему) и заранее спасибо, тем кто откликнутся.

0
410
Евгений @Drakkar
я бы тоже с удовольствием прочитал, как люди избавились от заразы под названием "когда вводишь слово на русском языке, то после нажатия кнопки поиска, русские буквы превращаются в непонятные иероглифы, но при это если слово встретилось в названии русских песен, то он их все выводит. Как избежать такое превращение буковок при нажатии на кнопку?"

0
6245
Тарас @tarasian666
наверно надо найти где идет запрос к базе в скритпе и задать mysql_query("SET NAMES latin1");

0
410
Евгений @Drakkar
  1. <?php
  2. // The class handling song info
  3. include_once('classes/class.song.php');
  4. if (ALLOW_REQUESTS) {
  5. // An array of song objects with the top requested songs
  6. $topRequestedSongs = Song::getTopRequestedSongs();
  7. }
  8. $start = Def('start', 0); // Where the playlist must start
  9. $limit = Def('limit', 16); // How many items will be displayed
  10. $search = Def('search'); // The search string
  11. $character = Def('character'); // The letter to sort the playlist by
  12. if ("All" == $character) {
  13. unset($character);
  14. }
  15. //########## BUILD SEARCH STRING ################
  16. $search_words = '';
  17. if ($search <> '') {
  18. $search_words = array();
  19. $temp = explode(' ', $search);
  20. reset($temp);
  21. while (list($key, $val) = each($temp)) {
  22. $val = trim($val);
  23. if (!empty($val)) {
  24. $search_words[] = $val;
  25. }
  26. }
  27. }
  28. // An array of song objects matching the search criteria
  29. $playlistSongs = Song::getPlaylistSongs($search_words, $character, $start, $limit);
  30. $cnt = Song::getPlaylistSongCount();
  31. //########## =================== ################
  32. $first = $start + 1;
  33. $last = min($cnt, $start + $limit);
  34. // Create the previous and next links based on the result
  35. if ($cnt > 0) {
  36. $searchstr = urlencode($search);
  37. $prev = max(0, $start - $limit);
  38. if ($start > 0) {
  39. $prevlnk = "<a href='?start=$prev&limit={$limit}&character=$character&search=$searchstr'>&lt;&lt; Предыдущая</a>";
  40. }
  41. $tmp = ($start + $limit);
  42. if ($tmp < $cnt) {
  43. $nextlnk = "<a href='?start=$tmp&limit={$limit}&character=$character&search=$searchstr'>Следующая &gt;&gt;</a>";
  44. }
  45. }


Извините, я правильно копаю... это где то тут надо добавить? Если да, то укажите кусочег, где :(

0
6245
Тарас @tarasian666
похоже что не тут, это надо сделать перед запросом в базу SELECT

0
10
spryart @spryart
Drakkar пишет:



Извините, я правильно копаю... это где то тут надо добавить? Если да, то укажите кусочег, где :(


Не знаю нужно еще или нет, но я докопался где кроется решение для этой части моего вопроса..

в директории samPHP лежит файлик \library\Common\form.php

В нём есть метод(функция)
  1.  
  2. function InputText($name, $data, $def = "", $size = 20) {
  3. FormatDefData($name, $data, $def);
  4. echo '<input type="text" name="' . $name . '" size="' . $size . '" value="' . htmlentities($data) . '">';
  5. }


дак вот последнюю строчку изменяем убрав в конце функцию htmlentities()
  1. echo '<input type="text" name="' . $name . '" size="' . $size . '" value="' . $data . '">';


тогда если ввести поиск на русском, то те же слова и остаются.
Мне это помогло.

0
201
burn @burn
Спасибо что решили поделиться с нами своим решением!

Успехов

0





Согласие на обработку данных на нашем сайте

Продолжая просматривать страницу, вы соглашаетесь с использованием файлов «Cookie» и с Политикой конфиденциальности «Privacy».
Наверху или внизу страницы вы можете изменить валюту и язык по умолчанию. Английская версия сайта ещё находится в доработке и доступна не полностью.