Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $reader2->open($file);
- <pre>
- //ini_set("display_errors",1);
- set_time_limit(0);
- //mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
- $hostname = "localhost";
- $username = "юзер";
- $password = "пароль";
- $dbName = "knigi";/* Таблица MySQL, в которой хранятся данные *//* создать соединение */
- $dbu = mysql_connect($hostname,$username,$password) or die("Не могу создать соединение ");
- @mysql_select_db("$dbName") or die("Не могу выбрать базу данных ");
- mysql_set_charset('utf8',$dbu);
- include 'functions.php';
- $nowdate = date("Y-m-d H:i:s");
- //почистим данные перед запуском на время тестов
- //чистим связи
- mysql_query("TRUNCATE link_attribute");
- mysql_query("TRUNCATE link_attribute_group");
- mysql_query("TRUNCATE link_cat");
- mysql_query("TRUNCATE link_izdat");
- mysql_query("TRUNCATE link_product");
- mysql_query("TRUNCATE link_attribute");
- //чистим атрибуты
- mysql_query("TRUNCATE import_attribute_values");
- mysql_query("TRUNCATE os_attribute");
- mysql_query("TRUNCATE os_attribute_description");
- mysql_query("TRUNCATE os_attribute_group");
- mysql_query("TRUNCATE os_attribute_group_description");
- //чистим производителей
- mysql_query("TRUNCATE os_manufacturer");
- mysql_query("TRUNCATE os_manufacturer_description");
- mysql_query("TRUNCATE os_manufacturer_to_store");
- //чистим данные категорий
- mysql_query("TRUNCATE os_category");
- mysql_query("TRUNCATE os_category_description");
- mysql_query("TRUNCATE os_category_filter");
- mysql_query("TRUNCATE os_category_path");
- mysql_query("TRUNCATE os_category_to_layout");
- mysql_query("TRUNCATE os_category_to_store");
- //чистим данные товаров
- mysql_query("TRUNCATE os_product");
- mysql_query("TRUNCATE os_product_attribute");
- mysql_query("TRUNCATE os_product_description");
- mysql_query("TRUNCATE os_product_discount");
- mysql_query("TRUNCATE os_product_filter");
- mysql_query("TRUNCATE os_product_image");
- mysql_query("TRUNCATE os_product_to_category");
- mysql_query("TRUNCATE os_product_to_layout");
- mysql_query("TRUNCATE os_product_to_store");
- mysql_query("TRUNCATE os_url_alias");
- include "/var/www/www-root/data/www/Сервер/library/SimpleXMLReader.php";
- $file = "import3.xml";
- $reader = new SimpleXMLReader;
- $reader->open($file);
- $reader->registerCallback("Группы", function($reader) {
- $xml = $reader->expandSimpleXml(); // copy of the current node as a SimpleXMLElement object
- $num1 = $xml->count();
- for ($i = 0; $i <= $num1-1; $i++) {
- //записываем родительские категории в базу
- $CatImportId = $xml->Группа[$i]->Ид;
- $CatImportName = $xml->Группа[$i]->Наименование;
- $CatImportImage = $xml->Группа[$i]->Картинка;
- $CatImportSort = $xml->Группа[$i]->Сортировка;
- $parent = get_cat($CatImportId,$CatImportName,$CatImportImage,$CatImportSort,0,0);
- $CatChildImportName = $xml->Группа[$i]->Наименование;
- $num2 = $xml->Группа[$i]->Группы->Группа->count();
- for ($i2 = 0; $i2 <= $num2-1; $i2++) {
- $CatChildImportId = $xml->Группа[$i]->Группы->Группа[$i2]->Ид;
- $CatChildImportName = $xml->Группа[$i]->Группы->Группа[$i2]->Наименование;
- $CatChildImportImage = $xml->Группа[$i]->Группы->Группа[$i2]->Картинка;
- $CatChildImportSort = $xml->Группа[$i]->Группы->Группа[$i2]->Сортировка;
- $parent2 = get_cat($CatChildImportId,$CatChildImportName,$CatChildImportImage,$CatChildImportSort,2,$parent);
- $num3 = $xml->Группа[$i]->Группы->Группа[$i2]->count();
- for ($i3 = 0; $i3 <= $num3-1; $i3++) {
- //if(isset($xml->Группа[$i]->Группы->Группа[$i2]->Группы->Группа[$i3]->Ид)){
- $CatChild2ImportId = $xml->Группа[$i]->Группы->Группа[$i2]->Группы->Группа[$i3]->Ид;
- //}
- //if(isset($xml->Группа[$i]->Группы->Группа[$i2]->Группы->Группа[$i3]->Наименование)){
- $CatChild2ImportName = $xml->Группа[$i]->Группы->Группа[$i2]->Группы->Группа[$i3]->Наименование;
- //}
- //if(isset($xml->Группа[$i]->Группы->Группа[$i2]->Группы->Группа[$i3]->Картинка)){
- $CatChild2ImportImage = $xml->Группа[$i]->Группы->Группа[$i2]->Группы->Группа[$i3]->Картинка;
- //}
- //if(isset($xml->Группа[$i]->Группы->Группа[$i2]->Группы->Группа[$i3]->Сортировка)){
- $CatChild2ImportSort = $xml->Группа[$i]->Группы->Группа[$i2]->Группы->Группа[$i3]->Сортировка;
- //}
- $parent3 = get_cat($CatChild2ImportId,$CatChild2ImportName,$CatChild2ImportImage,$CatChild2ImportSort,3,$parent2);
- }
- }
- }
- unset($xml);
- });
- $reader->parse();
- $reader->close();
- $reader2 = new SimpleXMLReader;
- $reader2->open($file);
- $reader2->registerCallback("Свойства", function($reader2) {
- $array2 = $reader2->expandSimpleXml(); // copy of the current node as a SimpleXMLElement object
- //парсим базу справочников
- $num4 = $array2->Свойство->count();
- //создаем новую группу атрибутов
- mysql_query("INSERT INTO `os_attribute_group` VALUES (NULL, '0');");
- //получаем вставленный id
- $AttributeGroupId=mysql_insert_id();
- //сохраняем в связи
- //mysql_query("INSERT INTO `link_attribute_group` VALUES ('$AttributeGroupId', '$id');");
- //задаем название группы
- mysql_query("INSERT INTO `os_attribute_group_description` VALUES ('$AttributeGroupId', '1', 'Характеристики');");
- //перебираем группы атрибутов
- for ($i4 = 0; $i4 <= $num4-1; $i4++) {
- $array = $array2->Свойство[$i4]->ВариантыЗначений->Справочник;
- $id = $array2->Свойство[$i4]->Ид;
- $name = $array2->Свойство[$i4]->Наименование;
- if ($name == 'Издательство'){ //издателя кидаем в производители
- $num5 = $array->count();
- for ($i5 = 0; $i5 <= $num5-1; $i5++) {
- $IdImportIzdat = $array[$i5]->ИдЗначения;
- $NameImportIzdat = $array[$i5]->Значение;
- if ($NameImportIzdat == ''){}else{
- mysql_query("INSERT INTO `os_manufacturer` VALUES (NULL, '$NameImportIzdat', 'catalog/demo/htc_logo.jpg', '0');");
- $IzdatId=mysql_insert_id();
- //сохраняем в связи
- mysql_query("INSERT INTO `link_izdat` VALUES ('$IzdatId', '$IdImportIzdat');");
- mysql_query("INSERT INTO `os_manufacturer_description` VALUES ('$IzdatId', '1', '$NameImportIzdat', 'Пример текста в описания издателя', '$NameImportIzdat', '$NameImportIzdat', '', '');");
- //привязываем производителя к магазину
- mysql_query("INSERT INTO `os_manufacturer_to_store` VALUES ('$IzdatId', '0');");
- $importId = $array[$i5]->Значение;
- }
- }
- }else{
- mysql_query("INSERT INTO `os_attribute` VALUES (NULL, '$AttributeGroupId', '0');");
- $AttributeId=mysql_insert_id();
- //сохраняем в связи
- mysql_query("INSERT INTO `link_attribute` VALUES ('$AttributeId', '$id');");
- //задаем имя значения атрибута
- mysql_query("INSERT INTO `os_attribute_description` VALUES ('$AttributeId', '1', '$name');");
- $num5 = $array->count();
- for ($i5 = 0; $i5 <= $num5-1; $i5++) {
- $IdImportAtt = $array[$i5]->ИдЗначения;
- $NameImportAtt = $array[$i5]->Значение;
- if ($NameImportAtt == ''){}else{
- mysql_query("INSERT INTO `import_attribute_values` VALUES (NULL, '$IdImportAtt', '$AttributeId', '$NameImportAtt', '')");
- //$AttValueId=mysql_insert_id();
- }
- }
- }
- //get_attribute ($id, $name, $array);
- }
- unset($array2);
- });
- $reader2->parse();
- $reader2->close();
- $reader3 = new SimpleXMLReader;
- $reader3->open($file);
- $reader3->registerCallback("Товары", function($reader3) {
- $array3 = $reader3->expandSimpleXml(); // copy of the current node as a SimpleXMLElement object
- ///поехали парсить товары
- $num = $array3->Товар->count();
- for ($i = 0; $i <= $num-1; $i++) {
- $idProduct = $array3->Товар[$i]->Ид;
- $groupId = $array3->Товар[$i]->Группы->Ид;
- $nameProduct = $array3->Товар[$i]->Наименование;
- $titleProduct = $array3->Товар[$i]->Титл;
- $descProduct = $array3->Товар[$i]->Описание;
- $imgProduct = $array3->Товар[$i]->Картинка;
- $array = $array3->Товар[$i];
- get_product($idProduct, $groupId, $nameProduct, $titleProduct, $descProduct, $imgProduct, $array);
- }
- unset($array3);
- });
- $reader3->parse();
- $reader3->close();
- $start = microtime(true);
- // тело скрипта
- echo'All good!!!!!!!!!!!!!!!!!<br>';
- echo 'time: '.(microtime(true) - $start).' sec.<br>Memory:';
- echo memory_get_usage() . "n"; // 36640
- </pre>
- $dbh->beginTransaction();
- $dbh->beginTransaction();
- $dbh->commit();
- $dbh->rollBack();
Add Comment
Please, Sign In to add comment