Php array
ben al tijdje aan het stoeien met een array waar ik een variable uit wil halen maar om een of anderre reden maak ik een domme fout geloof ik..
ik heb dus uit variations de producten nodig. en dan het liefst de eancode.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Array
(
[product_id] => 314955
[sku] => 0401103078
[name] => Bomber cardigan Bethany
[set] => 41
[type] => configurable
)
Array
(
[product_id] => 314955
[sku] => 0401103078
[set] => 41
[type] => configurable
[shoot_photo] =>
[customer_group_id] => 5
[customer_group_price] => Array
(
[price_id] => 107292129
[website_id] => 12
[all_groups] => 0
[cust_group] => 5
[price] => 38.4000
[website_price] => 38.4000
[customer_group_code] => PL0
[special_price] =>
)
[customer_group_price_rrp] => Array
(
[price_id] => 107292130
[website_id] => 12
[all_groups] => 0
[cust_group] => 12
[price] => 99.95
[website_price] => 99.95
[customer_group_code] => PL0_RRP
)
[model] => 0401103078
[name] => Bomber cardigan Bethany
[season_usage_label] => Winter
[image] => http://cp.hv-polo.com/media/catalog/product/0/4/0401103078-stogre.jpg
[variations] => Array
(
[0401103078-5001-2XL] => Array
(
[color] => Navy
[shirt_size] => 2XL
[is_active] => 1
[is_saleable] => 1
[name] => Bomber cardigan Bethany Navy XXL
[eancode] => 8718563881661
[stock] => 24
[image] => http://cp.hv-polo.com/media/catalog/product/b/o/bomber_cardigan_bethany_navy_l_1.jpg
)
[0401103078-5001-3XL] => Array
(
[color] => Navy
[shirt_size] => 3XL
[is_active] => 1
[is_saleable] => 1
[name] => Bomber cardigan Bethany Navy XXXL
[eancode] => 8718563881678
[stock] => 6
[image] => http://cp.hv-polo.com/media/catalog/product/b/o/bomber_cardigan_bethany_navy_l_1.jpg
)
)
)
(
[product_id] => 314955
[sku] => 0401103078
[name] => Bomber cardigan Bethany
[set] => 41
[type] => configurable
)
Array
(
[product_id] => 314955
[sku] => 0401103078
[set] => 41
[type] => configurable
[shoot_photo] =>
[customer_group_id] => 5
[customer_group_price] => Array
(
[price_id] => 107292129
[website_id] => 12
[all_groups] => 0
[cust_group] => 5
[price] => 38.4000
[website_price] => 38.4000
[customer_group_code] => PL0
[special_price] =>
)
[customer_group_price_rrp] => Array
(
[price_id] => 107292130
[website_id] => 12
[all_groups] => 0
[cust_group] => 12
[price] => 99.95
[website_price] => 99.95
[customer_group_code] => PL0_RRP
)
[model] => 0401103078
[name] => Bomber cardigan Bethany
[season_usage_label] => Winter
[image] => http://cp.hv-polo.com/media/catalog/product/0/4/0401103078-stogre.jpg
[variations] => Array
(
[0401103078-5001-2XL] => Array
(
[color] => Navy
[shirt_size] => 2XL
[is_active] => 1
[is_saleable] => 1
[name] => Bomber cardigan Bethany Navy XXL
[eancode] => 8718563881661
[stock] => 24
[image] => http://cp.hv-polo.com/media/catalog/product/b/o/bomber_cardigan_bethany_navy_l_1.jpg
)
[0401103078-5001-3XL] => Array
(
[color] => Navy
[shirt_size] => 3XL
[is_active] => 1
[is_saleable] => 1
[name] => Bomber cardigan Bethany Navy XXXL
[eancode] => 8718563881678
[stock] => 6
[image] => http://cp.hv-polo.com/media/catalog/product/b/o/bomber_cardigan_bethany_navy_l_1.jpg
)
)
)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
dit is mijn stukje script
public function updateProduct($data) {
$option = $this->db->query("SELECT * FROM " . DB_PREFIX . "power_options_data WHERE pwr_sku = '" . $this->db->escape($data['sku']) . "' LIMIT 1");
//print $data;
print "<br />data sku ".$data['sku']."<br />";
print "data sku ".$data['eancode']."<br />";
print $data['variations']['eancode'];
if ($option->num_rows) {
$pwr_id = $option->row['pwr_id'];
$this->db->query("UPDATE " . DB_PREFIX . "power_options_data SET pwr_quantity = '" . (int)$data['stock'] . "' WHERE eancode = '" . (int)$data['eancode'] . "'");
//print_r(" . (int)$data['stock_qty'] . ")
}
}
public function updateProduct($data) {
$option = $this->db->query("SELECT * FROM " . DB_PREFIX . "power_options_data WHERE pwr_sku = '" . $this->db->escape($data['sku']) . "' LIMIT 1");
//print $data;
print "<br />data sku ".$data['sku']."<br />";
print "data sku ".$data['eancode']."<br />";
print $data['variations']['eancode'];
if ($option->num_rows) {
$pwr_id = $option->row['pwr_id'];
$this->db->query("UPDATE " . DB_PREFIX . "power_options_data SET pwr_quantity = '" . (int)$data['stock'] . "' WHERE eancode = '" . (int)$data['eancode'] . "'");
//print_r(" . (int)$data['stock_qty'] . ")
}
}
Gewijzigd op 17/05/2020 17:28:09 door Michael vanDijk
ik ga nog even stoeien bedankt in ieder geval
Toevoeging op 17/05/2020 18:06:49:
ik heb een stukje class
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
public function update() {
$this->client = new SoapClient('http://cp.hv-polo.com/api/soap/?wsdl');
$this->session_id = $this->client->login($this->user, $this->key);
try {
$products = $this->client->call($this->session_id, 'ipad_api.customerproducts', [null, $this->DefaultCategoryID, $this->storeID]);
if ($products) {
$this->load->model('api/hvpolo');
$counter = 0;
$new = '';
$duration = 0;
$i=0;
$max_aantal_producten_toevoegen = 1;
$max_products = $max_aantal_producten_toevoegen;
foreach ($products as $product) if ($i < $max_products) {
if (!$this->model_api_hvpolo->checkProduct2($product)) {
$details = $this->client->call($this->session_id, 'ipad_api.customerproduct', [$product['product_id'], $this->storeID]);
if ($details) {
if (isset($details['customer_group_price']['special_price'])) {
}
$starttime = microtime(true);
$this->model_api_hvpolo->updateProduct($details);
$endtime = microtime(true);
$duration += ($endtime - $starttime);
$counter++;
// echo "<pre>";
// print_r($product);
// print_r($details);
// echo "</pre>";
$new .= ''. $details['name']. '\r\n';
$new .= '<br />';
$i+=1;
}
}
}
if ($new) {
//echo "dit is gedaan?";
if ($counter > 0) {
$this->db->query("INSERT INTO " . DB_PREFIX . "api_log SET type = 'update', aantal_producten = '". $new ."', duration = '" . $duration . "', datetime = NOW(), site = 'Hv Polo'");
}
// Duration to DB table
$this->db->query("INSERT INTO " . DB_PREFIX . "api_log SET type = 'update', aantal_producten = '". $new ."', duration = '" . $duration . "', datetime = NOW(), site = 'Hv Polo'");
}
}
echo "dit is 2x";
} catch(Exception $e) {
foreach ($this->emails as $email) {
mail($email, 'HV Polo API error', $e->getMessage());
}
}
}
die maakt gebruik van deze twee classes
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public function checkProduct2($data) {
$search = '';
if ($data['sku']) {
$search .= "pwr_sku = '" . $this->db->escape($data['sku']) . "'";
//print_r($search);
}
if ($search) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "power_options_data WHERE " . $search . " LIMIT 1");
if ($query->num_rows) {
return $query->row['pwr_id'];
print ("<pre>");
print ("power id ".$pwr_id."");
print ("</pre>");
}
}
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_description WHERE name = '" . $this->db->escape(trim($data['name'])) ."' LIMIT 1");
if ($query->num_rows) {
return $query->row['product_id'];
}
return false;
}
$search = '';
if ($data['sku']) {
$search .= "pwr_sku = '" . $this->db->escape($data['sku']) . "'";
//print_r($search);
}
if ($search) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "power_options_data WHERE " . $search . " LIMIT 1");
if ($query->num_rows) {
return $query->row['pwr_id'];
print ("<pre>");
print ("power id ".$pwr_id."");
print ("</pre>");
}
}
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_description WHERE name = '" . $this->db->escape(trim($data['name'])) ."' LIMIT 1");
if ($query->num_rows) {
return $query->row['product_id'];
}
return false;
}
Nou wil ik dus een class hebben dat hij de quantity update bij de variaties
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public function updateProduct($data) {
$option = $this->db->query("SELECT * FROM " . DB_PREFIX . "power_options_data WHERE pwr_sku = '" . $this->db->escape($data['sku']) . "' LIMIT 1");
//print $data;
// print "<br />data sku ".$data['sku']."<br />";
//print "data sku ".$data['eancode']."<br />";
//print "".$data['variations']['eancode']."<br />";
//echo "data variations ". $data['variations']['0401103078-5001-2XL']['eancode'] ."";
// foreach om alles door te lo(o)pen.
foreach($data['variations'] as $variation) {
$this->db->query("UPDATE " . DB_PREFIX . "power_options_data SET pwr_quantity = '" . (int)$variation['stock'] . "' WHERE pwr_product_code = '" . (int)$variation['eancode'] . "'");
print "<br />data sku ".$data['sku']."<br />";
echo "<pre>variation stock " . (int)$variation['stock'] . "</pre>";
//echo "<pre>".print_r($variation)."</pre>"; // ter debugging om te kijken wat er in de array zit.
echo "<pre>variation eancode ". $variation['eancode']."";
}
if ($option->num_rows) {
$pwr_id = $option->row['pwr_id'];
$this->db->query("UPDATE " . DB_PREFIX . "power_options_data SET pwr_quantity = '" . (int)$variation['stock'] . "' WHERE pwr_product_code = '" . (int)$variation['eancode'] . "'");
//print_r(" . (int)$variation['stock'] . ")
}
}
$option = $this->db->query("SELECT * FROM " . DB_PREFIX . "power_options_data WHERE pwr_sku = '" . $this->db->escape($data['sku']) . "' LIMIT 1");
//print $data;
// print "<br />data sku ".$data['sku']."<br />";
//print "data sku ".$data['eancode']."<br />";
//print "".$data['variations']['eancode']."<br />";
//echo "data variations ". $data['variations']['0401103078-5001-2XL']['eancode'] ."";
// foreach om alles door te lo(o)pen.
foreach($data['variations'] as $variation) {
$this->db->query("UPDATE " . DB_PREFIX . "power_options_data SET pwr_quantity = '" . (int)$variation['stock'] . "' WHERE pwr_product_code = '" . (int)$variation['eancode'] . "'");
print "<br />data sku ".$data['sku']."<br />";
echo "<pre>variation stock " . (int)$variation['stock'] . "</pre>";
//echo "<pre>".print_r($variation)."</pre>"; // ter debugging om te kijken wat er in de array zit.
echo "<pre>variation eancode ". $variation['eancode']."";
}
if ($option->num_rows) {
$pwr_id = $option->row['pwr_id'];
$this->db->query("UPDATE " . DB_PREFIX . "power_options_data SET pwr_quantity = '" . (int)$variation['stock'] . "' WHERE pwr_product_code = '" . (int)$variation['eancode'] . "'");
//print_r(" . (int)$variation['stock'] . ")
}
}
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
CREATE TABLE `power_options_data` (
`pwr_id` int(11) NOT NULL,
`pwr_product_id` int(11) NOT NULL,
`pwr_model` varchar(128) NOT NULL,
`pwr_sku` varchar(128) NOT NULL,
`pwr_product_code` varchar(128) NOT NULL,
`pwr_quantity` int(11) NOT NULL,
`pwr_points` int(11) NOT NULL,
`pwr_weight` decimal(15,3) NOT NULL,
`pwr_length` decimal(15,3) NOT NULL,
`pwr_width` decimal(15,3) NOT NULL,
`pwr_height` decimal(15,3) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `power_options` (
`pwr_product_id` int(11) NOT NULL,
`pwr_level` int(2) NOT NULL,
`pwr_option_id` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `product` (
`product_id` int(11) NOT NULL,
`model` varchar(64) NOT NULL,
`sku` varchar(64) NOT NULL,
`upc` varchar(12) NOT NULL,
`ean` varchar(14) NOT NULL,
`jan` varchar(13) NOT NULL,
`isbn` varchar(17) NOT NULL,
`mpn` varchar(64) NOT NULL,
`location` varchar(128) NOT NULL,
`quantity` int(4) NOT NULL DEFAULT '0',
`stock_status_id` int(11) NOT NULL,
`image` varchar(255) DEFAULT NULL,
`manufacturer_id` int(11) NOT NULL,
`shipping` tinyint(1) NOT NULL DEFAULT '1',
`price` decimal(15,4) NOT NULL DEFAULT '0.0000',
`points` int(8) NOT NULL DEFAULT '0',
`tax_class_id` int(11) NOT NULL,
`date_available` date NOT NULL DEFAULT '0000-00-00',
`weight` decimal(15,8) NOT NULL DEFAULT '0.00000000',
`weight_class_id` int(11) NOT NULL DEFAULT '0',
`length` decimal(15,8) NOT NULL DEFAULT '0.00000000',
`width` decimal(15,8) NOT NULL DEFAULT '0.00000000',
`height` decimal(15,8) NOT NULL DEFAULT '0.00000000',
`length_class_id` int(11) NOT NULL DEFAULT '0',
`subtract` tinyint(1) NOT NULL DEFAULT '1',
`minimum` int(11) NOT NULL DEFAULT '1',
`sort_order` int(11) NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '0',
`viewed` int(5) NOT NULL DEFAULT '0',
`date_added` datetime NOT NULL,
`date_modified` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Gewijzigd op 17/05/2020 19:06:04 door Michael vanDijk
Waarom ga je voor de eigenschappen en nieuw veld aanmaken? Persoonlijk zou ik deze liever onderbrengen in een aparte tabel met eigenschappen, waaraan je die koppelt aan je product via een koppeltabel. Nu gaat het nog om gewichten, en dimensies, maar wat als er nog kleuren, en maten bij komen? Een mooi punt om te normaliseren.
Alleen die van toepassing zijn op deze classes.
Toevoeging op 17/05/2020 19:26:28:
Probleem is dus dat hij niet de update wilt uitvoeren in de tabel. Hij moet quantity updaten met de nieuwe gegevens.