1

Тема: Помогите разрешить войну между кодировками joomla и samphpweb

Доброго вечера, уважаемые форумчане!

Замыслил я дело благородное - вывести на свой сайт, построенный на cms Joomla 1.5 (к сожалению, с более новыми версиями так и не смог найти взаимопонимания), модуль, показывающий 3 трека. которые будут играть в ближайшее время, с учетом треков, которые были заказаы через samphpweb.

Для осуществления данной операции я сделал следующее:

1) Поставил Sam Broadcaster на серверную машину и прикрутил его БД MySql со сравнением utf8_general_ci

2) Установил samphpweb на сайт ( под управлением XAMPP). Папку samphpweb переименовал в request

3) Создал в папке request\web файл current.php. Его код привожу ниже

<?php

try {
    // Get the configuration
    require_once('../config/config.php');

    // Get the code for this page
    require_once('../code/code.playing.php');

    // Get the display for this page
    require_once('../display/display.current.php');

} catch (Exception $ex) {
    // The error page will be displayed if anything goes wrong above
    $message = $ex->getMessage();
    require_once('../display/display.error.php');
}

4) Создал в папке \request\display файл display.current.php. Его код привожу ниже

<meta http-equiv="Refresh" content="5" />
<?php if(is_array($comingSongs) && count($comingSongs)>0) : ?>
            <div id="coming-up_wrapper">
                <div id="coming-up">
                    <table cellpadding="0" cellspacing="0">
                        <tbody>
                            <tr>
                                <td>
                                    <?php
                                        $counter = 1;
                                        $doCounter = count($comingSongs) > 1;
                                        foreach ($comingSongs as $comingSong): ?>
                                        <div>                                            
                                                <?php echo $comingSong->artist; ?>
                                                <?php if(!empty($comingSong->artist)) : ?> - <?php echo $comingSong->title; ?> <?php endif; ?>
                                        <?php if($comingSong->isRequested): ?>
                                            (Заказ)
                                        <?php endif; ?>
                                        </div>
                                        <hr>
                                    <?php endforeach; ?>
                                    <hr style="width:100%;border:none;"/>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
            <?php endif; ?>

После проверки - выяснилось, что страница http://strannik.zapto.org/request/web/current.php Правильно и коллектно отображает информацию, причем как на английском, так и на русском языке.

http://s006.radikal.ru/i213/1211/e9/84bd50bd4bf7.png

После этого я разместил эту информацию на сайте, используя модуль wrapper. Однако, на сайте, правильно и корректно стали отображаться только английские буквы.

http://s001.radikal.ru/i196/1211/b4/568dd66583d0.png

Я сразу понял, что дело в кодировке Joomla. Однако, все мои попытки устранить неполадку не увенчались успехом.

Прошу помощи, ибо на решение проблемы уже ушло 2 бессонных ночи. Жуть как хочется спать...

Отредактировано MisTERR (10-11-2012 18:50:22)

2

Re: Помогите разрешить войну между кодировками joomla и samphpweb

Итак, решение!

В файлах current.php и display.current.php, сразу после

<?php 

  вставьте

header('Content-Type: text/html; charset=windows-1251');

Должно получиться примерно так

<?php
header('Content-Type: text/html; charset=windows-1251');
try {
    // Get the configuration
    require_once('../config/current.php');

...

По поводу автообновления. В файле display.current.php вставьте в начало следующий код.

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
setInterval("jQuery('#timeA').load('# dl#timeB');",5000);
});
</script>
<dl id="timeA"><dl id="timeB">

<!-- Сюда вставить код -->

</dl></dl>

Еще раз большое спасибо за помощь Leff27.

Модератора прошу закрыть тему.

Отредактировано MisTERR (11-11-2012 16:02:11)

3

Re: Помогите разрешить войну между кодировками joomla и samphpweb

Скажи пожалуйста, как ты тут http://strannik.zapto.org/request/web/playlist.php  реализовал поиск РУССКОЯЗЫЧНЫХ треков? ?

4

Re: Помогите разрешить войну между кодировками joomla и samphpweb

у меня он сразу работал smile скачивал перевод samphpweb от deamon'a smile

5

Re: Помогите разрешить войну между кодировками joomla и samphpweb

пишет MoD_X:

у меня он сразу работал smile скачивал перевод samphpweb от deamon'a smile

а где можно посмотреть? А где можно скачать?:)

6

Re: Помогите разрешить войну между кодировками joomla и samphpweb

я 2 года назад тут нашёл, _http://www.soundcoder.com и не "Deamon" а "Demon" smile

Отредактировано MoD_X (17-11-2012 16:25:36)

7

Re: Помогите разрешить войну между кодировками joomla и samphpweb

Народ, вод код моего поиска;

<!-- BEGIN:SEARCH -->
            <div id="search">
            <form method="get" action="playlist.php" name="searchParameters">
            Поиск: <?php InputText('search', $search, '',50); ?>
            <input type="submit" value="Go" name="B1" />
            Показывать по <?php InputCombo('limit', $limit, 50, '25,50,100', "", "document.forms.searchParameters.submit();"); ?> результатов

Я так понял, где-то надо применить iconv("cp1251","UTF-8" ..... чтоб находил русскоязычные треки по поиску?

8

Re: Помогите разрешить войну между кодировками joomla и samphpweb

пишет Drakkar:

Народ, вод код моего поиска;

<!-- BEGIN:SEARCH -->
            <div id="search">
            <form method="get" action="playlist.php" name="searchParameters">
            Поиск: <?php InputText('search', $search, '',50); ?>
            <input type="submit" value="Go" name="B1" />
            Показывать по <?php InputCombo('limit', $limit, 50, '25,50,100', "", "document.forms.searchParameters.submit();"); ?> результатов

Я так понял, где-то надо применить iconv("cp1251","UTF-8" ..... чтоб находил русскоязычные треки по поиску?

В playlist.php

9

Re: Помогите разрешить войну между кодировками joomla и samphpweb

пишет azatxaker:

пишет Drakkar:

Народ, вод код моего поиска;

<!-- BEGIN:SEARCH -->
            <div id="search">
            <form method="get" action="playlist.php" name="searchParameters">
            Поиск: <?php InputText('search', $search, '',50); ?>
            <input type="submit" value="Go" name="B1" />
            Показывать по <?php InputCombo('limit', $limit, 50, '25,50,100', "", "document.forms.searchParameters.submit();"); ?> результатов

Я так понял, где-то надо применить iconv("cp1251","UTF-8" ..... чтоб находил русскоязычные треки по поиску?

В playlist.php

У меня там только вот это:

<?php

try {
    // Get the configuration
    require_once('../config/config.php');

    // Get the code for this page
    require_once('../code/code.playlist.php');

    // Get the display for this page
    require_once('../display/display.playlist.php');

} catch (Exception $ex) {
    // The error page will be displayed if anything goes wrong above
    $message = $ex->getMessage();
    require_once('../display/display.error.php');

10

Re: Помогите разрешить войну между кодировками joomla и samphpweb

code.playlist.php или тут display.error.php с новым samphp не работал smile

11

Re: Помогите разрешить войну между кодировками joomla и 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', 25);    // 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>";
    }
}