0

簡単なページネーションのコードをphpで書いたのですが、forループをindex.phpではなくindex.tplに表示したいのですがどうすればいいですか?

ヘルプのリンク: http://www.smarty.net/syntax_comparison

$perPage = 10;
$PaginationSql = mysql_query("SELECT COUNT('ID') FROM VA_VIDEOS");
$Pages = ceil(mysql_result($PaginationSql, 0) / $perPage);
$Page = (isset($_GET['page'])) ? (int)$_GET['page'] : 1;
$Start = ($Page - 1) * $perPage;
$postDate = date("d-m-Y");
srand(time());
$randomNum = (rand()%20);
$sql = mysql_query("SELECT * FROM VA_VIDEOS ORDER BY ID DESC LIMIT ".$Start.", ".$perPage."");
while ($Videos = mysql_fetch_array($sql))
{

$ShowVideos[] = $Videos;

}
if($Page >= 1 && $Page<=$Pages){
echo "<div style='margin-left:20px;'>";
if($Page != 1){print "<b class='pagination'><a href='?page=1'>First</a></b>";}

    for($x=1; $x<=$Pages; $x++){
    $PaginationNum = ($x == $Page) ? "<b class='page-in'>".$x."</b>" : "<a href='?page=".$x."' class='pagination'>".$x."</a>";
    echo $PaginationNum;

    }

    if($Page != $Pages){
$LastPage = "<b class='pagination'><a href='?page=".$Pages."'>Last</a></b>";
echo $LastPage;
}
echo "</div>";
} else {

    print "Error!";

}
4

2 に答える 2

2

にエコーするスクリプトの最後の部分をスローするだけですindex.tpl

次のようなことを試してください (Smarty3 foreach 構文を使用):

<?php
// index.php

$perPage = 10;
// ...
while ($Videos = mysql_fetch_array($sql)) {
    $ShowVideos[] = $Videos;
}

$smarty->assign('current_page', $Page);
$smarty->assign('pages', range($pages)); // returns: array(1, 2, 3, ..., $Pages)

index.tpl

{if $current_page < $pages|count}
    <b class="pagination"><a href="?page=1">First</a></b>
{/if}

{foreach $pages as $page}
    {if $page == $current_page}
         <b class="page-in">{$page}</b>
    {else}
        <a href="?page={$page}" class="pagination">{$page}</a>

    {/if}
{/foreach}

{if $page < $pages|count}
    <b class="pagination"><a href="?page={$pages|count}">Last</a></b>
{/if}

$pagesパフォーマンスを向上させるには、 inのサイズを計算しindex.phpて割り当てます。必要な場合に備えて、PHP 関数を変数修飾子として使用する方法を示しようとしていました。

于 2012-04-06T23:28:51.877 に答える