이것은 작동합니다. 그것은 :) 있습니다 .. OC 사람들에 의해
https://github.com/opencart/opencart/commit/7ba1837c93645994063a6df67638924d86b0c672
을 고정 또는 대안이를 편집 할 수 있습니다 "업로드/관리/모델/카탈로그/product.php"
@@ -38,10 +38,12 @@ public function addProduct($data) {
38 38
39 39
$product_option_id = $this->db->getLastId();
40 40
41
- if (isset($product_option['product_option_value'])) {
41
+ if (isset($product_option['product_option_value']) && count($product_option['product_option_value']) > 0) {
42 42
foreach ($product_option['product_option_value'] as $product_option_value) {
43 43
$this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . (int)$product_option_value['option_value_id'] . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', price_prefix = '" . $this->db->escape($product_option_value['price_prefix']) . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "', weight = '" . (float)$product_option_value['weight'] . "', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) . "'");
44 44
}
45
+ }else{
46
+ $this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_option_id = '".$product_option_id."'");
45 47
}
46 48
} else {
47 49
$this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value = '" . $this->db->escape($product_option['option_value']) . "', required = '" . (int)$product_option['required'] . "'");
... ...
@@ -160,10 +162,12 @@ public function editProduct($product_id, $data) {
160 162
161 163
$product_option_id = $this->db->getLastId();
162 164
163
- if (isset($product_option['product_option_value'])) {
165
+ if (isset($product_option['product_option_value']) && count($product_option['product_option_value']) > 0) {
164 166
foreach ($product_option['product_option_value'] as $product_option_value) {
165 167
$this->db->query("INSERT INTO " . DB_PREFIX . "product_option_value SET product_option_value_id = '" . (int)$product_option_value['product_option_value_id'] . "', product_option_id = '" . (int)$product_option_id . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value_id = '" . (int)$product_option_value['option_value_id'] . "', quantity = '" . (int)$product_option_value['quantity'] . "', subtract = '" . (int)$product_option_value['subtract'] . "', price = '" . (float)$product_option_value['price'] . "', price_prefix = '" . $this->db->escape($product_option_value['price_prefix']) . "', points = '" . (int)$product_option_value['points'] . "', points_prefix = '" . $this->db->escape($product_option_value['points_prefix']) . "', weight = '" . (float)$product_option_value['weight'] . "', weight_prefix = '" . $this->db->escape($product_option_value['weight_prefix']) . "'");
166 168
}
169
+ }else{
170
+ $this->db->query("DELETE FROM " . DB_PREFIX . "product_option WHERE product_option_id = '".$product_option_id."'");
167 171
}
168 172
} else {
169 173
$this->db->query("INSERT INTO " . DB_PREFIX . "product_option SET product_option_id = '" . (int)$product_option['product_option_id'] . "', product_id = '" . (int)$product_id . "', option_id = '" . (int)$product_option['option_id'] . "', option_value = '" . $this->db->escape($product_option['option_value']) . "', required = '" . (int)$product_option['required'] . "'");
출처
2012-12-18 05:51:53
Paz
를이 될 수있다 크롤러에만 버그가 있지만 크롤러를 확인해야합니다. 내 모든 마법이 완료된 것 같습니다. 크롤링하고 데이터를 저장하는 중입니다. – shadyyx
@shadyyx 코드를 확인하고 코드를 두 번 확인했습니다. 그것은 잘 작동하고 그것은 데이터베이스에 데이터를 저장합니다. 하지만 편집하고 열린 카트에 옵션을 저장하려고하면 그 값이 삭제됩니다. –