4.13. Webservice pour récupérer le contenu d'un sujet avec offset

Webservice : read_topic_page

Ce Webservice se démarque du précédent par la possibilité de définir un offset de départ permettant ainsi de rajouter une pagination à la récupération.

$param = array(
	'idforum' => 1,
	'idcat'  => 22,
	'idtopic' => 48,
	'tri' => 0,
	'offset' => 0,
	'limit' => 10
);
$results = $sel->call('read_topic', $param); 

Le Webservice renvoie alors plusieurs paramètres :

4.13.1. Exemple de gestion de pagination via le Webservice read_topic_page

Nous vous fournissons un exemple de gestion de la lecture d'un sujet via le webservice pouvant par exemple être utilisé sur un site pour inclure des commentaires à l'actualité ou aux articles.

<?php
 
require('nusoap/nusoap.php');

// Paramètres pour les tests
$idsite= 1;
$urlnameforum= 'forumdev';
$url_forum= 'http://forumdev.mesdiscussions.net/';
$url_webservice= 'http://forumdev.mesdiscussions.net/webservices/wservice.php';
$idcat= 22;
$idtopic= 48;
$tri= 0; // 0 = par ordre de réponse, 1 => Ordre de réponse inverse
$reponse_par_page= 5;

if (isset($_GET['idtopic'])) {
	$idtopic= intval($_GET['idtopic']);	
}
if (isset($_GET['page'])) {
	$page= intval($_GET['page']);
} else {
	$page= 1;
}

$offset= (($page-1)*$reponse_par_page)+1;
 
$sel = new soapclient($url_webservice);
 
$param = array('idforum' => $idsite,'idcat'  => $idcat,'idtopic' => $idtopic,'tri' => $tri,  'offset' => $offset,'limit' => $reponse_par_page);
$results = $sel->call('read_topic_page', $param); 

$sujet_titre= $results['topictitle']; 
 
?>

<h1><?php echo $sujet_titre; ?></h1>
<p>Ici se trouve mon site.</p>
<?php
$nbrep= $results['nbanswer'];

echo $nbrep,' messages<hr />';

$nbpage= ceil(($nbrep)/$reponse_par_page); // Calcul du nombre de pages

echo 'Pages :';
for ($i=1;$i<=$nbpage;$i++) {
	if ($i == $page) {
		echo ' ',$i,' ';
	} else {
		echo ' <a href="?idtopic='.$idtopic.'&amp;page='.$i.'">',$i,'</a> ';	
	}
}

echo '</hr>';
if ($nbrep == 0) { // Si le nombre de réponse est égal à 0, on affiche message different.
	echo "<a href=\"$url_forum/message.php?config=$urlnameforum.inc&cat=$idcat&post=$idtopic&page=$page\">Soyez le premier à déposer un commentaire</a>";	
} else {
	echo "<a href=\"$url_forum/message.php?config=$urlnameforum.inc&cat=$idcat&post=$idtopic&page=$page\">Déposer un commentaire</a>";	
}
echo '<hr />';
$xml_get = simplexml_load_string(utf8_encode($results['messages']));

if ($xml_get) {
	foreach ($xml_get->reponse as $reponse) {
	    $auteur= $reponse->auteur;
	    $date= $reponse->date;
	    $contenu= $reponse->message;
	    echo '<blockquote>';
		echo utf8_decode($auteur),' - ',utf8_decode($date),'<br />';
		echo '-------<br />';
		echo utf8_decode($contenu);
	    echo '</blockquote>';
		echo '<hr />';
	}
} 
?>