Bross Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 Добрый день. Стоит задача обновлять наличие по определенным столбцам в CSV-файле - 3 столбец это артикул, 8 - наличие. Попытался решить её таким образом: public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++) { $sql = "select sku, quantity from product"; $res = mysql_query($sql); while ($row = mysql_fetch_array($res)){ if ($data[3]==$row['sku']){ $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); if ($data[8] != $row['quantity']) { $sql = mysql_query("UPDATE". DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; } else {echo 'что-то пошло не так!';} } } } } fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } } Но позиции обновляются как-то выборочно. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/files/file/511-%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B2-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5-csv/ Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 public function import83() {первая мысль - "куда делись предыдущие 82 метода? О_о". :Dдля начала приведи код к читабельному виду. всё, что у тебя внутри for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++) {дикий трэш, вызывающий вот такую реакцию - особенно - сначала сравнение sku if ($data[3]==$row['sku']){а ПОТОМ вырезание из него всего, кроме цифр $sku = (int)preg_replace("/\D/","", $data[3]);и использование его покоцанного в sql-выборке ..."WHERE sku =" . $sku); Но позиции обновляются как-то выборочно. в чем это проявляется? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 первая мысль - "куда делись предыдущие 82 метода? О_о". :D Они не выдержали) использование его покоцанного в sql-выборке Так мне и нужны одни цифры, встречаются пробелы в артикуле. в чем это проявляется? Эм, работает только счетчик и показывает сколько нашлось совпадений артикулов. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 https://opencartforum.com/files/file/511-%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B2-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5-csv/ Благодарю за модуль. Но мне нужно ОБНОВЛЯТЬ наличие по артикулам из других файлов - прайс-листов поставщика. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 приведи код к читабельному виду. определись: "позиции обновляются..." или "работает только счетчик..."? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 приведи код к читабельному виду. определись: "позиции обновляются..." или "работает только счетчик..."? Читабельному какому? Если бы я знал какой читабельный, он был бы читабелен. Так? for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){ $sql = "select sku, quantity from product"; $res = mysql_query($sql); $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); while ($row = mysql_fetch_array($res)){ if ($sku == $row['sku']){ if ($quan != $row['quantity']) { $sql = mysql_query("UPDATE". DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; } else {echo 'что-то пошло не так!';} } } } Раньше относительно успешно обновлялись. Сейчас работает только счетчик. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 двойной цикл :blink: for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){..while ($row = mysql_fetch_array($res)){ Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Ну, как сказать))) Мне так проще было. Скажите, просто - что ты тут и тут не прав. А риторические вопросы мне проблему не решат ((( Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Большое спасибо. Теперь я все понял и пошел делать как надо. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 выше ссылка на модуль которые делает похожее смотрите как там сделано, переделывайте под свои нужды то что вы написали это мусор, не думаю что у кого-то есть желание в нем копаться Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Воспользовался Вашим советом. Однако, не приносит нужных результатов. Тут тоже мусор? public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $this->allowed_fields->sku) { var_dump ($data); } else { var_dump ($bad); exit;} } } } } $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) ДА. upd: но меньше :-) upd2: $this->allowed_fields->sku --- тут что? ... if($sku == $this->allowed_fields->sku) { var_dump ($data); ...>> ... if($sku == $this->allowed_fields->sku) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; var_dump ($data); ... Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам импорт отдельных столбцов CSV Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 public function import83() {первая мысль - "куда делись предыдущие 82 метода? О_о". :Dдля начала приведи код к читабельному виду. всё, что у тебя внутри for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++) {дикий трэш, вызывающий вот такую реакцию - особенно - сначала сравнение sku if ($data[3]==$row['sku']){а ПОТОМ вырезание из него всего, кроме цифр $sku = (int)preg_replace("/\D/","", $data[3]);и использование его покоцанного в sql-выборке ..."WHERE sku =" . $sku); Но позиции обновляются как-то выборочно. в чем это проявляется? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 первая мысль - "куда делись предыдущие 82 метода? О_о". :D Они не выдержали) использование его покоцанного в sql-выборке Так мне и нужны одни цифры, встречаются пробелы в артикуле. в чем это проявляется? Эм, работает только счетчик и показывает сколько нашлось совпадений артикулов. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 https://opencartforum.com/files/file/511-%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B2-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5-csv/ Благодарю за модуль. Но мне нужно ОБНОВЛЯТЬ наличие по артикулам из других файлов - прайс-листов поставщика. Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 приведи код к читабельному виду. определись: "позиции обновляются..." или "работает только счетчик..."? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 приведи код к читабельному виду. определись: "позиции обновляются..." или "работает только счетчик..."? Читабельному какому? Если бы я знал какой читабельный, он был бы читабелен. Так? for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){ $sql = "select sku, quantity from product"; $res = mysql_query($sql); $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); while ($row = mysql_fetch_array($res)){ if ($sku == $row['sku']){ if ($quan != $row['quantity']) { $sql = mysql_query("UPDATE". DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; } else {echo 'что-то пошло не так!';} } } } Раньше относительно успешно обновлялись. Сейчас работает только счетчик. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 двойной цикл :blink: for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){..while ($row = mysql_fetch_array($res)){ Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Ну, как сказать))) Мне так проще было. Скажите, просто - что ты тут и тут не прав. А риторические вопросы мне проблему не решат ((( Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Большое спасибо. Теперь я все понял и пошел делать как надо. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 выше ссылка на модуль которые делает похожее смотрите как там сделано, переделывайте под свои нужды то что вы написали это мусор, не думаю что у кого-то есть желание в нем копаться Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Воспользовался Вашим советом. Однако, не приносит нужных результатов. Тут тоже мусор? public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $this->allowed_fields->sku) { var_dump ($data); } else { var_dump ($bad); exit;} } } } } $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) ДА. upd: но меньше :-) upd2: $this->allowed_fields->sku --- тут что? ... if($sku == $this->allowed_fields->sku) { var_dump ($data); ...>> ... if($sku == $this->allowed_fields->sku) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; var_dump ($data); ... Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам импорт отдельных столбцов CSV Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 первая мысль - "куда делись предыдущие 82 метода? О_о". :D Они не выдержали) использование его покоцанного в sql-выборке Так мне и нужны одни цифры, встречаются пробелы в артикуле. в чем это проявляется? Эм, работает только счетчик и показывает сколько нашлось совпадений артикулов. Надіслати Поділитися на інших сайтах More sharing options...
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 https://opencartforum.com/files/file/511-%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82-%D0%B8%D0%BC%D0%BF%D0%BE%D1%80%D1%82-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B2-%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B5-csv/ Благодарю за модуль. Но мне нужно ОБНОВЛЯТЬ наличие по артикулам из других файлов - прайс-листов поставщика. Надіслати Поділитися на інших сайтах More sharing options...
afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 приведи код к читабельному виду. определись: "позиции обновляются..." или "работает только счетчик..."? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 приведи код к читабельному виду. определись: "позиции обновляются..." или "работает только счетчик..."? Читабельному какому? Если бы я знал какой читабельный, он был бы читабелен. Так? for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){ $sql = "select sku, quantity from product"; $res = mysql_query($sql); $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); while ($row = mysql_fetch_array($res)){ if ($sku == $row['sku']){ if ($quan != $row['quantity']) { $sql = mysql_query("UPDATE". DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; } else {echo 'что-то пошло не так!';} } } } Раньше относительно успешно обновлялись. Сейчас работает только счетчик. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 двойной цикл :blink: for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){..while ($row = mysql_fetch_array($res)){ Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Ну, как сказать))) Мне так проще было. Скажите, просто - что ты тут и тут не прав. А риторические вопросы мне проблему не решат ((( Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Большое спасибо. Теперь я все понял и пошел делать как надо. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 выше ссылка на модуль которые делает похожее смотрите как там сделано, переделывайте под свои нужды то что вы написали это мусор, не думаю что у кого-то есть желание в нем копаться Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Воспользовался Вашим советом. Однако, не приносит нужных результатов. Тут тоже мусор? public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $this->allowed_fields->sku) { var_dump ($data); } else { var_dump ($bad); exit;} } } } } $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) ДА. upd: но меньше :-) upd2: $this->allowed_fields->sku --- тут что? ... if($sku == $this->allowed_fields->sku) { var_dump ($data); ...>> ... if($sku == $this->allowed_fields->sku) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; var_dump ($data); ... Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам импорт отдельных столбцов CSV Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 приведи код к читабельному виду. определись: "позиции обновляются..." или "работает только счетчик..."? Читабельному какому? Если бы я знал какой читабельный, он был бы читабелен. Так? for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){ $sql = "select sku, quantity from product"; $res = mysql_query($sql); $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); while ($row = mysql_fetch_array($res)){ if ($sku == $row['sku']){ if ($quan != $row['quantity']) { $sql = mysql_query("UPDATE". DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; } else {echo 'что-то пошло не так!';} } } } Раньше относительно успешно обновлялись. Сейчас работает только счетчик. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 двойной цикл :blink: for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){..while ($row = mysql_fetch_array($res)){ Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Ну, как сказать))) Мне так проще было. Скажите, просто - что ты тут и тут не прав. А риторические вопросы мне проблему не решат ((( Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Большое спасибо. Теперь я все понял и пошел делать как надо. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 выше ссылка на модуль которые делает похожее смотрите как там сделано, переделывайте под свои нужды то что вы написали это мусор, не думаю что у кого-то есть желание в нем копаться Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Воспользовался Вашим советом. Однако, не приносит нужных результатов. Тут тоже мусор? public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $this->allowed_fields->sku) { var_dump ($data); } else { var_dump ($bad); exit;} } } } } $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) ДА. upd: но меньше :-) upd2: $this->allowed_fields->sku --- тут что? ... if($sku == $this->allowed_fields->sku) { var_dump ($data); ...>> ... if($sku == $this->allowed_fields->sku) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; var_dump ($data); ... Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам импорт отдельных столбцов CSV Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 двойной цикл :blink: for ($i=1; $data = fgetcsv($handle, 0, ';', '"'); $i++){..while ($row = mysql_fetch_array($res)){ Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Ну, как сказать))) Мне так проще было. Скажите, просто - что ты тут и тут не прав. А риторические вопросы мне проблему не решат ((( Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Большое спасибо. Теперь я все понял и пошел делать как надо. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 выше ссылка на модуль которые делает похожее смотрите как там сделано, переделывайте под свои нужды то что вы написали это мусор, не думаю что у кого-то есть желание в нем копаться Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Воспользовался Вашим советом. Однако, не приносит нужных результатов. Тут тоже мусор? public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $this->allowed_fields->sku) { var_dump ($data); } else { var_dump ($bad); exit;} } } } } $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) ДА. upd: но меньше :-) upd2: $this->allowed_fields->sku --- тут что? ... if($sku == $this->allowed_fields->sku) { var_dump ($data); ...>> ... if($sku == $this->allowed_fields->sku) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; var_dump ($data); ... Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам импорт отдельных столбцов CSV Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 mysql_fetch_array mysql_query вы в код движка заглядывали? Ну, как сказать))) Мне так проще было. Скажите, просто - что ты тут и тут не прав. А риторические вопросы мне проблему не решат ((( Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Большое спасибо. Теперь я все понял и пошел делать как надо. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 выше ссылка на модуль которые делает похожее смотрите как там сделано, переделывайте под свои нужды то что вы написали это мусор, не думаю что у кого-то есть желание в нем копаться Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Воспользовался Вашим советом. Однако, не приносит нужных результатов. Тут тоже мусор? public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $this->allowed_fields->sku) { var_dump ($data); } else { var_dump ($bad); exit;} } } } } $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) ДА. upd: но меньше :-) upd2: $this->allowed_fields->sku --- тут что? ... if($sku == $this->allowed_fields->sku) { var_dump ($data); ...>> ... if($sku == $this->allowed_fields->sku) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; var_dump ($data); ... Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам импорт отдельных столбцов CSV Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 всё не так весь кусок кода - пример как делать не надо Большое спасибо. Теперь я все понял и пошел делать как надо. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 выше ссылка на модуль которые делает похожее смотрите как там сделано, переделывайте под свои нужды то что вы написали это мусор, не думаю что у кого-то есть желание в нем копаться Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Воспользовался Вашим советом. Однако, не приносит нужных результатов. Тут тоже мусор? public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $this->allowed_fields->sku) { var_dump ($data); } else { var_dump ($bad); exit;} } } } } $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) ДА. upd: но меньше :-) upd2: $this->allowed_fields->sku --- тут что? ... if($sku == $this->allowed_fields->sku) { var_dump ($data); ...>> ... if($sku == $this->allowed_fields->sku) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; var_dump ($data); ... Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам импорт отдельных столбцов CSV Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Воспользовался Вашим советом. Однако, не приносит нужных результатов. Тут тоже мусор? public function import83() { if($this->request->server['REQUEST_METHOD'] == 'POST' && $this->validate()) { if(is_uploaded_file($this->request->files['import83']['tmp_name'])) { if(($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { $headers = fgetcsv($handle, 0, ';', '"'); $k = 0; //счетчик позиций while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $this->allowed_fields->sku) { var_dump ($data); } else { var_dump ($bad); exit;} } } } } $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; fclose($handle); $this->session->data['success'] = sprintf($this->language->get('Обновлено %s позиций'), $k); $this->cache->delete('product'); } } $this->redirect($this->url->link('module/csvimport', 'token=' . $this->session->data['token'], 'SSL')); } Надіслати Поділитися на інших сайтах More sharing options...
afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) ДА. upd: но меньше :-) upd2: $this->allowed_fields->sku --- тут что? ... if($sku == $this->allowed_fields->sku) { var_dump ($data); ...>> ... if($sku == $this->allowed_fields->sku) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; var_dump ($data); ... Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options... afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам импорт отдельных столбцов CSV
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 ДА. upd: но меньше :-) Потому что оригинального кода больше. Почему нельзя сравнить $sku и $this->allowed_fields->sku ? Надіслати Поділитися на інших сайтах More sharing options...
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 $this->allowed_fields->sku --- тут что? На сколько я понимаю, массив из таблицы product)) public $allowed_fields = array('model', 'sku', 'upc', 'location', 'quantity', 'stock_status_id', 'image', 'manufacturer_id', 'shipping', 'price', 'points', 'tax_class_id', 'date_available', 'weight', 'weight_class_id', 'length', 'width', 'height', 'length_class_id', 'subtract', 'minimum', 'sort_order', 'status', 'date_added', 'date_modified', 'viewed'); Надіслати Поділитися на інших сайтах More sharing options...
afwollis Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 (змінено) http://php.net/manual/ru/function.fgetcsv.php <?php $row = 1; if (($handle = fopen("test.csv", "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } ?> $row = 1; $k = 0; if (($handle = fopen($this->request->files['import83']['tmp_name'], "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); echo "<p> $num полей в строке $row: <br /></p>\n"; if (isset($data[3]) && isset($data[8])) { // ты уверен, что 3-8, а не 2-7 ? $sku = (int)preg_replace("/\D/","", $data[3]); $qty = (int)preg_replace("/\D/","", $data[8]); $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". (int)$qty . "WHERE sku =" . $this->db->escape($sku)); $k++; } $row++; for ($c=0; $c < $num; $c++) { echo $data[$c] . "<br />\n"; } } fclose($handle); } Змінено 9 квітня 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options... Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options... freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації Парсер товарів. Наповнення Opencart, Insales, Bitrix, CRM та CMS Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 0 коментарів 3 583 перегляди solohaigor 14 квітня 2023 [Поддержка] Автор: solohaigor, 14 квітня 2023 парсинг парсер (і ще %d) Теги: парсинг парсер наполнить наполнение импорт товары перенос спарсить сбор opencart мониторинг цен конкуренты каталог товаров обновление цен импорт и экспорт поставщиков парсер импорт парсер цен парсинг сайта парсинг цен парсинг товаров парсинг в csv обновление цены перенос товаров и категорий 1 відповідь 646 переглядів vvbmusic 18 березня [Поддержка] Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 відповідей 180 переглядів solohaigor 3 квітня Консультація щодо регулярного оновлення даних про наявність товару Автор: solohaigor, 12 березня парсинг товары (і ще %d) Теги: парсинг товары импорт наполнение добавить залить товары залить прайс лист залить прайс лист поставщика поставщик консультация обновление товар обновление товаров перенос товаров перенос товаров csv перенос товаров и категорий сбор ссылок parser parsing парсер парсер товаров парсинг в csv парсер цен товары перенос 0 коментарів 1 134 перегляди solohaigor 12 березня Модуль Import/Export Pro - XLSX -XLS - CSV - XML - JSON - Google Spreadsheets [Поддержка] 1 2 3 4 39 Автор: DevmanExtensions, 6 липня 2018 export import excel (і ще %d) Теги: export import excel import xlsx import xls import csv import xml import google spread export excel export xlsx export xls export csv export xml export google spread excel масове изменения товаров обновления акций бекапы электронная таблица import яндекс yml xml yml xls json 960 відповідей 110 776 переглядів DevmanExtensions 11 жовтня Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Слегка подправил. while(($data = fgetcsv($handle, 0, ';', '"')) !== FALSE) { $num = count($data); $bad = 'не правильно!'; $sku_db = $this->allowed_fields['sku']; $quan = (int)preg_replace("/\D/","", $data[8]); $sku = (int)preg_replace("/\D/","", $data[3]); for($c = 0; $c < $num; $c++) { if(isset($headers[$c])) { //если файл есть, то if($sku == $sku_db) { $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = ". $quan . "WHERE sku =" . $sku); $k++; //var_dump ($data); } } } } По выполнению - белый экран ((Если закоментить запрос к базе, то выводит дату. Надіслати Поділитися на інших сайтах More sharing options...
Bross Опубліковано: 9 квітня 2015 Автор Share Опубліковано: 9 квітня 2015 Благодарю. Только не перезаписывает поля с наличием. Выходит, даже тот ахтунг, что у меня был, раньше работал и менял наличие. А сейчас, как и Ваш код - он не обновляет наличие. Видимо, причина тут в другом. ((( На счет полей уверен. Надіслати Поділитися на інших сайтах More sharing options...
freelancer Опубліковано: 9 квітня 2015 Share Опубліковано: 9 квітня 2015 https://opencartforum.com/forum-12/announcement-1-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-http-500-internal-server-error-%D0%BE%D0%BD%D0%B0-%D0%B6%D0%B5-%D0%B1%D0%B5%D0%BB%D1%8B%D0%B9-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD-%D1%87%D0%B8%D1%82%D0%B0%D1%82%D1%8C-%D0%BF%D1%80%D0%B5%D0%B6%D0%B4/ Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts