![]() |
Страницы (2): [1] 2 » Показаны 18 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Xml экспорт/импорт информации (http://netadmin.ws/forum/showthread.php?threadid=10279)
Xml экспорт/импорт информации
Задача такая: есть сайт, пользователь заполняет форму, скрипт генерит XML документ (есть др. предложения?) и отправляет его по почте на некий адрес. Там чел получил этот файл. И скормил его в принципе тому же сайту ("внутреннему"), скрипт его пропарсил и добавил данные из документа в MySQL базу...
Вот дамп 3х таблиц в которые будет добавляться информация:
CREATE TABLE soiskateli (
soiskatel_id smallint(4) NOT NULL auto_increment, // id должен браться из авто_инкремента и подставляться в 2 др. таблицы $id = mysql_insert_id(); и нет проблем...
data_vnesenia date NOT NULL default '0000-00-00', //текущая дата
poslednii_prosmotr date NOT NULL default '0000-00-00', // =0
kol_vo_prosmotrov smallint(5) NOT NULL default '0', // =0
fio tinytext NOT NULL,
sex enum('0','1','2') NOT NULL default '0',
dolgnost_id tinyint(4) default NULL,
zp mediumint(6) default NULL,
work_graph tinyint(1) default NULL,
zaniatost tinyint(1) default NULL,
data_rogdenia date NOT NULL default '0000-00-00',
famile_status enum('1','2','3','4') NOT NULL default '1',
address tinytext,
email tinytext,
phone tinytext,
education_type enum('1','2','3','4','5','6','7','8') NOT NULL default '1',
education_spec tinytext NOT NULL,
prof_experience text,
prof_skill text,
driver_certificat enum('1','0') NOT NULL default '0',
foreign_passport enum('1','0') NOT NULL default '0',
recommendations tinytext,
photo_path tinytext, // =0
shelf_time date default '2001-01-01', // =0
publish enum('1','0') default '1',
verified enum('0','1') default '0', // =0
nature tinytext, // =0
avto_owne enum('0','1') NOT NULL default '0',
PRIMARY KEY (soiskatel_id),
KEY dolgnost_id (dolgnost_id)
) TYPE=MyISAM;
CREATE TABLE soiskatel_education (
education_id smallint(5) NOT NULL auto_increment, // простой авто_инкремент
soiskatel_id smallint(4) NOT NULL default '0', // =$id;
date_from date NOT NULL default '0000-00-00',
date_to date NOT NULL default '0000-00-00',
school_name tinytext NOT NULL,
education_type enum('1','2','3','4','5','6','7','8') NOT NULL default '4',
education_spec tinytext NOT NULL,
education_mark tinyint(1) default NULL,
PRIMARY KEY (education_id),
KEY soiskatel_id (soiskatel_id)
) TYPE=MyISAM;
CREATE TABLE soiskatel_work_stage (
work_id smallint(5) NOT NULL auto_increment, // простой авто_инкремент
soiskatel_id smallint(4) NOT NULL default '0', // =$id;
date_from date NOT NULL default '0000-00-00',
date_to date NOT NULL default '0000-00-00',
job_name tinytext NOT NULL,
sfera_deiatelnosti_id tinyint(3) NOT NULL default '0',
dolgnost_id tinyint(4) default NULL,
obiazanosti tinytext,
PRIMARY KEY (work_id),
KEY soiskatel_id (soiskatel_id)
) TYPE=MyISAM;
<?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>
$xml_text="<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>";
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.');
}
}
}
__________________
Админ - вождь Апачей...
...а чего, с encoding="koi8-r" ошибки выдает?
__________________
FAQ OFF
SCHIZO угу... какие то запарки кри "импорте".. крякозяброй...
he][es добавил 13-02-2005 в 16:57:56:
SCHIZO а в общем и целом какие нить советы будут?
исправления? Ошибки?
__________________
Админ - вождь Апачей...
he][es он у тебя вообще с кодировкой отличной от UTF-8 не работает или просто с читабельностью вывода пробемы?
P.S.
Я бы не стал использовать экпериментальное расширение для продакшн задач. У меня есть класс для создания собственного XML парсера. Тебе останется только написать произвольные функции обработки данных и подсунуть их экземпляру этого класса.
Если интересно могу выложить.
__________________
FAQ OFF
quote:
просто с читабельностью вывода пробемы
quote:
Я бы не стал использовать экпериментальное расширение для продакшн задач.
quote:
Если интересно могу выложить.
__________________
Админ - вождь Апачей...
setlocale(LC_ALL, "ru_RU.CP1251");
__________________
Новая жизнь HMM3(Герои 3.5 WoG)http://hmm3.fclan.ru
fStrange при чем тут cp1251?
he][es я запутался в твоих объяснениях... значит в XML документе ты объявляешь что он в кодировке UTF-8. А реально в какой? Ð_то раз.
Что мешает объявить кодировку не UTF-8 а KOI8-R? (или любую другую соответствующюю кодировке запроса при отправке формы) Ð_то два.
Третье. С какого момента текст становиться нечитабельным? На каком этапе? После какого преобразования? Или только при выводе из базы после записи, а напрямую из БД читается нормально?
__________________
FAQ OFF
quote:
А реально в какой?
quote:
или любую другую соответствующюю кодировке запроса при отправке формы
quote:
С какого момента текст становиться нечитабельным? На каком этапе?

__________________
Админ - вождь Апачей...
he][es ты пробовал указывать в декларации XML документа encoding="KOI8-R"? Судя по последнему посту ты сразу туда UTF-8 пишешь.. Или я чего то недопонял?
__________________
FAQ OFF
SCHIZO Угу. не совсем. Без разницы в какой кодировке док-т (декларация ВСЕГДА соответствует реальной кодировке (я всё правильно указываю)) на "экран" он всегда его в UTF отдает!..
__________________
Админ - вождь Апачей...
he][es, тогда это не лечится... можно ускорить процесс выводя всю страницу в UTF-8, или накапливая данные в буфере вывода вызвать iconv один раз..
Ð_асширение simplexml экспериментальное, в доках ничего кроме функций и методов не описано. В продакшн вариантах функций работы с XML хоть константы какие то есть или параметры позволяющие кодировку явно указывать, а тут вообще ничего.
__________________
FAQ OFF
quote:
В продакшн вариантах функций работы с XML
quote:
можно ускорить процесс выводя всю страницу в UTF-8, или накапливая данные в буфере вывода вызвать iconv один раз..
__________________
Админ - вождь Апачей...
he][es ХЗ, я не пробовал..
__________________
FAQ OFF
SCHIZO а по первому вопросу?..
(н в принцие? Грубых ошибок нет?)
__________________
Админ - вождь Апачей...
he][es, попробуй с error_reporting E_ALL, все увидишь сам..
__________________
FAQ OFF
| Формат времени GMT. Текущее время 04:32. | Страницы (2): [1] 2 » Показаны 18 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.