1

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

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

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

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

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

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

2

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

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

3

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

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

4

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

<?php

// The class handling song info
include_once('classes/class.song.php');

if (ALLOW_REQUESTS) {
    // An array of song objects with the top requested songs
    $topRequestedSongs = Song::getTopRequestedSongs();
}

$start = Def('start', 0);    // Where the playlist must start
$limit = Def('limit', 16);    // How many items will be displayed
$search = Def('search');    // The search string
$character = Def('character'); // The letter to sort the playlist by
if ("All" == $character) {
    unset($character);
}


//########## BUILD SEARCH STRING ################
$search_words = '';
if ($search <> '') {
    $search_words = array();
    $temp = explode(' ', $search);
    reset($temp);
    while (list($key, $val) = each($temp)) {
        $val = trim($val);
        if (!empty($val)) {
            $search_words[] = $val;
        }
    }
}

// An array of song objects matching the search criteria
$playlistSongs = Song::getPlaylistSongs($search_words, $character, $start, $limit);
$cnt = Song::getPlaylistSongCount();

//########## =================== ################
$first = $start + 1;
$last = min($cnt, $start + $limit);

// Create the previous and next links based on the result
if ($cnt > 0) {
    $searchstr = urlencode($search);
    $prev = max(0, $start - $limit);
    if ($start > 0) {
        $prevlnk = "<a href='?start=$prev&limit={$limit}&character=$character&search=$searchstr'>&lt;&lt; Предыдущая</a>";
    }

    $tmp = ($start + $limit);
    if ($tmp < $cnt) {
        $nextlnk = "<a href='?start=$tmp&limit={$limit}&character=$character&search=$searchstr'>Следующая &gt;&gt;</a>";
    }
}

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

5

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

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

6

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

пишет Drakkar:

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

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

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

В нём есть метод(функция)

function InputText($name, $data, $def = "", $size = 20) {
    FormatDefData($name, $data, $def);
    echo '<input type="text" name="' . $name . '" size="' . $size . '" value="' . htmlentities($data) . '">';
}

дак вот последнюю строчку изменяем убрав в конце функцию htmlentities()

echo '<input type="text" name="' . $name . '" size="' . $size . '" value="' . $data . '">';

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

7

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

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

Успехов