Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Передача данных в таблицу


Автор: AGENTxXx 14.4.2011, 08:20
Добрый день! Такая проблема: При передаче через форму с методом POST данных в таблицу они сохраняются в спец символах, типа такого Программист. В Итоге, получается что каждый кириллический символ (в данном случае русский) сохраняется с помощью 2х этих каракуль. И чтение данных через таблицу становится невозможным. Если работать в самой панели phpmyadmin и заполнять таблицу - то данные на русском нормально отображаются.. Я как понимаю это из за не соответствии кодировок. Но я уже во многих вариантах сохранял - все равно такая хрень. На локальном компе с апачем нормально все работает. Посмотрел везде, и у меня и на сервере формат UTF-8 Unicode. Все страницы в UTF-8 сохранял - все равно. Проверял передачу через $_POST - данные передаются не искаженно, а сохраняются вот - искаженно. Подскажите что можно с этим сделать?

Автор: ayax2005 14.4.2011, 10:18
попробуйте сделать setnames utf8

Автор: AGENTxXx 14.4.2011, 13:41
Попробовал(((( Ни какого результата((( Еще прикол в том, что если в phpmyadmin все пишешь по русски, то на сайте выдается все в знаках вопроса... Может еще есть какие то решения? Как то в лом под все таблицы админку писать(((

Автор: bars80080 14.4.2011, 13:50
это проблема кривой настройки пхпмайадмин, где-то там не проставлено, либо неправильно проставлен set names
обычно решается использованием собственной админки, либо альтернативной пхпмайадмину, где всё кристально чётко видно

Автор: skyboy 14.4.2011, 14:46
Цитата(ayax2005 @  14.4.2011,  09:18 Найти цитируемый пост)
setnames utf8 

пробел пропущен.
Цитата(AGENTxXx @  14.4.2011,  12:41 Найти цитируемый пост)
Попробовал(((( Ни какого результата(((

т.е. скрипт 
Код

header('Content-Type: text/html; charset=utf-8');
...
<выполнить запрос к базе> ('SET NAMES utf8');
<записать данные в базу>
<прочитать данные из базы и вывести>

выводят "крякозяблы"?

Автор: AGENTxXx 16.4.2011, 20:49
Офигенно!!!!!!!!!! Спасибо!!! Я в шоке!!! Теперь все нормально)) Ура =) Вот код, если вдруг кому то еще понадобится:
Код

header('Content-Type: text/html; charset=utf-8');
$db="***";
$datalnk="***";
$datalogin="***";
$datapass="***";
@$link=mysql_connect($datalnk,$datalogin,$datapass) or die("Ошибка подключения к Серверу");
@mysql_select_db($db) or die("Ошибка подключения к БД");
mysql_query('SET NAMES utf8',$link);
$str="INSERT INTO `News` ( `id` , `title` , `text` , `dc` , `addition` ) VALUES (NULL , 'аааааааа', 'ббббббббб', 'ввввввввввввв', NULL);";
mysql_query($str,$link);
$str="select * from News LIMIT 0, 3";
$rez=mysql_query($str,$link);
$mn= array('','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','окрября','ноября','декабря');
while ($row=mysql_fetch_array($rez))
    {
    $str=$row[dc];
    $Year = (int)substr($str,6,4);
    $Month = (int)substr($str,3,2);
    $Day = (int)substr($str,0,2);
    echo "<div id='posnew' align='justify'><span style='background-color:#eeeeee;'><b>$Day $mn[$Month] $Year</b></span>
    <div style='color:#F30;'><b>$row[title]:</b><span style=' color:#333333;'> $row[text]</span></div></div>";
}
mysql_close($link);


Без header у меня тоже нормально работала.. Но все же думаю лишним он не будет)) Ещё раз большое спасибо!!! Если что, у меня хостинг 101domain.ru - и на нем вот такая проблема была. Индусы из тех поддержки вообще не вкуривают, а наша российская тех поддержка видно пьет и молчит....

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)