Доброй ночи, Гость! Представляем Вам наши форумы. Вы можете зарегистрироваться чтобы писать на форумах или зайдите под своим именем, если Вы уже регистрировались.
   
   


Форум
 CMS Status-X | Баги и ошибки
         Поиск - проблема с кодировкой

Похожие темы  |  Печать страницы

Поиск - проблема с кодировкой


События Вторник, 17.11.2009, 18:50

Odyssey

Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
Подскажите, как поправить это?


т.е. кириллицу не видит совсем и соответственно не подхватывает через ajax

Пользователь офлайн
События Вторник, 17.11.2009, 23:46

Status-X

Группа: Администратор
Cообщений: 3005
Регистрация: 23.10.2009
Город: Санкт-Петербург
Да был баг, поправил, выкладываю правленные файлы, замени их.
Исправление будет доступно скоро в альфе
Вложения
shop-bag.rar   (13 x загружено | 8 Кб)   



Пользователь офлайн
События Вторник, 17.11.2009, 23:58

Odyssey

Автор текущей темы
Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
спасибо, работает
сразу поправочку можно...
делает разделение по заглавным буквам и строчным, т.е. если слово в базе начинается с Заглавной, а в поисковой форме написана строчная, то его ajax не подхватит

ещё одна поправка
ajax подхватывает слово - выдает найденные фразы / слова в кавычках - выбираешь любое - но показать результат поиска не может ("К сожалению, поиск не дал результатов."), тоже самое но без кавычек - находит :)
Пользователь офлайн
События Среда, 18.11.2009, 00:34

Status-X

Группа: Администратор
Cообщений: 3005
Регистрация: 23.10.2009
Город: Санкт-Петербург
Цитата
Автор: Odyssey
спасибо, работает
сразу поправочку можно...
делает разделение по заглавным буквам и строчным, т.е. если слово в базе начинается с Заглавной, а в поисковой форме написана строчная, то его ajax не подхватит

ещё одна поправка
ajax подхватывает слово - выдает найденные фразы / слова в кавычках - выбираешь любое - но показать результат поиска не может ("К сожалению, поиск не дал результатов."), тоже самое но без кавычек - находит :)


А вообщето ща проверял у себя такого не вижу

Для аякса все буквы строчные строка 35
$q = strtolower($q);

По заглавным он не ищет.

Ковычки в поиске не учавствуют только показывают вхождение строка 54
if (strpos(strtolower($value), $q) !== false) echo stripslashes('"' . sysspecialchars($value)) . '"' . "\n";

Попробуй кеши почистить, у меня описанное тобой не подтверждается, и в любых вариантах работает поиск





Пользователь офлайн
События Среда, 18.11.2009, 00:45

Odyssey

Автор текущей темы
Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
кеши очищал - тоже самое, строчные отделяет от заглавных
>Ковычки в поиске не учавствуют только показывают вхождение строка 54
участвуют, тк переносятся в форму Расширенный поиск, мало того если ты выбираешь искомое то оно и в краткой форме поиска с кавычками !
Пользователь офлайн
События Среда, 18.11.2009, 01:26

Status-X

Группа: Администратор
Cообщений: 3005
Регистрация: 23.10.2009
Город: Санкт-Петербург
Цитата
Автор: Odyssey
кеши очищал - тоже самое, строчные отделяет от заглавных
>Ковычки в поиске не учавствуют только показывают вхождение строка 54
участвуют, тк переносятся в форму Расширенный поиск, мало того если ты выбираешь искомое то оно и в краткой форме поиска с кавычками !

Скобки переносятся если есть несколько вхождений и у меня все ищет.
У меня подозрение что у тебя локаль в этом файле криво передается, скорее всего особенность хостинга,
В ajax-shopsearch.php после define('BASE_DIR', $inc); 13 строка

вставь

PHP-код
$locale $_SESSION['lang'];
if(
$locale == 'ru') {
    @
setlocale(LC_ALL'ru_RU.CP1251''ru_RU.cp1251''rus_RUS.CP1251''Russian_Russia.1251''ru_RU''ru''russian');
} else {
    @
setlocale(LC_ALL$locale strtoupper($locale), $locale);
}


Будем на тебе тренироваться, иначе никак у меня все пучком работает, так как по умолчанию 1251 локаль стоит





Пользователь офлайн
События Среда, 18.11.2009, 01:47

Odyssey

Автор текущей темы
Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
с исправлением тоже самое, см. прикрепленный файл
PHP-код
$locale $_SESSION['lang']; 
if(
$locale == 'ru') { 
    @
setlocale(LC_ALL'ru_RU.CP1251''ru_RU.cp1251''rus_RUS.CP1251''Russian_Russia.1251''ru_RU''ru''russian'); 
} else { 
    @
setlocale(LC_ALL$locale strtoupper($locale), $locale); 
}

