Re: [xsl] Pagination with query and sorting

Subject: Re: [xsl] Pagination with query and sorting
From: Jason Trépanier <jtrepanier@xxxxxxxxxxx>
Date: Wed, 16 Mar 2005 13:08:46 -0500
How do I limit the results so that the pagination (below) will function
properly?

thanks!


<?xml version="1.0" encoding="ISO-8859-1" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";> <xsl:output method="html" encoding="ISO-8859-1" indent="yes"/>

    <xsl:param name="keyword">none</xsl:param>
        <xsl:param name="keyregion">none</xsl:param>
        <xsl:param name="sterm">none</xsl:param>
        <xsl:param name="sorder">none</xsl:param>
        <xsl:param name="script">page-e.php</xsl:param>
        <xsl:param name="curpage">1</xsl:param>
        <xsl:param name="lastpage">1</xsl:param>

<xsl:template match="/">
    <xsl:for-each select="fiches/fiche[texte/cattouristiqueID=$keyword]">

<xsl:sort order="{$sorder}" select="texte/fichetitre"/>

    <table width="100%"  border="0" cellspacing="0" cellpadding="0">
        <tr class="myBkgnd_{position()  mod 2 -1}">
        <td width="*" class="pad">
    <a>
        <xsl:attribute name="href">
                        <xsl:text>page-g.php?key=</xsl:text>
            <xsl:value-of
select="numero"/><xsl:text>&amp;keyword=</xsl:text><xsl:value-of
select="texte/cattouristiqueID"/>
        </xsl:attribute>
                <xsl:value-of select="texte/fichetitre" />
    </a>

        </td>
        <td width="200" align="center" class="pad"><xsl:value-of
select="texte/typeheberg" /></td>
        <td width="100" align="center" class="pad"><xsl:value-of
select="region/regionnseo" /></td>
    </tr>
    </table>

</xsl:for-each>

  <!-- insert the page navigation links -->
  <xsl:call-template name="pagination" />

</xsl:template>

<xsl:template name="pagination">

  <table border="0" class="pagination">
    <tr class="pagination">
      <xsl:choose>
        <xsl:when test="$curpage&lt;=1">
          <!-- we are on page 1, so there is no navigation backwards -->
          <td class="pagination">Permier</td>
          <td class="pagination">Pricident</td>
        </xsl:when>
        <xsl:otherwise>
          <!-- insert links for first/previous page -->
          <td class="pagination"><a
href="{$script}?keyword={$keyword}&amp;page=1">+ <b>Permier</b></a></td>
          <td class="pagination"><a
href="{$script}?keyword={$keyword}&amp;page={$curpage -1}">+
<b>Pricident</b></a></td>
        </xsl:otherwise>
      </xsl:choose>

      <!-- insert "page x of y" -->
      <td class="pagination">
        <xsl:text>Page </xsl:text>
        <xsl:value-of select="$curpage"/>
        <xsl:text> de </xsl:text>
        <xsl:value-of select="$lastpage"/>
      </td>

      <xsl:choose>
        <xsl:when test="$curpage=$lastpage">
          <!-- we are on the last page, so there is no navigation forwards
-->
          <td class="pagination">Suivant</td>
          <td class="pagination">Dernier</td>
        </xsl:when>
        <xsl:otherwise>
          <!-- insert links for last/next page -->
          <td class="pagination"><a
href="{$script}?keyword={$keyword}&amp;page={$curpage +1}"><b>Suivant</b>
;</a></td>
          <td class="pagination"><a
href="{$script}?keyword={$keyword}&amp;page={$lastpage}"><b>Dernier</b>
;</a></td>
        </xsl:otherwise>
      </xsl:choose>

    </tr>
  </table>

</xsl:template>
</xsl:stylesheet>

Current Thread