|
| |
|
|
| |
для: fxsektor
(31.05.2007 в 15:57)
| | | Ну тогда найдите последний id в таблице и подставьте в переменные $j = последний_id+1, $k = последний_id+2, $l = последний_id+3; | |
| |
|
|
| |
|
|
| |
для: Саня
(31.05.2007 в 15:21)
| | | он, ругнется, т.к. будут совпадать индексы (первая цифра) в таблице ORGANIZATION | |
| |
|
|
| |
|
|
| |
для: fxsektor
(31.05.2007 в 15:14)
| | | Всё работает? СУБД не ругается? | |
| |
|
|
| |
|
|
| |
для: Саня
(31.05.2007 в 13:59)
| | | Да, так, посмотри http://www.proraboty.ru/xml4.php
я там изменил чуть:
$array = array("Название" => "", "Описание" => "", "E-mail" => "", "Номер телефона" => "",
"Тип клиента" => "", "Наименование клиента" => "", "Юр.адрес" => "",
"Физ.адрес" => "", "ИНН" => "", "КПП" => "", "Расчетный счет" => "", "Банк" => "",
"Корр. счет" => "", "БИК" => "", "ОКОНХ" => "", "ОКПО" => "", "Дата рождения" => "",
"Удостоверение" => "", "Серия" => "", "Номер" => "", "Место выдачи" => "",
"Дата выдачи" => "", "Пол" => "", "Подставлять телефон в бланке" => "",
"Агент" => "");
preg_match_all("!<client>(.*)</client>!isU", $xml, $m);
for ( $i = 0; $i < count($m[1]); $i++ ) {
preg_match_all('!<field name="([^"]+)">(.*)</field>!isU', $m[1][$i], $fields);
$array2[$i] = $array;
for ( $j = 0; $j < count($fields[1]); $j++ ) {
$array2[$i][$fields[1][$j]] = $fields[2][$j];
}
}
for ( $i = 0, $j = 1, $k = 2, $l = 3; $i < count($array2); $i++, $j += 3, $k +=3, $l +=3 ) {
$array2[$i]['sql1'] = "INSERT INTO address VALUES(".$j.", 1, 2, 2, '428000', '".$array2[$i]['Физ.адрес']."')"; // физический адрес
$array2[$i]['sql2'] = "INSERT INTO address VALUES(".$k.", 1, 2, 2, '428000', '".$array2[$i]['Юр.адрес']."')"; // юридический адрес
$array2[$i]['sql3'] = "INSERT INTO address VALUES(".$l.", 1, 2, 2, '428000', '0')"; // почтовый адрес
$array2[$i]['sql4'] = "INSERT INTO organization VALUES(0, 0, 0, ".$j.", ".$k.", ".$l.", 0,
'".$array2[$i]['Название']."', '".$array2[$i]['Номер телефона']."', ' ',
'".$array2[$i]['E-mail']."', ' ', 3, '".$array2[$i]['ИНН']."',
'".$array2[$i]['КПП']."', '".$array2[$i]['Расчетный счет']."',
'".$array2[$i]['ОКПО']."', ' ', '".$array2[$i]['БИК']."',
'".$array2[$i]['Банк']."', '".$array2[$i]['Корр. счет']."', ' ', ' ',
'".$array2[$i]['Название'].", ".$array2[$i]['Наименование клиента'].", ".
$array2[$i]['Тип клиента'].", ".$array2[$i]['Дата рождения']."');"; // данные организации
print $array2[$i]['sql1'].'<br>';
print $array2[$i]['sql2'].'<br>';
print $array2[$i]['sql3'].'<br>';
print $array2[$i]['sql4'].'<br>';
}
//print_r($array2);
|
Нужно лишь добавить 2 переменные:
1. начало индекса таблицы ADDRESS
2. начало индекса таблицы ORGANIZATION
и высчитываение индекса здесь NSERT INTO organization VALUES(<<<<0>>>>, 0, 0, ".$j.", ".$k.", ".$l.", 0, | |
| |
|
|
| |
 3.9 Кб |
|
| |
для: fxsektor
(31.05.2007 в 13:46)
| | | Так? | |
| |
|
|
| |
|
|
| |
для: Саня
(31.05.2007 в 12:47)
| | | Саня, спасибо, что ты откликнулся.
Понимаешь, в этом xml файле около 2000 организаций.
print_r выводит весь массив http://www.proraboty.ru/xml3.php
INSERT INTO address VALUES(0, 1, 2, 2, '428000', 'Физический адрес')
INSERT INTO address VALUES(0, 1, 2, 2, '428000', 'Чебоксары, пр. М.Горького')
INSERT INTO address VALUES(0, 1, 2, 2, '428000', '0')
здесь, все ОК, кроме первого 0, который должен расти от некоторго значения (зависит от нынешнего значения счетчика)
INSERT INTO organization VALUES(0, 0, 0, id_физ, id_юр, id_почт, 0,
'Квартон', 'номер телефона', ' ',
'email', ' ', 3, '2129056701',
'212901001', '30101810600000000723',
'02', ' ', '049706723',
'банк', '40702810800000002840', ' ', ' ',
'Квартон, Квартон ООО, Юр.лицо, 01012000');
первый 0 здесь должен тоже расти от определенного значения, id_физ, id_юр, id_почт, - должны соответствовать ключу в таблице ADDRESS для данной организации
Было бы замечательно вывести чистый SQL скрипт типа (сначала должны быть заведены адреса в таблице ADDRESS, т.к. субдшка ругается на отсутствующие ключи):
INSERT INTO address VALUES(3, 1, 2, 2, '428000', 'Физический адрес')
INSERT INTO address VALUES(4, 1, 2, 2, '428000', 'Чебоксары, пр. М.Горького')
INSERT INTO address VALUES(5, 1, 2, 2, '428000', '0')
INSERT INTO organization VALUES(2, 0, 0, 3, 4, 5, 0,
'Квартон', 'номер телефона', ' ',
'email', ' ', 3, '2129056701',
'212901001', '30101810600000000723',
'02', ' ', '049706723',
'банк', '40702810800000002840', ' ', ' ',
'Квартон, Квартон ООО, Юр.лицо, 01012000');
и далее следующая организация | |
| |
|
|
| |
|
|
| |
для: fxsektor
(31.05.2007 в 10:00)
| | | Ну яже говорил - поставьте в конец кода print_r($array2) и получите тексты всех SQL-запросов. | |
| |
|
|
| |
|
|
| |
для: fxsektor
(31.05.2007 в 10:00)
| | |
for ( $i = 0; $i < count($array2); $i++ ) {
$array2[$i]['sql1'] = "INSERT INTO address VALUES(0, 1, 2, 2, '428000', '".$array2[$i]['Физ.адрес']."')"; // физический адрес
$array2[$i]['sql2'] = "INSERT INTO address VALUES(0, 1, 2, 2, '428000', '".$array2[$i]['Юр.адрес']."')"; // юридический адрес
$array2[$i]['sql3'] = "INSERT INTO address VALUES(0, 1, 2, 2, '428000', '0')"; // почтовый адрес
// mysql_query($array2[$i]['sql1']);
print $array2[$i]['sql1'];
$addr1 = mysql_insert_id(); // id физического адреса
// mysql_query($array2[$i]['sql2']);
print $array2[$i]['sql2'];
$addr2 = mysql_insert_id(); // id юридического адреса
// mysql_query($array2[$i]['sql3']);
print $array2[$i]['sql3'];
$addr3 = mysql_insert_id(); // id почтового адреса
|
что-то типа такого | |
| |
|
|
| |
|
|
| |
для: Саня
(30.05.2007 в 18:05)
| | | Саня посмотри, пожалуйста, http://www.proraboty.ru/xml2.php
Было бы лучше, если бы было выведено список INSERT INTO ADDRESS
INSERT INTO ORGANIZATION
необходимости в непосредственной закачки в mysql базу нету, эти данные через буфер обмена попадут SQL Editor и внесены в БД FIREBIRD | |
| |
|
|
| |
|
|
| |
для: fxsektor
(30.05.2007 в 14:44)
| | | ------->
В конце скрипта можно написать print_r($array2) и посмотреть какие сормулировались запросы. | |
| |
|
| |
|