loops — Пример XeroOAuth-Pagination

Я использую XeroOAuth-PHP SDK и собираюсь загрузить Invoices для частного приложения — пока что он хорош в аутентификации и загрузке первой партии из 100 счетов.

Сейчас я хочу расширить код, чтобы включить разбиение на страницы для загрузки групп по 100 счетов за раз — я могу получить количество счетов для каждого запроса, используя:

$totalInvoices = count($invoices->Invoices[0]);

но не знаете, как добавить цикл, чтобы начать на странице 1 и продолжать до тех пор, пока количество счетов не станет меньше 100?

Вот запрос, который получает первые 100 счетов Счета к получению:

$response = $XeroOAuth->request('GET', $XeroOAuth->url('Invoices', 'core'), array('where' => 'Type=="ACCREC"'));

Я ищу что-то вроде этого:

// set pagiation to page 1
$page = 1;

// start a loop for the $page counter

// download first page of invoices (first 100) - not sure how to specify page 1 here
$response = $XeroOAuth->request('GET', $XeroOAuth->url('Invoices', 'core'), array('where' => 'Type=="ACCREC"', 'page' => $page ));

if ($XeroOAuth->response['code'] == 200) {

// Get total found invoices
$totalInvoices = count($invoices->Invoices[0]);

// Parse Invoices
$invoices = $XeroOAuth->parseResponse($XeroOAuth->response['response'], $XeroOAuth->response['format']);

// Loop through each invoice
$recnum = 1;

foreach($invoices as $invoice){

// Do Stuff
pr($invoices->Invoices[$recnum]->Invoice);

$recnum++;

}

} else {
outputError($XeroOAuth);
}// Exit once $totalInvoices < 100

$page++;

0

Решение

Попробуйте с этим:

// set pagiation to page 1
$page = 1;
$stop_report = false;

// start a loop for the $page counter

while ( !$stop_report ) {

// download first page of invoices (first 100) - not sure how to specify page 1 here
$response = $XeroOAuth->request('GET', $XeroOAuth->url('Invoices', 'core'), array('where' => 'Type=="ACCREC"', 'page' => $page ));

if ($XeroOAuth->response['code'] == 200) {

// Get total found invoices
$totalInvoices = count($invoices->Invoices[0]);

// If we get less than 100 invoices that says this it's the last group of invoices
if ( $totalInvoices < 100 ) $stop_report = true;

// Parse Invoices
$invoices = $XeroOAuth->parseResponse($XeroOAuth->response['response'], $XeroOAuth->response['format']);

// Loop through each invoice
$recnum = 1;

foreach($invoices as $invoice){

// Do Stuff
pr($invoices->Invoices[$recnum]->Invoice);

$recnum++;

}

} else {
$stop_report = true; // We got one error, so stop the loop
outputError($XeroOAuth);
}

$page++;  // On the next call we should get the next page// Exit once $totalInvoices < 100
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]