Вложения
Project001.rar   (9 x загружено | 228,1 Кб)   
Пользователь офлайн
События Среда, 18.11.2009, 01:55

Odyssey

Автор текущей темы
Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
заметил ещё одно
не обрабатывается знак "*"
Вложения
Project002.rar   (5 x загружено | 162,1 Кб)   
Пользователь офлайн
События Среда, 18.11.2009, 02:01

Odyssey

Автор текущей темы
Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
если раскладка английская - обрабатываются и строчные и заглавные, если русская - только Заглавные
локаль точно есть такая ru_RU.CP1251
Пользователь офлайн
События Среда, 18.11.2009, 02:12

Status-X

Группа: Администратор
Cообщений: 3005
Регистрация: 23.10.2009
Город: Санкт-Петербург
$q = preg_replace('/[^:-A-Za-zА-Яа-яЁё0-9_. ]/', '', win1251(@$_REQUEST['q'])); только эти символы доступны при вводе:-A-Za-zА-Яа-яЁё0-9_. и пробел
$q = strtolower($q); однозначно не срабатывает функция strtolower

Но на всяк случай давай убедимся что это так
после$q = strtolower($q);
добавь
echo $q;
и впиши в строку поиска слово заглавными, она должна выводить все что пишешь но в нижнем регистре

У тебя кстати приветствие в админ панели соответствует образцу?
Все что у тебя в ролике не срабатывает у меня пашет, бум думать



Пользователь офлайн
События Среда, 18.11.2009, 02:35

Odyssey

Автор текущей темы
Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
PHP-код
$q strtolower($q);
echo 
$q;

вообще не работает

p.s. извиняюсь за задержку - дети
Вложения
Project003.rar   (4 x загружено | 122,4 Кб)   
Пользователь офлайн
События Среда, 18.11.2009, 02:40

Status-X

Группа: Администратор
Cообщений: 3005
Регистрация: 23.10.2009
Город: Санкт-Петербург
Так попробуй
PHP-код
$locale $_SESSION['lang'];
if(
$locale == 'ru') {
    @
setlocale(LC_ALL'ru_RU.CP1251''ru_RU.cp1251''rus_RUS.CP1251''Russian_Russia.1251''ru_RU''ru''russian');
} else {
    @
setlocale(LC_ALL$locale strtoupper($locale), $locale);
}


вставь после
session_start();
session_name('SID');

Предыдущий вариант не верный, вызываю данные из сессии до ее старта
Иногда и я торможу, спать больше надоРжу нимагу



Пользователь офлайн
События Среда, 18.11.2009, 02:42

Odyssey

Автор текущей темы
Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
Цитата

У тебя кстати приветствие в админ панели соответствует образцу?


Контрольная фраза "Добро Пожаловать в панель управления! Дата: Среда, 18 Ноябрь, 2009 г. Время: 02-40" все в норме.
Пользователь офлайн
События Среда, 18.11.2009, 02:49

Odyssey

