Отображение данных в Броузере.

phprus

Moderator
Команда форума
Holon
hebrew - Это что за кодировка? почему не utf8 ? Кроме того я в твоем скрипте все еще не вижу запроса который установит кодировку соединения. Как выглядит этот запрос написано по ссылке, которую я давал.
 

Holon

Новичок
Да синтаксис немного непонятный там в примере сказано после подключения к серверу
прописать следуюсщее обращение:
PHP:
"set name =hebrew"
это больше похоже на какую-то строковую константу, а не на обращение к серверу,
а "hebrew" (я никому не буду давать ссылку на словарь а просто напишу), это и есть Иврит.
mysql> show character set;
+----------+-----------------------------+---------------------+--------+
| Charset | Description | Default collation | Maxlen |
+----------+-----------------------------+---------------------+--------+
| hebrew | ISO 8859-8 Hebrew | hebrew_general_ci | 1 |

вот на всякий пожарный попробовал вдруг произойдет, чудо:
PHP:
<?php
//   http://localhost/infoscreen.php
//   http://www.php.su/mysql/?functions
$host = "localhost";
$user = "vldsa";
$password = "12345";
$db =  "client";
if (!mysql_connect($host, $user, $password))
{
echo "<h2>MySQL Error!</h2>";
exit;
}
"set name =hebrew";
mysql_select_db($db);

echo "<table border=\"1\" width=\"100%\" bgcolor=\"#FF4040\" lang=\"he\">";

echo "<tr><td>NPP</td><td>DATE</td><td>&#236;&#247;&#229;&#231;</td><td>MAN_NO</td>";
echo "<td>ORD_NO</td><td>CUST_NO</td><td>DATE_EX</td></tr>";

$q = mysql_query ("SELECT * FROM INFO ORDER BY DATE_EX");
for ($c=0; $c<mysql_num_rows($q); $c++)

{
$f = mysql_fetch_array($q);

echo "<tr lang=\"he\"><td>$f[NPP]</td><td>$f[DATE]</td><td>$f[CUSTOMER]</td>";
echo "<td>$f[MAN_NO]</td><td>$f[ORD_NO]</td><td>$f[CUST_NO]</td><td>$f[DATE_EX]</td></tr>";
}
echo "</table>";
mysql_close();
?>
но чудес небывает 13-я строка бесполезна
PHP:
 "set name =hebrew";
 

Фанат

oncle terrible
Команда форума
я у тебя спрашивал не настройки базы, а кодировку, в которой ты туда данные клал.
я у тебя спросил, в какой кодировке у тебя ПХП СКРИПТЫ НАПИСАНЫ. на этот вопрос ты так и не ответил.
 

Holon

Новичок
Я чесно говоря нехочу никого запутать, я не доконца понимаю суть вопроса,
если ты меня направиш по определенному алгоритму,я отвечу на твой вопрос,
что, я должен сделать что бы получить необходимые кодировки.
 

Фанат

oncle terrible
Команда форума
ты не знаешь, в какой кодировке у тебя сайт? не база, а сам сайт?
 

Holon

Новичок
Да это не сайт, а отдельный файл *.php который с помощью "Денвера", вернее будет сказать "Апаче" я запускаю в Броузере, вот таким вот образом,
PHP:
http://localhost/infoscreen.php
сам файл, я уже три раза выставлял, кодировка страници Hebrew (Windows)
 

Фанат

oncle terrible
Команда форума
ну наконец-то.
а где и как эта кодировка указана?
а базу ты со страницы заполнял, через форму?
то есть, можно предполагать, что данные в неё тоже в Hebrew (Windows)?
я уже три раза выставлял
что выставлял?
 

Holon

Новичок
Три раза выставлял код файла php, который формирует страницу, а данные на сервер я ввожу вручную через консоль MySQL, я хочу вначале разобратся с кодировками, а потом уже строить формы и т.д. невозможно ничего строить, если все что ты строишь отображается неправильно. Я думаю, что даже, с PHP игратся рано, нужно на сервере, все настроить так, чтобы Иврит отображал, хотя я может и ошибаюсь,
ведь в phpAdmin, все выглядит нормально, честно говоря я запутался.

