|
|
|
| Есть файл file.xml
<?xml version="1.0" encoding="UTF-8"?>
<root>
<msg id="msg0" time='time0'><text>Сообщение 1</text></msg>
<msg id="msg1" time='time1'><text>Сообщение 2</text></msg>
...
<msg id="msgN" time='timeN'><text>Сообщение N</text></msg>
</root>
|
Нужно вывести сообщения с постраничной навигацией в обратном порядке, т.е. чем оно свежее-позднее, тем оно быть ближе к верху на странице,т.е. при условии 2 сообщения на странице и общем числе сообщений - 3 так:
стр.1:
Сообщение 3
Сообщение 2
стр.2:
Сообщение 1
Код РНР такой:
$msgs_in_page=2;
if(!isset($page)) $page=0;
else $page=$_GET['page'];
$dom = new DOMDocument;
$dom->load('file.xml');
$items = $dom->getElementsByTagName( "msg" );
$count_msgs=$items->length;
$pages=ceil($count_msgs/$msgs_in_page);
$first_msg=($count_msgs)-($page*$msgs_in_page);
$last_msg=$first_msg-$msgs_in_page;
if($last_msg<0)$last_msg=0;
for($i=$first_msg;$i>$last_msg;$i--)
{
echo "<div class='message' >";
$nodelist[$i]=$items->item($i);
$msgid=$items->item($i)->getAttribute('id');
$time=$items->item($i)->getAttribute('time');
echo "<span class='attribut' > Time: $time</span><br/>";
echo $nodelist[$i]->firstChild->nodeValue;
echo "</div><hr/>";
}
echo "<br/><table><tr><td>Page: </td>";
for ($n=0;$n<$pages;$n++) {
$k=$n+1;echo "<td><a href=read1.php?page=".$n." >".$k."</a></td>";
}
echo "</tr></table>";
|
В общем кое-как работает, но некорректно.
Помогите кто может. Или может есть способы проще? | |
|
|