Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Неправильное отображение данных из базы
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
Здарова всем!
Проблема вот в чём:
Когда я добавляю данные в базу, они добавляются туда, почему-то в виде HTML спецсимволов (пример &6433; типа того) и когда вывожу данные из базы они отображаются нормально на странице, но в коде страницы все равно отображаются эти спецсимволы ((( Как можно занести данные в нормальном виде, и чтобы они были везде нормального вида? Подскажите, пожалуйста. Тип поля ТЕКСТ, сравнение cp1251_ukrainian_ci
evgenijj
Отправлено: 12 Февраля, 2008 - 11:58:05
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
Кодировка у страницы такая
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
А про htmlspecialchars():
Почему она русские символы переводит в спецсимволы? И когда я вывожу все это чудо из базы на страничку получается белиберда вида &..... и т.д. ( Как мне решить эту проблемку? )
evgenijj
Отправлено: 12 Февраля, 2008 - 15:25:48
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
D1mOn пишет:
Почему она русские символы переводит в спецсимволы?
Она не русские символы переводит, а обрабатывает последовательности типа
& # 1040; & # 1041; & # 1042; & # 1043; - т.е. то, что и должна делать.
Цитата:
Кодировка у страницы такая
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
ЧУДО Здесь
А потом скажете где именно проблема, а мы скажем как решить.
----- Truly yours, Sasha.
D1mOn
Отправлено: 13 Февраля, 2008 - 05:20:33
Частый гость
Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008 Откуда: Гагастан
Помог: 0 раз(а)
[+][+][+][+][+]
evgenijj
Да, это у страницы с формой.
Цитата:
Она не русские символы переводит, а обрабатывает последовательности типа
& # 1040; & # 1041; & # 1042; & # 1043; - т.е. то, что и должна делать.
Тогда что мне лучше использовать вместо этой функции? Или что исправить чтобы всей этой белиберды не было? Не могу же я без защиты давать юэерам записывать данные в базу!
valenok
Ошибок в скрипте нет, просто где-то что-то неправильно )
evgenijj
Отправлено: 13 Февраля, 2008 - 09:56:03
Участник
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
Думаю, проблема в следующем. В форму вводятся символы, которых нет в указанной для страницы кодировке. Поэтому все данные отсылаются на сервер в UNICODE. Если есть нужда вводить такие символы, то надо переходить на UTF-8.
Еще один вариант - Apache. Даже если мы приписали на странице
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
Apache может добавить в заголовок HTTP свое сообщение про кодировку (например, ISO-8859-1). Исправить это можно указав свою кодировку в файле .htaccess командой AddDefaultCharset.
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Ошибка это когда чтото не так.
Так что найдите в каком именно месте чтото не так. (Добавление)
Вообщем вы узнайте что приходит на сервер, а что он записывает в БД
а то похоже у вас 3 кодировки указаны разные.
----- Truly yours, Sasha.
Eihwaz
Отправлено: 13 Февраля, 2008 - 16:42:49
Гость
Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007
Помог: 0 раз(а)
2D1mOn:
Если используете какую-то функцию, то хотя бы посмотрите, что она делает, и какие принимает параметры. Скорее всего то, что вы ищете это:
mysql_query("insert into table (name,text,pop,enter_date) values ('$name','$text',0,'$now')", $db);
? (Добавление)
И еще малюсенький вопросик )
В phpMyAdmin мне пишет:
Цитата:
Директива $cfg['PmaAbsoluteUri'] должна быть установлена в Вашем конфигурационном файле!
Ваш конфигурационный файл содержит настройки (пользователь root без пароля), которые относятся к привилегированному пользователю MySQL (по умолчанию). Ваш MySQL сервер запущен с этими настройками по умолчанию, открытый для вторжений, поэтому Вам настоятельно рекомендуется устранить эту дыру в безопасности.
The mbstring PHP extension was not found and you seem to be using multibyte charset. Without mbstring extension phpMyAdmin is unable to split strings correctly and it may result in unexpected results.
Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006 Откуда: Москва
Помог: 10 раз(а)
D1mOn пишет:
Нашел решение.
Ты бы написал, в чем проблема была. Откуда брались испорченные данные? А то тема на две страницы - а полезной информации ноль.
D1mOn пишет:
Директива $cfg['PmaAbsoluteUri'] должна быть установлена в Вашем конфигурационном файле!
В файле libraries/config.default.php заменить строку
$cfg['PmaAbsoluteUri'] = '';
на
$cfg['PmaAbsoluteUri'] = 'http://myserver.com/phpmyadmin/';
D1mOn пишет:
Ваш конфигурационный файл содержит настройки (пользователь root без пароля)
Ты работаешь с сервером БД от имени пользователя root и без пароля. Надо создать еще одного пользователя и назначить ему необходимые права для работы с БД. Кратко смысл в следующем. При установке MySQL создается БД mysql. Эта БД содержит таблицы user и host. В таблице host указаны хосты, с которых можно соединяться с сервером БД, а в таблице user - пользователи, которые могут соединяться с этих хостов.
В phpMyAdmin имя и пароль пользователя задаются директивами
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
в файле libraries/config.default.php
Вообще, в последних версиях phpMyAdmin два файла конфигурации:
libraries/config.default.php - содержит настройки по умолчанию
config.inc.php - переопределяет настройки по умолчанию
function unicode ($s){if((ord($s)>=192)&(ord($s)<=255))$hexvalue=dechex(ord($s)+848);if($s=="Ё")$hexvalue="401";if($s=="ё")$hexvalue="451";return("�".$hexvalue.";");}
function utf_encode ($s){return(preg_replace("/[А-яЁё]/e","unicode('\\0')",$s));}
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.