-~{}~ 22.10.07 19:42:

По поводу кодировки, страницы это все просто, зашел в опции Броузера и посмотрел,
в списке кодировок точка стоит напротив Hebrew (Windows).

-~{}~ 22.10.07 19:48:

О вот чего-то накрутил теперь и в phpMyAdmin тоже знаки вопроса.
 

Mols

Новичок
1. Посмотрите из ПХП скрипта те переменные MySQL которые отвечают за кодировку.
2. Определитесь в какой кодировке вы будете посылать данные в базу (это зависит от того, что вы получите от клиента и как распорядитесь этим в ПХП скрипте).
3. Установите выбранную в п.2 кодировку для соединения с базой (из ПХП скрипта) используя для этого "...похоже на какую-то строковую константу..." в качестве запроса к БД. только она у вас чуток неправильная... эта "константа".
4. в качестве проверки выполните п.3 и проверьте результат через п.1 в том же ПХП скрипте, и одном и том же подключении к базе.

Если установилась та кодировка которую вы и планировали - пробуйте вносить данные через форму (выполняя перед внесением п.3). Потом их считывать ПХП скриптом (при считывании тоже надо базе указать кодировку в которой ждет данные ваш ПХП скрипт - тот же п.3.)
Да и ещё...
таблицы базы, и поля в таблицах должны иметь соответствующую кодировку

З.Ы.
Да простят меня мэтры этого форума, за столь разжеванное объяснение. Думаю человек проявил достаточно терпения и старания, но с непривычки мне думается он уже просто начал запутываться.
 

Holon

Новичок
Ага вот потихоньку начинаю въежать, обратил внимание на одну вещь, поправте
меня если я неправ, вначале я создал таблицу неимея никакого прeдставления о кодировках при следуюсщих настройках сервера:
mysql> show variables like '%chara%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | cp1251 |
| character_set_results | latin1 |
| character_set_server | cp1251 |
| character_set_system | utf8 |
| character_sets_dir | \usr\local\mysql4/share/charsets |
+--------------------------+----------------------------------+
7 rows in set (0.00 sec)

Потом когда возникла проблема с отображением Иврита, я начал настраивать сервер в
нужную кодировку, но сама таблица была создана при неправильнух настройках сервера!!!
К примеру я сейчас меняю настройки сервера следующим образом:
mysql> set character_set_client='hebrew';
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_connection='hebrew';
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_database='hebrew';
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_results='hebrew';
Query OK, 0 rows affected (0.00 sec)

mysql> set character_set_server='hebrew';
Query OK, 0 rows affected (0.00 sec)

mysql>
mysql> show variables like '%chara%';
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | hebrew |
| character_set_connection | hebrew |
| character_set_database | hebrew |
| character_set_results | hebrew |
| character_set_server | hebrew |
| character_set_system | utf8 |
| character_sets_dir | \usr\local\mysql4/share/charsets |
+--------------------------+----------------------------------+
7 rows in set (0.00 sec)
и запускаю следующий скрипт:
PHP:
<?php
//   [url]http://localhost/encoding.php[/url]
//   [url]http://www.php.su/mysql/?functions[/url]
$host = "localhost";
$user = "vldsa";
$password = "12345";
$db =  "client";

$link = mysql_connect($host, $user, $password);
$charset = mysql_client_encoding($link);
printf ("current character set is %s\n", $charset);
?>
он мне возвращает следуещее:
current character set is latin1
отсюда следует вывод, что база созданная по одним настройкам неменяет
их после текущей перенастройки сервера, поправьте меня если я неправ,
и второе вопрос по синтаксису
PHP:
$chn = "set name =hebrew";
mysql_character_set_name($chn);
Почемуто функция:
PHP:
mysql_character_set_name()
неподсвечивается повидимому ошибка в синтаксисе, поправте
если возможно, просьба недавать ссылки на книги и FAQ, я это и так регулярно читаю параллельно форуму.
 