Автор текущей темы
Группа: Пользователь
Ранг: Мастер
Cообщений: 566
Регистрация: 29.10.2009
PHP-код
<?php
if(defined('BASE_DIR')) exit;
$inc substr(dirname(__FILE__), 0, -6);
define('BASE_DIR'$inc);
$locale $_SESSION['lang']; 
if(
$locale == 'ru') { 
    @
setlocale(LC_ALL'ru_RU.CP1251''ru_RU.cp1251''rus_RUS.CP1251''Russian_Russia.1251''ru_RU''ru''russian'); 
} else { 
    @
setlocale(LC_ALL$locale strtoupper($locale), $locale); 
}
include_once(
BASE_DIR '/lib/sysinit.php');
include_once(
BASE_DIR '/config/db.config.php');
include_once(
BASE_DIR '/class/Class.DB.php');
include_once(
BASE_DIR '/functions/Func.Session.php');
session_start();
session_name('SID');
$handlec opendir(BASE_DIR '/functions/');
while (
$file readdir ($handlec)){
    if(
$file{0} != '.') {
        if(
is_file(BASE_DIR '/functions/'.$file)) {
            include_once(
BASE_DIR '/functions/'.$file);
        }
    }
}
closedir($handlec);
define("PREFIX"$config['dbprefix']);
$GLOBALS['db'] = new DB($config['dbhost'], $config['dbuser'], $config['dbpass'], $config['dbname']);
$LC = @$_SESSION['Langcode'];
header('Content-type: text/html; charset='.$_SESSION['Charset']);
define('AJAX_OUTPUT',1);
$q preg_replace('/[^:-A-Za-zА-Яа-яЁё0-9_. ]/'''win1251(@$_REQUEST['q']));
$q strtolower($q);
session_start();
session_name('SID');
if (!
$q) return;
$res = array();
$result $GLOBALS['db']->Query("SELECT
        a.Titel_
{$LC} AS Name FROM 
        " 
PREFIX "_shop_produkte as a,
        " 
PREFIX "_shop_kategorie as b WHERE  
        a.Kategorie = b.Id 
        AND b.Aktiv = '1'
        AND a.Titel_
{$LC} LIKE '%" $q "%' 
        AND a.Aktiv='1' 
        AND ( (a.Gruppen = '') OR (a.Gruppen LIKE '%,
$_SESSION[user_group]') OR (a.Gruppen LIKE '$_SESSION[user_group],%') OR (a.Gruppen LIKE '%,$_SESSION[user_group],%') OR (a.Gruppen = '$_SESSION[user_group]')) 
    ORDER BY a.Titel_
{$LC} ASC LIMIT 45 ");

while(
$row $result->fetchrow()) {
    
array_push($res$row->Name);
}

foreach (
$res as $key=>$value) {
    if (
strpos(strtolower($value), $q) !== false) echo stripslashes('"' sysspecialchars($value)) . '"' "\n";
}
?>

Вложения
Project004.rar   (6 x загружено | 116,6 Кб)   
Пользователь офлайн
События Среда, 18.11.2009, 02:59

Status-X

Группа: Администратор
Cообщений: 3005
Регистрация: 23.10.2009
Город: Санкт-Петербург
нет вот так
PHP-код
if(defined('BASE_DIR')) exit;
$inc substr(dirname(__FILE__), 0, -6);
define('BASE_DIR'$inc);

include_once(
BASE_DIR '/lib/sysinit.php');
include_once(
BASE_DIR '/config/db.config.php');
include_once(
BASE_DIR '/class/Class.DB.php');
include_once(
BASE_DIR '/functions/Func.Session.php');

session_start();
session_name('SID');

$locale $_SESSION['lang'];
if(
$locale == 'ru') {
    @
setlocale(LC_ALL'ru_RU.CP1251''ru_RU.cp1251''rus_RUS.CP1251''Russian_Russia.1251''ru_RU''ru''russian');
} else {
    @
setlocale(LC_ALL$locale strtoupper($locale), $locale);
}

$handlec opendir(BASE_DIR '/functions/');
while (
$file readdir ($handlec)){
    if(
$file{0} != '.') {
        if(
is_file(BASE_DIR '/functions/'.$file)) {
            include_once(
BASE_DIR '/functions/'.$file);
        }
    }
}
closedir($handlec);

define("PREFIX"$config['dbprefix']);
$GLOBALS['db'] = new DB($config['dbhost'], $config['dbuser'], $config['dbpass'], $config['dbname']);
$LC = @$_SESSION['Langcode'];
header('Content-type: text/html; charset='.$_SESSION['Charset']);
define('AJAX_OUTPUT',1);
$q preg_replace('/[^:-A-Za-zА-Яа-яЁё0-9_. ]/'''win1251(@$_REQUEST['q']));
$q strtolower($q);
if (!
$q) return;
$res = array();
$result $GLOBALS['db']->Query("SELECT
        a.Titel_
{$LC} AS Name FROM 
        " 
PREFIX "_shop_produkte as a,
        " 
PREFIX "_shop_kategorie as b WHERE  
        a.Kategorie = b.Id 
        AND b.Aktiv = '1'
        AND a.Titel_
{$LC} LIKE '%" $q "%' 
        AND a.Aktiv='1' 
        AND ( (a.Gruppen = '') OR (a.Gruppen LIKE '%,
$_SESSION[user_group]') OR (a.Gruppen LIKE '$_SESSION[user_group],%') OR (a.Gruppen LIKE '%,$_SESSION[user_group],%') OR (a.Gruppen = '$_SESSION[user_group]')) 
    ORDER BY a.Titel_
{$LC} ASC LIMIT 45 ");

while(
$row $result->fetchrow()) {
    
array_push($res$row->Name);
}

foreach (
$res as $key=>$value) {
    if (
strpos(strtolower($value), $q) !== false) echo stripslashes('"' sysspecialchars($value)) . '"' "\n";
}

И после измения файла открывай страницу в новом окне, иначе изменения не отражаются
Кстати чем пишешь ролики? Что за софтина?


Пользователь офлайн


Похожие темы  |  Печать страницы  |   Предыдущая тема  |   Следующая тема

Быстрый переход:  
 

 Сейчас на сайте


Пользователей: 0, Гостей: 2

Поисковые боты: 5
Yandex, BingBot, Unknown Bot, Inktomi Slurp, oBot

 Статистика форума


  Темы Сообщения Пользователи
За сутки:
За неделю:
За месяц:
Всего:
Мы приветствуем нового участника: Lesya

 Дни рождения


alex.gladchenko (48), Юрик (39)
Печать | Copyright © 2009 - 2016 Status-X All rights reserved | Powered by CMS Status-X 1.05 | Контакты