Кодировка убивает сосвсем, хелп

6666
На сайте с 10.01.2005
Offline
505
633

Перевел все, вообще все в utf-8. В БД три таблицы. Все в одной кодировке.

Страница хтмл тоже в utf-8

А получается такая хрень:

http://surrealism.ru/easy/

Когда скрипт берет текст из первой, то все ок, а когда из второй таблицы (результат теста) то кракозюли. Почему и что за хрень и как с этим бороться?

В самой таблице текст и там и там читается. Забавно, что в третьей таблице читается кракозюлями, но второй инклуд (справа в столбике) и их читает нормально.

Чо-чо делать?

Где прячется часть, которая берет из второй таблицы и как ее поправить?

<?

include 'config.php';

$mysql=mysql_connect($mysql_host,$mysql_login,$mysql_pass);
mysql_select_db($mysql_db);
mysql_query("set names utf8",$mysql);
$query=mysql_query("SELECT * FROM questions");
$i=1;
while ($result=mysql_fetch_array($query))
{
$question[$i][text]=$result[1];
$question[$i][1]=$result[2];
$question[$i][2]=$result[3];
$question[$i][3]=$result[4];
$question[$i][4]=$result[5];
$question[$i][5]=$result[6];
$question[$i][6]=$result[12];
$question[$i][p1]=$result[7];
$question[$i][p2]=$result[8];
$question[$i][p3]=$result[9];
$question[$i][p4]=$result[10];
$question[$i][p5]=$result[11];
$i++;
}
mysql_close($mysql);
//выдача вопроса по запросу ajax
if ($_POST[q]>0 && $_POST[get_ajax]==1)
{

$q=$_POST[q];
echo <<<HTML
<p align='center'>
<img src='./{$img_folder}/{$question[$q][6]}'><br /><br />
{$question[$q][text]}<br /><br /><br />
</p>
<p align='left'>
<input type='radio' name='answer' id='ans1' value='{$question[$q][p1]}'>{$question[$q][1]}<br />
<input type='radio' name='answer' id='ans2' value='{$question[$q][p2]}'>{$question[$q][2]}<br />
<input type='radio' name='answer' id='ans3' value='{$question[$q][p3]}'>{$question[$q][3]}<br />
<input type='radio' name='answer' id='ans4' value='{$question[$q][p4]}'>{$question[$q][4]}<br />
<input type='radio' name='answer' id='ans5' value='{$question[$q][p5]}'>{$question[$q][5]}<br />
</p>
HTML;
die();
}
//выдача результат по запросу ajax + добавление в топ
if ($_POST[points] && $_POST[get_ajax]==1 && $_POST[nick])
{

$points=$_POST[points];
$nick=iconv("utf-8","utf-8",$_POST[nick]);
$mysql=mysql_connect($mysql_host,$mysql_login,$mysql_pass);
mysql_select_db($mysql_db);
$query=mysql_fetch_assoc(mysql_query("SELECT * FROM results WHERE '$points'>=from_points AND '$points'<to_points"));
echo "<p align='center'><img src='./$img_folder/$query

//добавление в топ
$query=mysql_fetch_row(mysql_query("SELECT count(*) FROM `top`"));
if ($query[0]>=$top_max)
{
$query=mysql_fetch_assoc(mysql_query("SELECT * FROM `top` ORDER BY RESULT ASC LIMIT 1"));
if ($points > $query[result]) mysql_query("UPDATE top SET nick='$nick',result='$points' WHERE id='$query[id]'");
}
else
{mysql_query("INSERT INTO top VALUES ('','$nick','$points')");}
mysql_close($mysql);
die();
}
?>
<script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
<script>
nick='';
q=0;
points=0;
////////////////////////////////////////////////
function next() {
if ( $('#nick').length ) nick=$('#nick').val();
if($("input[type='radio']").filter(':checked').size()==0 && q>0) {alert('zapolni!');die;}
if($("#nick").val()=='' && q==0) {alert('ds,thb!');die;}
if (q<=<?=$questions_count;?>) {q++;}
add_points=parseInt($(":radio[name='answer']").filter(":checked").val());
for (var i=0;i<add_points;i++){points++;}
get_content(q);
}
///////////////////////////////////////////////
function get_content(q) {
if (q<=<?=$questions_count;?>) {
$.post('main.php', {q:+q,get_ajax:"1"}, function(response){$('#content').html(response);});
}
else {$('#next').remove();get_result(points);}
}
//////////////////////////////////////////////
function get_result(points) {
$.post('main.php', {points:points,get_ajax:"1",nick:nick}, function(response){$('#content').html(response);});
}
</script>

<div id='content'>
<p align='center'>
<img src='<?='./'.$img_folder.'/'.$start_pic;?>'?>'><br />
***1074;***1074;***1077;***1076;***1080;***1090;***1077; ***1085;***1080;***1082;
:
<input type='text' id='nick'><br />
</p>
</div>
<p align='center'><input type='button' id='next' value=' ***1076;***1072;***1083;***1100;***1096;***1077;> ' onCLick="next();"></p>
<p align='center'>***1076;***1072;***1083;***1100;***1096;***1077;</p>
<p align='center'>***1088;***1077;***1079;***1091;***1083;***1100;***1090;***1072;***1090;***1099;</p>" />

Каждое мое сообщение проверила и одобрила Елена Летучая. (c) Для меня очень важно все что Вы говорите! (http://surrealism.ru/123.mp3) .
C
На сайте с 04.02.2005
Offline
291
#1

везде где подключаетесь проверьте

mysql_set_charset

TriggerLab
На сайте с 27.11.2011
Offline
39
#2

найди строчку:

$query=mysql_fetch_assoc(mysql_query("SELECT * FROM results WHERE '$points'>=from_points AND '$points'<to_points"));

выше вставь:

mysql_query("set names utf8",$mysql);

Раздаю хостинг
6666
На сайте с 10.01.2005
Offline
505
#3

Chukcha, везде - это где? Все что вижу:

mysql_query("set names utf8",$mysql);

куда (и как) вставить mysql_set_charset ?

---------- Добавлено 12.05.2012 в 11:38 ----------

TriggerLab:
найди строчку:

Во! Рулез! Работает!

---------- Добавлено 12.05.2012 в 11:39 ----------

Славься Онотолеэ!1 :)

T
На сайте с 11.08.2005
Offline
181
#4

Еще можете обратить внимание на то, какая кодировка у полей таблицы.

Так как может быть общая кодировка таблицы одна, а у полей другая.

Тогда тоже возникают подобные проблемы.

6666
На сайте с 10.01.2005
Offline
505
#5

Timen, да, спасибо. Поля я тоже смотрел. Но теперь уже в силу вступил первый закон роботехники - "Работает - не трогай!" ))

C
На сайте с 04.02.2005
Offline
291
#6

так как задача решена, то объясню, на пальцАх.

mysql_query("set names utf8",$mysql); - это вы сами делает запрос в систему.

mysql_set_charset - устанавливает charset на уровне системы.

лично у меня доверия ко второму подходу больше.

У Вас в двух местах происходит коннект к базе (пусть даже и блоки разделены функционально). Потому у вас и возникла проблема.

Был бы один коннект - и вопроса бы не возникло.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий