2012-04-06 52 views
0

我在php中编写了一个简单的分页代码,但是我想在index.tpl中显示for循环而不是在index.php中 我该怎么办?在smarty中循环

链接一些帮助: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!"; 

} 
+0

http://www.smarty.net/docs/en/language.function.foreach.tpl – c69 2012-04-06 22:37:25

+0

什么是在iPhone部分做的PHP问题?标记错误? – 2012-04-07 09:16:20

回答

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的大小index.php并为其分配。我只是试图展示如何在需要时使用PHP函数作为variable modifier

0

循环使用像这样的

while ($Videos = mysql_fetch_array($sql)) 
{ 

$ShowVideos[] = $Videos; 

} 
$smarty->assign("video", $ShowVideos); 

的TPL文件应该是这样的:

{section name=video loop=$video} 

<li>{$video[video].id}</li> //// will show the video id from database 


{/section}