Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
поиск по алфавиту - не работает с русским. (Friendsys) 21/12/2004 - 13:39:13
      Re: Не работает с русским? Неверная настройка (Marat_L) 21/12/2004 - 14:20:20
      Re: Не работает с русским? Неверная настройка (Роман) 21/12/2004 - 14:29:58
      Re: поиск по алфавиту - не работает с русским. (serega) 11/01/2005 - 17:23:02

> Original message text:
> From: Friendsys - 21/12/2004 - 13:39:13
> Subject:поиск по алфавиту - не работает с русским.
> -----------------
> Делаю сайт киносервера. Нужен поиск по алфавиту. С английскими буквами проблем не возникло, но с русскими получается какая-то фигня. пример: в базе 2 записи (фильм1 и фильм2) в поле name. при поиске (href="<?php echo ($PHP_SELF) ?>?param=2&letter=Ф") все выводится, но: то же самое выводится на "Т", на "У" и на "Х", то есть две буквы "слева" и одна "справа" от искомой. В чем может быть проблема? запрос делаю следующий:
> if ($param==2) {
> $letter=$letter.'%';
> $query="SELECT * FROM movie WHERE name LIKE '".$letter."' ORDER BY name ASC LIMIT ".$from.", ".$post_per_page;
> }
>


From: serega - 11/01/2005 - 17:23:02
Subject:поиск по алфавиту - не работает с русским.
-----------------
лови пример, будут вопросы, обращайся - сам сюда залез по той же причине :)

Пример: (закомментированное не работает также как у тебя)
$letters = Array();
$rus_letters = Array();

$lat_filter_bar = "<p class=\"marg_l_r\"><span class=\"sm_font\" style=\"cursor:hand;\">[";
for ($j = 1; $j < 27; $j++)
{
$letters[$j] = chr($j+64);
$lat_filter_bar .= "<a href=\"memberlist.php?sort=".$j."&bar=lat\">".$letters[$j]."</a>".($j<26 ? ' | ' : '');

}
$lat_filter_bar .= " ]</span></p>";

$rus_filter_bar = "<p class=\"marg_l_r\"><span class=\"sm_font\" style=\"cursor:hand;\">[";
for ($j = 1; $j < 33; $j++)
{
$rus_letters[$j] = chr($j+191);
$rus_filter_bar .= "<a href=\"memberlist.php?sort=".$j."&bar=rus\">".$rus_letters[$j]."</a>".($j<32 ? ' | ' : '');
}
$rus_filter_bar .= " ]</span></p>";

$sort_by_letter = ( isset($HTTP_GET_VARS['sort']) ) ? intval($HTTP_GET_VARS['sort']) : 0;
$bar = ( isset($HTTP_GET_VARS['bar']) ? ("lat" == $HTTP_GET_VARS['bar'] ? 'lat' :("rus"==$HTTP_GET_VARS['bar'] ? 'rus' :'lat')) : "lat");
if ($sort_by_letter > 0 && $sort_by_letter < 33)
{
$sort_sql = "AND ASCII(UCASE(SUBSTRING(username FROM 1 FOR 1)))='".('lat' == $bar ? $sort_by_letter + 64 : $sort_by_letter + 191)."'";
//работает неправильно->//$sort_sql = "AND username like '".('lat' == $bar ? $letters[$sort_by_letter] : $rus_letters[$sort_by_letter])."%'";
$sort_letter = ('lat' == $bar ? $letters[$sort_by_letter] : $rus_letters[$sort_by_letter]);
}
else
{
$sort_sql = "";
$sort_letter = "";
}

как ты уже понял фишка в том чтобы сравнивать ASCII русских букв - они их однозначно слава богу определяют :)

(защити кстати переменные, если будешь использовать пример)


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
19483



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |