Копирование готового товара (версия 3) new
#21
Отправлено 11 April 2012 - 12:30 PM
#23
Отправлено 13 April 2012 - 12:24 PM
Возможно. Если Вы объясните, о чем речь и что это такое .А по возможности может копирование "сортировки по возрастанию" ещё пропишите?
#24
Отправлено 15 April 2012 - 12:27 AM
$copyProduct["sort_order"],
$copyProduct["eproduct_available_days"],
$copyProduct["eproduct_download_times"],
Собственно, вам нужна только первая строка, остальные уже до кучи, т.к. тоже странно, что не сделаны.
Напрочь не понимаю, зачем автор туда NULL прописал.
#25
Отправлено 16 April 2012 - 02:59 PM
$data = db_query("SELECT categoryID FROM ".CATEGORIY_PRODUCT_TABLE." WHERE productID=$key");
while ($row = db_fetch_assoc($data))
db_query("INSERT ".CATEGORIY_PRODUCT_TABLE." SET productID=$copyProductID, categoryID=".$row['categoryID']."");
Поправил исходное мое письмо #20 с учетом этого и предыдущего изменений.
#26
Отправлено 22 October 2012 - 09:01 PM
#27
Отправлено 22 October 2012 - 09:16 PM
#28
Отправлено 23 October 2012 - 06:48 AM
ИМХО, это просто. А поскольку просто и лично мне не надо, то бесплатно - не интересно.
Если это просто, озвучь тогда пожалуйста разумные пределы твоего интереса
#29
Отправлено 23 October 2012 - 03:00 PM
Если достаточно нижеследующей функции, то бесплатно. Если надо делать еще и интерфейс (там тоже не особо сложно), то рублей пятьсот.Если это просто, озвучь тогда пожалуйста разумные пределы твоего интереса
function prdCopyOptions($ProductID_from,$ProductID_to)
{
$tables = array(PRODUCT_OPTIONS_VALUES_TABLE,PRODUCTS_OPTIONS_SET_TABLE);
foreach ($tables as $table)
{
$data = mysql_query("DESC $table");
$desc = array();
while ($row = mysql_fetch_assoc($data)) $desc[] = $row;
$data = mysql_query("SELECT * FROM $table WHERE productID=$ProductID_from");
while ($row = mysql_fetch_assoc($data))
{
$row['productID'] = $ProductID_to;
$set = array();
foreach ($row as $key => $value)
{
if (isset($value))
{
foreach ($desc as $field) if(in_array($key,$field)) $type = $field['Type'];
switch ($type)
{
case 'int(11)':
$set[] = "$key=$value";
break;
case 'double':
$set[] = "$key=$value";
break;
case 'varchar(255)':
$set[] = "$key='$value'";
break;
}
}
}
mysql_query("REPLACE INTO $table SET ".implode(",",$set));
}
}
}
#30
Отправлено 11 December 2012 - 11:06 PM
Возникала ошибка в SQL-запросе при не выставленном дефолтовом варианте характеристики у товара. Это приводило к сообщению об ошибке в "Статистике ошибок" и к тому, что эта характеристика товара не копировалась.
Заменяем строку
optionID=".$row['optionID'].",variantID=".$row['variantID'].",option_value='".$row['option_value']."',
на
optionID=".$row['optionID'].(isset($row['variantID'])?",variantID=".$row['variantID']:"").",option_value='".$row['option_value']."',
#31
Отправлено 09 March 2013 - 09:12 PM
А файлы в первом посте перезалиты?Исправление к http://vsupport.club...dpost__p__18519
А то собирать правки через всю тему долговато...
#32
Отправлено 09 March 2013 - 10:50 PM
А кто перезаливать-то будет?А файлы в первом посте перезалиты? А то собирать правки через всю тему долговато...
Это могут сделать два человека - автор и админ.
Автор давно тут не появлялся, а админу оно надо?
PS. "через всю тему" в две страницы - да, это очень долговато .
#33
Отправлено 10 March 2013 - 04:53 PM
Сообщение отредактировал noid: 10 March 2013 - 05:00 PM
#34
Отправлено 10 March 2013 - 04:57 PM
Но для DU тоже есть модуль копирования, уже не помню чем они отличаются.
#35
Отправлено 11 March 2013 - 03:02 PM
Думаю, Вы находили этот же модуль, но с самыми первыми исправлениями (доделка копирования картинок).Я находил аналоги, даже с копированием картинки
В #20 полностью представлен код с копированием картинок, доп.характеристик, доп.категорий и еще чего-то.
В #30 - исправление для этого кода.
В чем проблема?
PS. Это не говоря уже о том, что в архиве "с копированием картинки" лежит исправленный php со всеми переделками .
#36
Отправлено 11 March 2013 - 11:36 PM
Тем не менее, все собрано и перезалито кроме правки из поста #30.А кто перезаливать-то будет?
Забрал эту версию копирования себе, только копирование фоток отключил.
#37
Отправлено 12 March 2013 - 09:33 AM
после:
$data = db_query("SELECT categoryID FROM ".CATEGORIY_PRODUCT_TABLE." WHERE productID=$key"); while ($row = db_fetch_assoc($data)) db_query("INSERT ".CATEGORIY_PRODUCT_TABLE." SET productID=$copyProductID, categoryID=".$row['categoryID']."");вставить:
$data = db_query("SELECT productID FROM ".RELATED_PRODUCTS_TABLE." WHERE Owner=$key"); while ($row = db_fetch_assoc($data)) db_query("INSERT ".RELATED_PRODUCTS_TABLE." SET Owner=$copyProductID, productID=".$row['productID']."");
весь листинг второго блока с учетом всех правок:
//Вставка копирование товара elseif ( $_POST["add_command"]=="prod_copy") { $copyProduct = GetProduct( (int)$key); $copyProductID = AddProduct($copyProduct["categoryID"], $copyProduct["name"]." copy", $copyProduct["Price"], $copyProduct["description"], (int)$copyProduct["in_stock"], $copyProduct["brief_description"], (float)$copyProduct["list_price"], $copyProduct["product_code"], $copyProduct["sort_order"], $copyProduct["ProductIsProgram"], $copyProduct["eproduct_filename"], $copyProduct["eproduct_available_days"], $copyProduct["eproduct_download_times"], (float)$copyProduct["weight"], $copyProduct["meta_description"], $copyProduct["meta_keywords"], $copyProduct["free_shipping"], (int)$copyProduct["min_order_amount"], (float)$copyProduct["shipping_freight"], $copyProduct["tax_class"], $copyProduct["title"], 0); $data = db_query("SELECT photoID, filename, thumbnail, enlarged FROM ".PRODUCT_PICTURES." WHERE productID=$key"); while ($row = db_fetch_assoc($data)) { if (isset($row['filename']) && is_file('data/small/'.$row['filename'])) copy('data/small/'.$row['filename'], 'data/small/'.$copyProductID."_".$row['filename']); if (isset($row['thumbnail']) && is_file('data/medium/'.$row['thumbnail'])) copy('data/medium/'.$row['thumbnail'], 'data/medium/'.$copyProductID."_".$row['thumbnail']); if (isset($row['enlarged']) && is_file('data/big/'.$row['enlarged'])) copy('data/big/'.$row['enlarged'], 'data/big/'.$copyProductID."_".$row['enlarged']); db_query("INSERT ".PRODUCT_PICTURES." SET productID='$copyProductID', filename ='".$copyProductID."_".$row['filename' ]."', thumbnail='".$copyProductID."_".$row['thumbnail']."', enlarged ='".$copyProductID."_".$row['enlarged' ]."'"); if ($row['photoID'] == $copyProduct['default_picture']) db_query("UPDATE ".PRODUCTS_TABLE." SET default_picture=".db_insert_id()." WHERE productID=$copyProductID"); } $data = db_query("SELECT optionID,variantID,option_value,option_type,option_show_times FROM ".PRODUCT_OPTIONS_VALUES_TABLE." WHERE productID=$key"); while ($row = db_fetch_assoc($data)) db_query("INSERT ".PRODUCT_OPTIONS_VALUES_TABLE." SET productID=$copyProductID, optionID=".$row['optionID'].(isset($row['variantID'])?",variantID=".$row['variantID']:"").",option_value='".$row['option_value']."', option_type=".$row['option_type'].",option_show_times=".$row['option_show_times'].""); $data = db_query("SELECT optionID,variantID,price_surplus FROM ".PRODUCTS_OPTIONS_SET_TABLE." WHERE productID=$key"); while ($row = db_fetch_assoc($data)) db_query("INSERT ".PRODUCTS_OPTIONS_SET_TABLE." SET productID=$copyProductID, optionID=".$row['optionID'].",variantID=".$row['variantID'].",price_surplus=".$row['price_surplus'].""); $data = db_query("SELECT categoryID FROM ".CATEGORIY_PRODUCT_TABLE." WHERE productID=$key"); while ($row = db_fetch_assoc($data)) db_query("INSERT ".CATEGORIY_PRODUCT_TABLE." SET productID=$copyProductID, categoryID=".$row['categoryID'].""); $data = db_query("SELECT productID FROM ".RELATED_PRODUCTS_TABLE." WHERE Owner=$key"); while ($row = db_fetch_assoc($data)) db_query("INSERT ".RELATED_PRODUCTS_TABLE." SET Owner=$copyProductID, productID=".$row['productID'].""); } //end
#38
Отправлено 04 April 2013 - 07:52 PM
Думаю, что при добавлении нового товара нужно удалить
$copyProduct["eproduct_filename"],
И (после функции AddProduct) добавить следующий код:
<p>if (isset($copyProduct ['eproduct_filename']) && is_file('core/files/'.$copyProduct ['eproduct_filename']))<br> if(copy('core/files/'.$copyProduct ['eproduct_filename'], 'core/files/'.$copyProductID."_".$copyProduct ['eproduct_filename']))</p><p><br></p><p>db_query("UPDATE ".PRODUCTS_TABLE." SET eproduct_filename='".$copyProductID."_".$copyProduct["eproduct_filename"]."' WHERE productID=$copyProductID");</p>
#39
Отправлено 04 April 2013 - 08:18 PM
Хм... Код тоже напоминает бред сумасшедшего... HTML вперемежку с PHP. Но тут, скорее, глюки движка форума.И (после функции AddProduct) добавить следующий код:
#40
Отправлено 04 April 2013 - 10:11 PM
При загрузке цифрового товара копируется файл в папку core/files. После копирования товара они оба будут ссылаться на один и тот же файл (т.е. иметь одинаковою запись в БД). Без моих изменений при удалении цифрового товара в карточке товара или удалении, например, исходного товара скопированный товар будет ссылаться на несуществующий файл. Нелогично. Это также, если б не делали копий фотографий и не присваивали им другие имена. По коду - стоял пустой абзац перед if. Видно за этого сбилась подсветка.