Возможно ли настроить кодировку в коде?

Статус
Закрыто для дальнейших ответов.

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Здравствуйте! Вот такой вопросик...

Файл 1.php содержит следующий код
Код:
... конект к базе ...

$seligrskaya = mysql_numrows(mysql_query("SELECT * FROM `vyz` WHERE `metro_moscow`='Селигерская'"));
if ($seligrskaya > 0)
{
	 print "<area shape='rect' coords='210, 69, 263, 78' href='2.php?metro_moscow=селигерская' alt='Селигерская'>";
}

... ещё код ...
Файл 2.php содержит такой код
Код:
... конект к базе ...

$metro = $_GET['metro_moscow'];
print $metro;

... ещё код ...
Т.е. задача такая что при нажатии на станцию "Селигерскую", в 2.php посылается запрос и там обрабатывается. Сделав print $metro; я увидел, что место названия "Селигерская" приходят вопросительные знаки - "???????????".

Подскажите пожалуйста где нужно капать, чтобы он распозновал русский шрифт.
И возможно ли это сделать без вмешательства в настройки самого сервера, т.е. что-то "эдакое" вставить в код? :)
 

RoamingFire

Well-Known Member
Регистрация
04.01.2008
Сообщения
145
Нужно сменить кодировку. Т.к. методом GET данные передаются в кодировке UTF-8. Вот как будет выгляденть функция:
Код:
$metro = iconv("UTF-8","windows-1251",$_GET["metro_moscow"];
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Nordway, а вообще будет лучше почитать как работать с базой данных! Затем, что такое ключевое поле и с чем его едят...
В общем такие запросы не для БД не надо тут iconv приплетать
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Нужно сменить кодировку. Т.к. методом GET данные передаются в кодировке UTF-8. Вот как будет выгляденть функция:
Код:
$metro = iconv("UTF-8","windows-1251",$_GET["metro_moscow"];
Отказывается работать. Выводит теже знаки вопроса.
Nordway, а вообще будет лучше почитать как работать с базой данных! Затем, что такое ключевое поле и с чем его едят...
В общем такие запросы не для БД не надо тут iconv приплетать
Посоветуйте что нужно сделать:)
или ссылку где можно прочесть)

Заранее спасибо)
 

RoamingFire

Well-Known Member
Регистрация
04.01.2008
Сообщения
145
Не знаю почему iconv не работает, ну да ладно. Короче...
Создаешь еще одну таблицу вида:
Код:
id INT NOT NULL AUTO_INCREMENT,
name TEXT NOT NULL,
PRIMARY KEY (id)
В этой таблице храни названия станций (или что это такое - "Селигерская"). Потом делаешь запрос вида:
Код:
$seligrskaya = mysql_numrows(mysql_query("SELECT * FROM `vyz` WHERE `metro_moscow`='ЗНАЧЕНИЕ_ПОЛЯ_ID'"));
Надеюсь понятно? А где почитать про это не знаю...
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Нет немного не так объясняешь...
К примеру у нас есть две таблицы
1) вуз(vuz), как я понял
Поля id(INT 11, Auto_Icrement) id_metro(INT 11), name_vuz(VARCHAR 100)
2) Метро(metro)
Поля id(INT 11, Auto_Icrement) metro_moscow(VARCHAR 255)

Так вот, между этими двумя таблицами идёт связь через ID, то есть vuz.id_metro связан с metro.id
Отталкиваясь от рассуждений что нам нужно делать запросы... Методом гет передавать ID того что нам нужно
К примеру воти код по которому у нас будeт вытаскиваться все вузы, где метро c ID=1

Код:
.....
$sql_query = "SELECT * FROM `metro` WHERE `id`=1 LIMIT 1";
$metro = mysql_query($sql_query);
if (mysql_num_rows($metro) > 0)
{
  $array = mysql_fetch_array($metro);
  echo "<a href='2.php?id_metro={$array['id']}'> {$array['metro_moscow']} </a>";
}
.....
А на 2.php

