 |
 |
Форум сетевых администраторов » Программирование » PHP » Xml экспорт/импорт информации
| Автор |
| Тема |
 |
|
 |
|
|
|
Участник+
|
| Xml экспорт/импорт информации |
[сооб. #74468]
10-02-2005 20:20 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
Задача такая: есть сайт, пользователь заполняет форму, скрипт генерит XML документ (есть др. предложения?) и отправляет его по почте на некий адрес. Там чел получил этот файл. И скормил его в принципе тому же сайту ("внутреннему"), скрипт его пропарсил и добавил данные из документа в MySQL базу...
Вот дамп 3х таблиц в которые будет добавляться информация:
code:
см. так же мои комментарии.
Вот такой я подумал сделать XML документ
PHP:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<soiskateli>
<soiskatel verified="1" dolgnost_id="3" phone="(3852) 45-5" education_spec="Прикладная информатика в экономике" poslednii_prosmotr="27.04.2004" recommendations="Василий Иванович Чапаев, командир конного полка." photo_path="Null" fio="Иванов Иван Иванович" prof_experience="Создание вэб-представительства компании ЧП "з"" foreign_passport="" publish="1" nature="Null" address="г.Барнаул, пр-т им. Ленина 24-6" kol_vo_prosmotrov="0" data_rogdenia="07.06.1975" famile_status="1" avto_owne="1" data_vnesenia="27.04.2004" work_graph="2" email="ivanov@ivan.ru" prof_skill="Отличные знание компьютерной техники..." sex="1" driver_certificat="1" zp="1000" shelf_time="01.01.2010" education_type="1" zaniatost="2">
<educations>
<education education_id="1" date_from="01.09.1985" date_to="30.05.1995" school_name="Средняя общеобразовательная школа 56" education_type="1" education_spec="" education_mark="5"/>
<education education_id="2" date_from="01.09.1995" date_to="31.05.2000" school_name="АлтГУ" education_type="1" education_spec="Прикладная информатика в экономике" education_mark="5"/>
</educations>
<works>
<work work_id="2" date_from="01.04.2004" date_to="30.04.2004" job_name="БЛВЗ" sfera_deiatelnosti_id="2" dolgnost_id="11" obiazanosti="Null"/>
<work dolgnost_id="2" sfera_deiatelnosti_id="3" date_from="09.03.2000" date_to="02.04.2004" work_id="1" obiazanosti="Null" job_name="АКОО "Молодые журналисты Алтая""/>
</works>
</soiskatel>
<soiskatel data_vnesenia="10.05.2004" poslednii_prosmotr="01.01.0001" kol_vo_prosmotrov="0" fio="Чапаев Василий Иванович" sex="1" dolgnost_id="1" zp="15555" work_graph="1" zaniatost="1" data_rogdenia="01.10.1935" famile_status="2" address="Красногвардейская армия 1." email="chap@ev.ru" phone="89132174167" education_type="3" education_spec="Полководец" prof_experience="Управление красногвардейскй армией. Запуск в бой полков." prof_skill="Управление Петькой и Анкой - 5\nКонная навигация - 5" driver_certificat="1" foreign_passport="1" recommendations="Главный генерал красной армии..." photo_path="2_1084204522_face.jpg" shelf_time="30.07.2005" publish="1" verified="1" nature="Null" avto_owne="0">
<educations>
<education education_id="3" date_from="01.05.2004" date_to="30.05.2004" school_name="Третья ковалерийская академия" education_type="2" education_spec="Курсы повышения конного мастерства" education_mark="5"/>
</educations>
<works>
<work work_id="4" date_from="01.01.2001" date_to="01.01.2004" job_name="Первый ковалерийский полк" sfera_deiatelnosti_id="1" dolgnost_id="1" obiazanosti="Null"/>
<work work_id="3" date_from="01.05.2004" date_to="30.05.2004" job_name="Академия конного спорта" sfera_deiatelnosti_id="3" dolgnost_id="3" obiazanosti="Null"/>
</works>
</soiskatel>
</soiskateli>
(для 2х анкет к примеру)
Возможно есть предложения по его изменению?
Сделать его проблем нет... не заморачиваться и обычным
PHP:
$xml_text="<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>";
с подстановкой переменных и последующим выводом.
Опять же готов выслушать предложения...
На этапе парсенья этого док-та
PHP:
if (file_exists('anketi.xml')) {
$xml = simplexml_load_file('anketi.xml');
$s_id = 0;
foreach ($xml->soiskatel as $k) {
if($xml->soiskatel[$s_id]){
foreach($xml->soiskatel[$s_id]->attributes() as $a => $b) {
$b = iconv("UTF-8", "KOI8-R", "$b");
echo $a,'=="',$b,"\"\n";
}
// либо так
print "education_spec=".iconv("UTF-8", "KOI8-R", $xml->soiskatel[$s_id]['education_spec'])."\n";
$s_id++;
print "\n\n\n";
} else {
exit('Failed to open anketi.xml.');
}
}
}
Вопрос первый, UTF и никак иначе? А то как я понял при парсеньи проблемы?..
Ваши советы?..
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
10-02-2005 20:20 |
|
|
STFW
|
| ...а чего, с encoding="koi8-r" ошибки выдает? |
[сооб. #74522]
13-02-2005 16:04 |
|
|
Участник+
|
| SCHIZO угу... какие то запарки кри "импорте"..... |
[сооб. #74523]
13-02-2005 16:56 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
SCHIZO угу... какие то запарки кри "импорте".. крякозяброй...
he][es добавил 13-02-2005 в 16:57:56:
SCHIZO а в общем и целом какие нить советы будут?
исправления? Ошибки?
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
13-02-2005 16:56 |
|
|
STFW
|
| he][es он у тебя вообще с кодировкой отличной... |
[сооб. #74531]
14-02-2005 08:14 |
|
STFW


Зарегистрирован: Jul 2002
Место проживания: Кольский п-ов
Публикаций: 305
Статус:  |
he][es он у тебя вообще с кодировкой отличной от UTF-8 не работает или просто с читабельностью вывода пробемы?
P.S.
Я бы не стал использовать экпериментальное расширение для продакшн задач. У меня есть класс для создания собственного XML парсера. Тебе останется только написать произвольные функции обработки данных и подсунуть их экземпляру этого класса.
Если интересно могу выложить.
__________________
FAQ OFF
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
14-02-2005 08:14 |
|
|
Участник+
|
quote: просто с читабельностью вывода пробемы
education_spec=="п÷я─п╦п╨п╩п╟п╢п╫п╟я▐... |
[сооб. #74559]
15-02-2005 11:01 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
quote: просто с читабельностью вывода пробемы
education_spec=="п÷я─п╦п╨п╩п╟п╢п╫п╟я▐ п╦п╫я└п╬я─п╪п╟я┌п╦п╨п╟ п╡ я█п╨п╬п╫п╬п╪п╦п╨п╣"
Ð_то он взял из файла в koi8-r информацию и вывел без трансформации из UTF в koi8-r. Я так понял читает он вроде правильно, но у него "внутренняя" кодировка UTF и он в ней выдает...
quote: Я бы не стал использовать экпериментальное расширение для продакшн задач.
Т.е.? вы про что?..
quote: Если интересно могу выложить.
Интересно конечно. Только я не совсем понимаю. У меня нет чёткого понмания что зачем и куда... Нужен ли мне парсер?
Мне не хватит того что я написал выше?
Я ведь прочто открываю файл и обращаюсь к переменным типа
print "education_spec=".iconv("UTF-8", "KOI8-R", $xml->soiskatel[$s_id]['education_spec'])."\n";
и засовываю их в БД...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
15-02-2005 11:01 |
|
|
Участник+
|
PHP:
setlocale(LC_ALL, "ru_RU.CP1251");
эта строчка не поможет?
может... |
[сооб. #74563]
15-02-2005 11:37 |
|
Участник+


Зарегистрирован: Jul 2003
Место проживания:
Публикаций: 125
Статус:  |
PHP:
setlocale(LC_ALL, "ru_RU.CP1251");
эта строчка не поможет?
может из - за этого кракозябры?
__________________
Новая жизнь HMM3(Герои 3.5 WoG)http://hmm3.fclan.ru
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
15-02-2005 11:37 |
|
|
STFW
|
fStrange при чем тут cp1251?
he][es я запутался... |
[сооб. #74573]
15-02-2005 18:07 |
|
STFW


Зарегистрирован: Jul 2002
Место проживания: Кольский п-ов
Публикаций: 305
Статус:  |
fStrange при чем тут cp1251?
he][es я запутался в твоих объяснениях... значит в XML документе ты объявляешь что он в кодировке UTF-8. А реально в какой? Ð_то раз.
Что мешает объявить кодировку не UTF-8 а KOI8-R? (или любую другую соответствующюю кодировке запроса при отправке формы) Ð_то два.
Третье. С какого момента текст становиться нечитабельным? На каком этапе? После какого преобразования? Или только при выводе из базы после записи, а напрямую из БД читается нормально?
__________________
FAQ OFF
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
15-02-2005 18:07 |
|
|
Участник+
|
quote: А реально в какой?
Ð_еально в той, в... |
[сооб. #74577]
16-02-2005 06:53 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
quote: А реально в какой?
Ð_еально в той, в какой указано. (Вообще мне бы желательно в кои. Что б не конвертировать при экспорте).
quote: или любую другую соответствующюю кодировке запроса при отправке формы
Не совсем понял... Т.е. реальную кодировку? Так оно и есть!...
quote: С какого момента текст становиться нечитабельным? На каком этапе?
Ну я ещё никуда ничего не пишу. Просто открываю файл. с той кодировкой которая указана в нем. (желательно КОИ) и вывожу все значения записаные в нем на экран... Тут то и всё "всплывает"... 
Если не сделать
iconv("UTF-8", "KOI8-R", $xml->soiskatel[$s_id]['VAR_NAME'])
со всеми переменными, то он выведет все в UTF. воот. Соответственно и в базу он в UTF записал бы...
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
16-02-2005 06:53 |
|
|
STFW
|
| he][es ты пробовал указывать в декларации... |
[сооб. #74587]
16-02-2005 08:50 |
|
STFW


Зарегистрирован: Jul 2002
Место проживания: Кольский п-ов
Публикаций: 305
Статус:  |
he][es ты пробовал указывать в декларации XML документа encoding="KOI8-R"? Судя по последнему посту ты сразу туда UTF-8 пишешь.. Или я чего то недопонял?
__________________
FAQ OFF
Сообщение было отредактировано SCHIZO 16-02-2005 в 08:53
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
16-02-2005 08:50 |
|
|
Участник+
|
| SCHIZO Угу. не совсем. Без разницы в какой... |
[сооб. #74604]
16-02-2005 15:36 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
SCHIZO Угу. не совсем. Без разницы в какой кодировке док-т (декларация ВСЕГДА соответствует реальной кодировке (я всё правильно указываю)) на "экран" он всегда его в UTF отдает!..
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
16-02-2005 15:36 |
|
|
STFW
|
| he][es, тогда это не лечится... можно ускорить... |
[сооб. #74619]
16-02-2005 18:49 |
|
STFW


Зарегистрирован: Jul 2002
Место проживания: Кольский п-ов
Публикаций: 305
Статус:  |
he][es, тогда это не лечится... можно ускорить процесс выводя всю страницу в UTF-8, или накапливая данные в буфере вывода вызвать iconv один раз..
Ð_асширение simplexml экспериментальное, в доках ничего кроме функций и методов не описано. В продакшн вариантах функций работы с XML хоть константы какие то есть или параметры позволяющие кодировку явно указывать, а тут вообще ничего.
__________________
FAQ OFF
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
16-02-2005 18:49 |
|
|
Участник+
|
| [quote]В продакшн вариантах функций работы с... |
[сооб. #74629]
16-02-2005 22:35 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
quote: В продакшн вариантах функций работы с XML
Ð_то что такое???
quote: можно ускорить процесс выводя всю страницу в UTF-8, или накапливая данные в буфере вывода вызвать iconv один раз..
1е не получится... Весь сайт на кои, 2ое тоже. это просто куча переменных. их как бы не накопишь...
И выводить как таковой текст мне в принципе не оч. важно. Ð_то будет оч. редко делаться, главное импорт в БД.
А так, кроме кодировки, мой вариант как? Пойдёт? Или есть какие нить глюки, подводные камни, etc.?
__________________
Админ - вождь Апачей...
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
16-02-2005 22:35 |
|
|
Участник+
|
SCHIZO а по первому вопросу?..
(н в принцие?... |
[сооб. #74644]
17-02-2005 10:56 |
|
|
STFW
|
| he][es, попробуй с error_reporting E_ALL, все увидишь... |
[сооб. #74662]
17-02-2005 15:45 |
|
|
|
Формат времени GMT. Текущее время 04:30.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.60975909 seconds (99.14% PHP - 0.86% MySQL) with 21 queries.
|
 |