php xml проблемы с разбиением на страницы, пропускающие один результат

следующий код, который я установил, чтобы результаты из xml помещались в нумерацию страниц, он работает по большей части, но каждый раз пропускается строка.

так что я установил на 7, он показывает только 6 результатов на странице
вот мой код:

$thispage= $_SERVER['PHP_SELF'];
$startPage = $_GET['page'];
$perPage =7;
$currentRecord = 0;

/  Start XML Parsing
$dom = new DOMDocument();
$dom->load('Playlist.xml');

$xmlPath = new DOMXPath($dom);
$arrNodes = $xmlPath->query('//channels/channel');

foreach($arrNodes as $item){

$currentRecord += 1;
if($currentRecord > ($startPage * $perPage) && $currentRecord < ($startPage * $perPage + $perPage)){

// Get Name
$id=$item->getAttribute('id');

// lets limit title
$string=$item->getAttribute('name');
$finTitle = (strlen($string) > 55) ? substr($string,0,52).'...' : $string;

// lets limit  category
$cat=$item->getAttribute('category');
$category= (strlen($cat) > 20) ? substr($cat,0,17).'...' : $cat;
// now we have the URL to pass on
$vidUrl=$item->getAttribute('url');

if($bgcolor=='#f1f1f1'){$bgcolor='#ffffff';}
else{$bgcolor='#f1f1f1';}

echo "<tr >";
echo "<td bgcolor=$bgcolor id='title ' align=center>&nbsp;<font face='Verdana' size='2'>$id</font></td>";
echo "<td bgcolor=$bgcolor id='title' align=center>&nbsp;<font face='Verdana' size='2'>$finTitle</font></td>";
echo "<td bgcolor=$bgcolor id='title' align=center>&nbsp;<font face='Verdana' size='2'>$category</a></font></td>";
echo "</tr>";
}
}

Спасибо, я уверен, что мне чего-то не хватает, сначала я подумал, что это было здесь:
$ currentRecord + = 1; но если я изменю это значение на 1 или 0, это не даст никаких результатов.

также следующая страница начнется в 8, полностью пропустив 7-й результат, следующая страница после этого начнется в 15

0

Решение

Я думаю, что было бы легче следовать коду, если $ currentRecord начинался с нуля. $ currentRecord сразу увеличивается на единицу, поэтому первый используемый ценность одна.

В следующем коде он начинается с нуля:

<?php
$thispage= $_SERVER['PHP_SELF'];
$startPage = $_GET['page'];
$perPage =7;
$currentRecord = 0;

//  Start XML Parsing
$dom = new DOMDocument();
$dom->load('Playlist.xml');

$xmlPath = new DOMXPath($dom);
$arrNodes = $xmlPath->query('//channels/channel');

$startIdx = $startPage * $perPage;
$endIdx = ($startPage + 1) * $perPage;

foreach($arrNodes as $currentRecord => $item){

if(($currentRecord >= $startIdx) && ($currentRecord < $endIdx)) {

// Get Name
$id=$item->getAttribute('id');

// lets limit title
$string=$item->getAttribute('name');
$finTitle = (strlen($string) > 55) ? substr($string,0,52).'...' : $string;

// lets limit  category
$cat=$item->getAttribute('category');
$category= (strlen($cat) > 20) ? substr($cat,0,17).'...' : $cat;
// now we have the URL to pass on
$vidUrl=$item->getAttribute('url');

if($bgcolor=='#f1f1f1'){$bgcolor='#ffffff';}
else{$bgcolor='#f1f1f1';}

echo "<tr >";
echo "<td bgcolor=$bgcolor id='title ' align=center>&nbsp;<font face='Verdana' size='2'>$id</font></td>";
echo "<td bgcolor=$bgcolor id='title' align=center>&nbsp;<font face='Verdana' size='2'>$finTitle</font></td>";
echo "<td bgcolor=$bgcolor id='title' align=center>&nbsp;<font face='Verdana' size='2'>$category</a></font></td>";
echo "</tr>";
}
}
?>

Это лучше? Извините — я сам не пробовал. Я также не исправил многократные вхождения «id = ‘title'» и не установил значение по умолчанию для $ startPage. Там, вероятно, больше.

0

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

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

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