ТП 100ms.ru

Объявление

С 1 марта 2015 года мы переехали на
Единую справочную службу



Темы форума остаются в качестве архива.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ТП 100ms.ru » Вопросы про MySQL » Как вывести данные в PHP из таблицы MySQL ‡Проблема с UTF-8 кодировкой


Как вывести данные в PHP из таблицы MySQL ‡Проблема с UTF-8 кодировкой

Сообщений 1 страница 2 из 2

1

В phpmyadmin русские буквы отражаются корректно. При экспорте в файл русские буквы отражаются корректно.
При отражении скриптом http://*****.100ms.ru/****1.php - некорректно.
В скрипте присутствует строка: echo '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">';
Что еще нужно настроить?

Для новичков, сразу рабочий пример:

Код:
<?php
$sdd_db_host='';// ваш адрес где находится, хостится ваша база данных
$sdd_db_name='';// Имя базы данных с которой вы хотите работать, так как их может быть множество
$sdd_db_user='';// логин доступ к базе данных
$sdd_db_pass='';// пароль доступа к базе данных
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);// устанавливаем связь с сервером
@mysql_select_db($sdd_db_name);// переключаемся на нужную нам базу данных
$result=mysql_query('SELECT * FROM `table_name`');// делаем выборку из таблицы
while($row=mysql_fetch_array($result))// берем результаты из каждой строки
{ echo '<p>Запись id='.$row['id'].'. Текст: '.$row['text'].'</p>';// выводим данные
}
?>

Теперь подробнее:
Создаём простую таблицу в нашей базе данных (БД) с именем `table_name`. Вот он скрипт, который легко выполняется в phpmyadmin, для этого достаточно всего лишь скопировать текст и нажать кнопку выполнить:

Код:
CREATE TABLE `u220100_5000`.`table_name` (
`id` INT NULL AUTO_INCREMENT COMMENT 'ID номер записи',
`text_` VARCHAR(500) NULL COMMENT 'Текстовое поле',
PRIMARY KEY (`id`)
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci
COMMENT='Экспериментальная таблица';

Несколько важных замечаний:

*    возьмите в привычку сразу заполнять комментарии к полям, это позволит вам выработать привычку комментирования и впоследствии не будет проблем при разработке больших и динамических полей, так как я сомневаюсь в том, что в вы наизусть будете помнить 10 тысяч полей и для чего и на кой каждое поле нужно;
*    забудьте про все ранее существующие кодировки и работайте только в UTF. Преимущества UTF кодировки перед остальными очевидны.
*   все поля пишите либо только маленькими, либо только большими буквами. К сожалению PHP придирчив к регистру и в случае, если регистр будет скакать, то многие скрипты и поля могут не выводиться у вас, либо выводиться, но не корректно.

Вот как будет выглядеть уже совсем готовый код html страницы:

Код:
<html>
<body>
<?php
$sdd_db_host='';// ваш адрес где находится, хостится ваша база данных
$sdd_db_name='';// Имя базы данных с которой вы хотите работать, так как их может быть множество
$sdd_db_user='';// логин доступ к базе данных
$sdd_db_pass='';// пароль доступа к базе данных
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);// устанавливаем связь с сервером
@mysql_select_db($sdd_db_name;// переключаемся на нужную нам базу данных
$result=mysql_query('SELECT * FROM `table_name`');// делаем выборку из таблицы
while($row=mysql_fetch_array($result))// берем результаты из каждой строки
{ echo '<p>Запись id='.$row['id'].'. Текст: '.$row['text'].'</p>';// выводим данные
}
?>
</body>
</html>

Проблема с UTF-8 кодировкой
На самом деле нет никаких проблем, только сразу после процедуры соединения с базой данных добавьте три строчки, выделенные внизу, отвечающие за переключение кодировки выводимых результатов, вот пример:

Код:
@mysql_connect($sdd_db_host,$sdd_db_user,$sdd_db_pass);// устанавливаем связь с сервером
@mysql_select_db($sdd_db_name);// переключаемся на нужную нам базу данных

// в какой кодировке получать данные от клиента
@mysql_query('set character_set_client="utf8"');

// в какой кодировке получать данные от БД для вывода клиенту
@mysql_query('set character_set_results="utf8"');

// кодировка в которой будут посылаться служебные команды для сервера
@mysql_query('set collation_connection="utf8_general_ci"');

Если вы решили вернуться к программированию в 90 годы и мертвую кодировку cp1251 считаете своим идеалом то, просто замените UTF на соответствующие значения cp1251 и cp1251_general_ci.


Зачем нужен знак @ перед командами mysql?
Этот знак подавляет вывод информации об ошибках на PHP движке.


при ответе использованы
публикации  SD Company

2

Продолжение в теме: HTML кодировка: utf-8, windows-1251


Вы здесь » ТП 100ms.ru » Вопросы про MySQL » Как вывести данные в PHP из таблицы MySQL ‡Проблема с UTF-8 кодировкой


Рейтинг форумов | Создать форум бесплатно