除了最后一条记录之外,在每条记录后添加一个break标记?

时间:2011-02-03 14:37:17

标签: php mysql

是否可以在每条记录后添加一个break标记,但不是最后一条记录?

这是我的部分代码:

if($db->num_rows($query) > 0)
{       
    while($listing = $db->fetch_array($query))
    {
        eval("\$page .= \"".$templates->get("page_template")."\";");
    }
}

亲切的问候。

4 个答案:

答案 0 :(得分:6)

首先:请不要使用eval,在这种情况下没有任何好处,它会带来巨大的安全风险。第二:“每个项目而不是最后一个”的理论并不那么难,因为你已经得到了总数。这样的事情可能有用:

<?php
if($db->num_rows($query) > 0)
{
    $count = 0;
    while($listing = $db->fetch_array($query))
    {
        $page .= $templates->get("page_template");
        if( ++$count !== $db->num_rows( $query ) ) {
            // add break tag.
        }
    }
}

作为替代方案(以及更清洁的解决方案),您可能希望内嵌一系列内容:

<?php
while( $listing = $db->fetch_array( $query ) ) {
    $pages[] = $templates->get( 'page_template' );
}
$page = implode( 'break-tag', $pages );

答案 1 :(得分:0)

一个可能的解决方案是拥有一个计数器,比方说$i = 1,并拥有所有行,让我们说$n = $db->num_rows($query)

<br />的情况下打印$i == $n代码 否则,您打印正常并将$i增加一个。

答案 2 :(得分:0)

也许不是最优雅的。

$row_count = $db->num_rows($query);
$i = 1;
if($row_count > 0)
{       
    while($listing = $db->fetch_array($query))
    {
        if($i == $row_count) { $tag = ""; }else{ $tag = "<br />"; }
// you need to put the $tag below.
    eval("\$page .= \"".$templates->get("page_template")."\";");
        $i++;
    }
}

答案 3 :(得分:0)

如果您指的是<br/>代码......

实现它的一种方法是将第一个循环设置的布尔值设置为true。在循环开始时,如果布尔值为true,则不打印任何内容,否则打印<br/>。在第一次运行结束时,将其设置为false。这样它就会在行之前打印出<br/>,但不会在第一次运行之前打印出来,并且在最后一行之后不会打印出来。

if($db->num_rows($query) > 0)
{       
    $first_loop = true;    
    while($listing = $db->fetch_array($query))
    {
        if($first_loop !== true)
            echo "<br/>";
        eval("\$page .= \"".$templates->get("page_template")."\";");
        $first_loop = false;
    }
}