Перейти к содержимому


Как подгрузить кладр?

кладр

Сообщений в теме: 13

#1 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 268 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 04 Февраль 2013 - 12:26

чтоб он нормально работал и была возможность обновлять его не изменяя структуры.
Купил лицензию КБ

#2 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 268 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 05 Февраль 2013 - 06:47

Что в такой системе и досих пор нет КЛАДР или ФИАС? :blink: :o
Купил лицензию КБ

#3 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Февраль 2013 - 08:57

Не рассматривали пока этот вопрос. Но наверняка можно сделать при желании, у нас достаточно гибкая система.

#4 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 268 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 05 Февраль 2013 - 09:39

Сделать то можно, это да, но почему не сделать стандартной функцией обработки? адресные базы КЛАДР или ФИАС всегда нужны
Купил лицензию КБ

#5 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 268 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 05 Февраль 2013 - 09:47

возникла проблема - при подгрузке кладра (200000 записей 6 полей) из CSV мускуль отваливается по таймауту. Хостинг не нашь настроить мускуль не представляется возможным
Fatal error: Maximum execution time of 30 seconds exceeded in /home/virtwww/w_test-blgd359_85ffc168/http/include/functions_cron.php on line 0
так что вопрос с самостоятельным написанием - проблема. Вариант с загрузкой напрямую в MYSQL - не рассматривается, т.к. должна быть полная автоматизация процесса и распарсивание кодов для создания связей.
Купил лицензию КБ

#6 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Февраль 2013 - 15:25

Этот вопрос уже добавлен на рассмотрение. Что касается "отваливания" по таймауту - причина не в MySQL, а в PHP. Как правило хостеры позволяют менять этот параметр (max_execution_time). Тем не менее это тоже решим со временем. В будущей версии 1.9.7, к примеру, эта проблема уже решена для загрузки бэкапа (т.е. отваливания нет в любом случае).

#7 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

  • Активный пользователь
  • PipPipPip
  • 1 357 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 06 Февраль 2013 - 14:19

БИК, кстати, тоже можно сделать как стандартное решение при заполнении реквизитов, например.
У меня подключен и на форуме все описано. Обновление раз в неделю.

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#8 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 268 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 26 Февраль 2013 - 06:10

Вопрос по "гибкой системе"
есть 4 таблицы:
1. KLADR - полностью структура копирует с таблицы KLADR предоставляемой ФНС
2.Субъект РФ - Код, наименование, сокр - поля текстовые
3.Муниципальные районы (подчиненная) - Субъект РФ (связь по полю "Наименование"), Код, Наименование, Сокр. - поля текстовые
4.Населённые пункты (подчиненная) - Муниципальные районы (связь по полю "Наименование"), Код, Наименование, Сокр. - поля текстовые

есть вычисление в таблице KLADR при импорте:


$row['Регион']=substr($line['CODE'],0,2);
$row['Район']=substr($line['CODE'],2,3);
$row['Город']=substr($line['CODE'],5,3);
$row['Нас. пункт']=substr($line['CODE'],8,3);
$row['Актуальность']=substr($line['CODE'],11,2);
$row['Наименование']=$line['NAME'].' '.$line['SOCR'];
if( (intval($row['Район'])+intval($row['Город'])+intval($row['Нас. пункт'])+intval($row['Актуальность']))==0) {
$ins['Код']=$line['CODE'];
$ins['Наименование']=$line['NAME'];
$ins['сокр.']=$line['SOCR'];
insert_query($ins,"Субъект РФ");
}else {
if( ((intval($row['Город'])+intval($row['Нас. пункт'])+intval($row['Актуальность']))==0)&(intval($row['Район'])!=0)) {
$Query="select id from cb_data231 where f2391='".$row['Регион']."00000000000'";
$res=mysql_query($Query);
$ins['Субъект РФ']=$res['id'];
$ins['Код']=$line['CODE'];
$ins['Наименование']=$line['NAME'];
$ins['сокр.']=$line['SOCR'];
insert_query($ins,"Муниципальные районы"); 
/*$Query="insert into cb_data241 ('Субъект РФ','Код','Наименование','сокр.') values('".$res['id']."','".$line['CODE']."','".$line['NAME']."','".$line['SOCR']."')";
$res2=mysql_query($Query);*/

}else { 
if (intval($row['Актуальность'])==0) {
$Query="select id from cb_data241 where f2471='".substr($line['CODE'],0,5)."00000000'";
$res=mysql_query($Query);
$ins['Муниципальный район']=$res['id'];
$ins['Код']=$line['CODE'];
$ins['Наименование']=$line['NAME'];
$ins['сокр.']=$line['SOCR'];
insert_query($ins,"Населённые пункты");

}
}
};
if( ((intval($row['Район'])+intval($row['Город'])+intval($row['Нас. пункт']))==0)&(intval($row['Актуальность'])!=0)) {
$Query="select id from cb_data231 where f2391='".$row['Регион']."00000000000'";
if ($res=mysql_query($Query)){
$upd[status]=1;
update_query($upd,"Субъект РФ","id=".$res['id']);
}
}else {
if( ((intval($row['Город'])+intval($row['Нас. пункт']))==0)&(intval($row['Район'])!=0)&(intval($row['Актуальность'])!=0)) {
$Query="select id from cb_data231 where f2471='".$row['Район']."00000000'";
if ($res=mysql_query($Query)){
$upd[status]=1;
update_query($upd,"Муниципальные районы","id=".$res['id']);
} 
}else{ 
if (intval($row['Актуальность'])!=0){
$Query="select id from cb_data251 where f2551='".substr($line['CODE'],0,11)."00'";
if ($res=mysql_query($Query)){
$upd[status]=1;
update_query($upd,"Населённые пункты","id=".$res['id']);
} 
}
}
};

так вот, почему не проставляются связи? здесь в примере я вставляю ID-ники в поля связи, но пытался и наименования - глюк тот же

Сообщение отредактировал OLDest: 26 Февраль 2013 - 06:43

Купил лицензию КБ

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Февраль 2013 - 11:36

А где у вас в коде поля связи? Строки укажите, где идет присвоение.

#10 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 268 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 26 Февраль 2013 - 13:22

$ins['Субъект РФ']=$res['id'];
$ins['Муниципальный район']=$res['id'];
Купил лицензию КБ

#11 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 26 Февраль 2013 - 13:57

Ошибка в работе с запросами. Правильный вариант:

$res=mysql_query($Query);
$row2=mysql_result($res); // забыли получить строку из запроса!
$ins['Субъект РФ']=$row2['id'];


#12 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 268 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 26 Февраль 2013 - 15:17

сорри, глаз видать замылился
Купил лицензию КБ

#13 OLDest

    Активный участник

  • Пользователи
  • PipPipPip
  • 268 сообщений
  • Пол:Мужчина
  • Город:Калининград

Отправлено 27 Февраль 2013 - 04:23

<b>Warning</b>: Wrong parameter count for mysql_result() in <b>/home/virtwww/w_test-blgd359_85ffc168/http/cron.php(0) : eval()'d code</b> on line <b>71</b><br />
вот что выдает с $row2=mysql_result($res);
Купил лицензию КБ

#14 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 27 Февраль 2013 - 11:11

Да, у меня видимо тоже что-то "замылилось"..

mysql_fetch_array конечно должен быть, а не mysql_result





Количество пользователей, читающих эту тему: 8

0 пользователей, 8 гостей, 0 анонимных