Перейти к содержанию
kamar87

Помогите поправить PHP-код

Рекомендуемые сообщения

Есть скрипт который используется для обновления остатков\цен магазина. При выполнении его в error_log записываются ошибки:

 

Цитата

PHP Notice:  Undefined index: id in /home/rastyby/site.by/zms-api-update-prices.php on line 39
PHP Notice:  Undefined index: quantity in /home/rastyby/site.by/zms-api-update-prices.php on line 43

 

Вот сам скрипт... Причем он работает корректно.

<?php 

error_reporting(E_ALL | E_STRICT) ;
ini_set('display_errors', 'On');

require "config.php";

echo 'Connecting to DB'. '<br/>';

$conn=mysql_connect(DB_HOSTNAME, DB_USERNAME, DB_PASSWORD) or die ("Не могу создать соединение");
mysql_select_db(DB_DATABASE) or die (mysql_error());

$ZMS_KEY = ''; //zoomos api key
$url = 'http://api.export.zoomos.by/pricelist?key='.$ZMS_KEY;

echo 'Downloading JSON from '.$url. '<br/>';

$json = file_get_contents($url);

$obj = json_decode($json,true);

$err = json_last_error();

if ($err) {
	echo 'Error while parsing json: ' . $err . '<br/>';
	die();
}

echo 'Rows count: '.sizeof($obj). '<br/>';


$i = 0;

$ids = array();

foreach ($obj as $key => $row) 
{

	$id = $row['id'];
	$shopsId = $row['shopsId'];
	$status = $row['status'];
	$price = $row['price'];
	$quantity = $row['quantity'];

	echo $i . ' of '.sizeof($obj). ': ' . $id .  '<br/>';

	if ($shopsId) {

		$q = "update ".DB_PREFIX."product set quantity = ".($quantity == 1 && $price > 0 ? "0" : "10").", price = ".$price." where product_id = ".$shopsId;
		
		executeUpdate($q, $conn);
				
//		$q = "update product_shop set price = ".$price.", wholesale_price = ".$price.", active = ".($status == 1 && $price > 0 ? "1" : "0").", date_upd = current_timestamp where zoomos_id = ".$id;
		
//		executeUpdate($q, $conn);
		

		array_push($ids, $id);
	}

	
	$i++;
}

	$q = "update product set active = 0 where zoomos_id not in (".implode(",", $ids).")";
	executeUpdate($q, $conn);

//	$q = "update product_shop set active = 0 where zoomos_id not in (".implode(",", $ids).")";
//	executeUpdate($q, $conn);



function executeUpdate($q, $conn) {

	echo $q .  '<br/>';

	if (mysql_query($q, $conn)) {
	    echo "Record updated successfully";
	} else {
	    echo "Error updating record: " . mysql_error($conn);
	}

	echo '<br/>';

}

?>

Помогите пожалуйста поправить его.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделайте распечатку массива, получаемого в этой строчке:

 

4 часа назад, kamar87 сказал:

$obj = json_decode($json,true);

 

Скрипт говорит, что там не хватает индексов id и quantity. Могу предположить, что эти индексы в большинстве случаев есть, а где-то их нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 часов назад, druzhkov сказал:

Сделайте распечатку массива, получаемого в этой строчке:

 

 

Скрипт говорит, что там не хватает индексов id и quantity. Могу предположить, что эти индексы в большинстве случаев есть, а где-то их нет.

как это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, kamar87 сказал:

как это сделать?

 

как обычно:

echo '<pre>';
print_r($obj);
echo '</pre>';

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, druzhkov сказал:

 

как обычно:


echo '<pre>';
print_r($obj);
echo '</pre>';

 

[0] => Array
        (
            [shopsId] => 17392
            [vendorName] => Bear Grylls
            [model] => Компас Bear Grylls (31-001777)
            [linkRewrite] => kompas-bear-grylls-31-001777
            [price] => 9.29
            [priceCurrency] => BYN
            [status] => 1
            [isNew] => 0
            [isPriceFixed] => 0
            [supplierInfo] => Array
                (
                    [id] => 3375
                    [name] => Рнструменткомплект
                    [itemId] => 918110
                    [model] => Компас Bear Grylls (31-001777)
                    [modelCode] => 31-001777
                    [price] => 10.1
                    [priceCurrency] => BYN
                    [priceConverted] => 10.1
                    [priceDiscounted] => 10.1
                    [priceCalculated] => 9.29
                    [priceCalculatedMin] => -99989.9
                    [isWholesalePrice] => 1
                    [quantity] => 10 дней
                    [status] => 1
                    [dateAddMillis] => 1501653566000
                )

            [dateAddMillis] => 1501505929000
            [dateUpdMillis] => 1501669366000
        )

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.