Фанат

oncle terrible
Команда форума
и запускаю следующий скрипт:
но запуская его, ты устанавливаешь новое соединение. в котором ни ожну из этих установок не сделал.
почему же ты в консоли их делаешь, а в скрипте - нет?

и вообще - при чем здесь создание базы?

"функция не подсвечивается". Ну и что? Работает? Если да - то какая разница тебе, каким она цветом? Если не работает - то так и надо писать
 

Holon

Новичок
Функция неработает выдает ошибку:
PHP:
$chn = "set name =hebrew";
mysql_character_set_name($chn);
Fatal error: Call to undefined function: mysql_character_set_name() in z:\home\localhost\www\infoscreen.php on line 14
 

Фанат

oncle terrible
Команда форума
вот так и надо писать. а то "не подсвечивается".
зачем тебе функция, если все делается запросами - что ты личнонаблюдал в консоли. почему не выполнить те же самые запросы в скрипте?
 

Holon

Новичок
Вот попробовал тоже самое сделать в скрипте:
PHP:
<?php
//   http://localhost/encoding.php
$host = "localhost";
$user = "vldsa";
$password = "12345";
$db =  "client";
$link = mysql_connect($host, $user, $password);

mysql_query("set character_set_client='hebrew'");
mysql_query("set character_set_connection='hebrew'");
mysql_query("set character_set_database='hebrew'");
mysql_query("set character_set_results='hebrew'");
mysql_query("set character_set_server='hebrew'");
$charset = mysql_client_encoding($link);
printf ("current character set is %s\n", $charset);
?>
результат :
current character set is latin1

Прошу несудить строго, возможно построение скрипта в корне неверное,
но разбираться с любым языком программирования нужно с создания чего-либо,
на этом языке. ИМХО

-~{}~ 23.10.07 12:10:

Странно невыдает ошибок, и неработает тоже, какой можно сделать вывод?
 

Фанат

oncle terrible
Команда форума
никакого.
фраза "не выдает ошибок и не работает" ничего не говорит стороннему наблюдателю.
 

Holon

Новичок
а что можно сказать по поводу того , что я прописал все кодировки в скрипте
"hebrew" а мне возвращается "current character set is latin1" значит скрипт работает неверно, какая причина неправильной работы скрипта, это или синтаксис,
или построение самого скрипта, так в чем ошибка?

-~{}~ 23.10.07 13:36:

Вот так вот все заработало, но вопросов осталось много

PHP:
<?php
//   http://localhost/infoscreen.php
$host = "localhost";
$user = "vldsa";
$password = "12345";
$db =  "client";
if (!mysql_connect($host, $user, $password))
{
echo "<h2>MySQL Error!</h2>";
exit;
}

mysql_query("set character_set_client='hebrew'");
mysql_query("set character_set_connection='hebrew'");
mysql_query("set character_set_database='hebrew'");
mysql_query("set character_set_results='hebrew'");
mysql_query("set character_set_server='hebrew'");


mysql_select_db($db);

echo "<table border=\"1\" width=\"100%\" bgcolor=\"#FF4040\" lang=\"he\">";

echo "<tr><td>NPP</td><td>DATE</td><td>&#236;&#247;&#229;&#231;</td><td>MAN_NO</td>";
echo "<td>ORD_NO</td><td>CUST_NO</td><td>DATE_EX</td></tr>";

$q = mysql_query ("SELECT * FROM INFO ORDER BY DATE_EX");
for ($c=0; $c<mysql_num_rows($q); $c++)

{
$f = mysql_fetch_array($q);

echo "<tr lang=\"he\"><td>$f[NPP]</td><td>$f[DATE]</td><td>$f[CUSTOMER]</td>";
echo "<td>$f[MAN_NO]</td><td>$f[ORD_NO]</td><td>$f[CUST_NO]</td><td>$f[DATE_EX]</td></tr>";
}
echo "</table>";
mysql_close();
?>
 
Сверху