Код:
.....
$sql_query = "SELECT * FROM `vuz` WHERE `id_metro`=".intval($_GET['id_metro']);
$vuzs = mysql_query($sql_query);
if (mysql_num_rows($vuzs) > 0)
{
  while($vuz = mysql_fetch_array($vuzs)) {
	echo"Вуз - {$vuz['name_vuz']}";
  }
}
.....
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Это потяно! Спасибо. Только у меня 1 база с вузами (Моксва, Питер, ... - по России), и там две колонки только есть для метро - Москвы и Питера. И как-то выдирать не хотелось бы))
 

RoamingFire

Well-Known Member
Регистрация
04.01.2008
Сообщения
145
Придется... Конечно если решишь проблему с кодировкой, то можно и так оставить... Но будет не правльно :)
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Допустим с метро будет отдельная таблица - (`id`, `metro`)
Помимо этого у меня ещё поиск вузов по названию, т.е. ввожу МГУ, получаю ???. Здесь уже так не получится сделать...
Причём раньше всё работало)) т.е. всё читалось норм, мб где-то апач или mysql натсроен неправильно?
 

RoamingFire

Well-Known Member
Регистрация
04.01.2008
Сообщения
145
Не совсем понял. Ты хочешь сказать, что есть запрос - $query = "SELECT * FROM vuzy WHERE name = 'МГУ'" ??
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
Это надо прочитать и осознать... Локализация происходит сразу после подключения к БД
Локализация


Начиная с версии 4.1 в СУБД MySQL внедрена новая система кодировок и сортировок. Если вы используете кодировку cp1251, перед выполнением SQL-инструкций необходимо настроить кодировку соединения при помощи операторов:
SET character_set_client='cp1251';
SET character_set_results='cp1251';
SET character_set_connection='cp1251';

Эти три оператора эквивалентны вызову одного оператора:
SET NAMES 'cp1251'


Переменная character_set_client устанавливает кодировку данных отправляемых от клиента, переменная character_set_results устанавливает кодировку данных отправляемых клиенту, переменная character_set_connection устанавливает кодировку, в которую преобразуется информация пришедшая от клиента, перед выполнением запроса на сервере.


При использовании Юникода UTF-8 этот оператор выглядит следующим образом:
SET NAMES 'utf8'
Возможно в этом у тебя проблема... Тебе надо локализовать базу...!
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
Спасибо!)) Локализировал, заработало))

Дабы вторую тему не создавать хочу задать маленький вопросик по выборке mysql.
допустим делается запрос - select * from bd;
на страницу к примеру выводится 100 записей
Как эти записи разбить допустим на 4 страницы? т.е. по 20 чтоб показывалось на каждой?
Можно на каком-нить примере, дальше сам разберусь.
Ещё раз спасибо))
 

ZitosS_32

Совесть
Регистрация
12.03.2006
Сообщения
852
http://forum.woweb.ru/topic34448.html

Тут тема эта обсуждалась почитайте

Скажу теорию... в SQL запросах есть ограничение вывода LIMIT (1), (2)
(1) - с какой записи
(2) - сколько записей отобрать

Скрипт постраничной навигации либо сам напишешь, либо изучай по ссылке, объяснять там нечего, полно в инете по этой теме инфы :tongue:
 

Nordway

Active Member
Регистрация
06.08.2007
Сообщения
41
http://forum.woweb.ru/topic34448.html

Тут тема эта обсуждалась почитайте

Скажу теорию... в SQL запросах есть ограничение вывода LIMIT (1), (2)
(1) - с какой записи
(2) - сколько записей отобрать

Скрипт постраничной навигации либо сам напишешь, либо изучай по ссылке, объяснять там нечего, полно в инете по этой теме инфы :tongue:
Спасиб, будем разбиратсья))
 
Статус
Закрыто для дальнейших ответов.
Верх Низ