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

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

 

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

Замыслил я дело благородное - вывести на свой сайт, построенный на 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; ?>


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



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



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

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

Отредактировано MisTERR - 10.11.2012
43
MisTERR @MisTERR
Итак, решение!

В файлах 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
410
Евгений @Drakkar
Скажи пожалуйста, как ты тут ********** реализовал поиск РУССКОЯЗЫЧНЫХ треков? ?

123
Максим @MoD_X
у меня он сразу работал :) скачивал перевод samphpweb от deamon'a :)

410
Евгений @Drakkar
MoD_X пишет:

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

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

123
Максим @MoD_X
я 2 года назад тут нашёл, _http://www.soundcoder.com и не "Deamon" а "Demon" :)

Отредактировано MoD_X - 17.11.2012
410
Евгений @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" ..... чтоб находил русскоязычные треки по поиску?

89
Azat @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

410
Евгений @Drakkar
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');

123
Максим @MoD_X
code.playlist.php или тут display.error.php с новым samphp не работал :)

410
Евгений @Drakkar
Кажись где-то тут?
<?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>";
}
}