Bigcommerce Pagination в php - PullRequest
       25

Bigcommerce Pagination в php

0 голосов
/ 20 февраля 2020

Я надеюсь, что все хорошо, я работаю над интеграцией API Bigcommerce с PHP, так как API выбирает 50 записей на странице, но я хочу, чтобы он начал получать все записи 50, а затем со следующей страницы сохранять их в массив, а затем эти данные должны быть сброшены в базу данных, я путаюсь с тем, как передать идентификатор текущей страницы в API

<code>self::set_config($channel);
        $page  = 1;
        $url=self::$current_channel->api_url."v3/catalog/products?page=$page";
        $headers = self::getHeader($channel);
        $body = '';
        $response=self::make_api_request($url,$body,"GET",$headers);
//        echo "<pre>";
//        print_r($response->meta->pagination->total);
//        echo "
"; // exit; if (isset ($ response-> data)) {foreach ($ response-> data as $ item) {$ record = self :: get_product_detail ($ channel, $ item-> id); // получить подробности из api $ record = isset ($ record-> data [0])? $ record-> data [0]: NULL; if ($ record) {$ mappedItems = ['parent_sku_id' => null, 'sku' => $ record-> id, 'channel_sku' => $ record-> sku, 'var_id' => $ record-> option_set_id, 'name' => $ record-> name, 'ean' => $ record-> up c, // $ data-> mpn, $ data-> gtin ' цена '=> $ record-> price,' stock_qty '=> isset ($ record-> inventory_level)? $ record-> inventory_level: null,' channel_id '=> self :: $ current_channel-> id,' is_live '= > isset ($ record-> is_visible)? $ record -> is_visible: "1", 'type1' => 'main_product',]; $ parent_sku_id = self :: save_channel_products ((object) $ mappedItems); // вернет идентификатор продукта из таблицы продуктов $ headers = self :: getHeader ($ channel); $ URL = самостоятельно :: $ current_channel-> api_url "v3 / Каталог / Продукция / $ item-> идентификатор / варианты". $ server_output = self :: make_api_request ($ url, $ body, "GET", $ headers); if ($ parent_sku_id && isset ($ record-> option_set_id)) {foreach ($ server_output-> данные как $ вариация) {$ mappedItems = ['parent_sku_id' => $ parent_sku_id, 'sku' => $ вариация-> sku_id, // 'sku' => $ вариация-> product_id, 'channel_sku' => $ вариация-> sku, // 'вариация_id' => $ вариация-> sku_id, 'вариация_id' => $ вариация-> идентификатор, 'имя '=> $ запись-> имя,' ean '=> $ вариация-> вверх c, // $ вариация-> мпн, $ вариация-> гтин' цена '=> $ вариация-> рассчитанная цена,' stock_qty ' => isset ($ вариация-> уровень_инвентаризации)? $ вариация-> уровень_инвентаризации: ноль, 'идентификатор_канала' => self :: $ current_channel-> идентификатор, 'is_live' => isset ($ record-> is_visible)? $ record-> is_visible: "1", 'type1' => 'Variation',]; // echo '
';print_r($new_item);die;

                           // self::save_channel_products((object)$mappedItems);
                            if(isset($response->meta->pagination->total))
                            {
                                self:: $products_fetched = self:: $products_fetched + 50; // for offset

                                if($response->meta->pagination->total > self:: $products_fetched)
                                {
                                    $lim=($response->meta->pagination->total - self:: $products_fetched);
                                    $lim= $lim > 50 ? 50:$lim;
                                    //self:: channelProducts(null,self:: $products_fetched ,$lim);
                                }
                                    echo $page = $response->meta->pagination->current_page;
                            }
                        }


                    }
                }
            }


I am looking forward for help with php? i am little confused how to set per page request in api, every time it fetches same records in api i want to make it as per pagination changes
</code>

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете отправить ключ из URL с помощью метода get ex: p = 1 и заменить этот код: $page = 1; на:

$page = isset($_GET['p']) ? $_GET['p'] : 1;
...