3

是否可以使用 Smarty 在一张表中使用两个不同的 foreach 循环?我尝试了一切,但它似乎不起作用。$numrow 数组有 10 个结果,但在所有 10 行中只显示一个并且相同。

这是 Smarty 的常见问题吗?

<table width="500">   

{foreach from=$categories item=category}   
  {if $category.fcType == 'm'}
    <tr>
      <td><strong>{$category.fcName}</strong></td>
      <td>&nbsp</td>
  {else}
    <tr>
      <td><a href="http://localhost/ZendFramework/forum/category?c={$category.fcID}">{$category.fcName}</a></td>
      <td>{$category.fcDescription}</td>
    {foreach from=$numrows item=numrow} 
      <td>{$numrow}</td>
    {/foreach} 
  {/if}

  {if !empty($category.fuUsername)}
      <td>Nieuwste topic toegevoegd door {$category.fuUsername} op {$category.topic_date}</td>
  {else}
      <td>&nbsp</td> 
  {/if}
    </tr>        
{/foreach}  

</table>

php:

$getCat = isset($_GET['c']) ? $_GET['c'] : '';;
    $getCat = htmlentities(mysql_real_escape_string($getCat));;

    $query_cat = "
    SELECT 
        forum_categories.fcID
        ,forum_categories.fcName
        ,forum_categories.fcDescription
        ,forum_categories.fcParent
        ,forum_categories.fcType
        ,forum_users.fuUsername
        ,DATE_FORMAT(forum_topics.ftDate,'%d-%m-%Y %H:%i:%s') AS topic_date
    FROM
        forum_categories
    LEFT JOIN
        forum_topics
    ON
        forum_topics.fcID = forum_categories.fcID
    LEFT JOIN
        forum_users
    ON
        forum_topics.fuID = forum_users.fuID    
    GROUP BY
        forum_categories.fcID
    ORDER BY 
        forum_categories.fcPos 
    ";
    $exec_cat = mysql_query($query_cat);
    if (($exec_cat) and mysql_num_rows($exec_cat))
    {
        while($category = mysql_fetch_assoc($exec_cat))
        {           
            $query_count = "
            SELECT 
                forum_topics.ftID
            FROM
                forum_categories
            INNER JOIN
                forum_topics
            ON
                forum_categories.fcID = forum_topics.fcID
            WHERE forum_categories.fcID = '".$category['fcID']."'
            ";
            $exec_count = mysql_query($query_count);
            $numrows = mysql_num_rows($exec_count);
            $numrows[] = $numrows;

            echo $numrows;

            $this->view->assign("numrows", $numrows);   


            $categories[] = $category; 
            $this->view->assign("categories", $categories);
        }

    }  
    else 
    {
        echo 'Er zijn nog geen categorieen aanwezig in de database.';
    }
4

2 回答 2

2
 while($category = mysql_fetch_assoc($exec_cat))
    {           
        $query_count = "
        SELECT 
            forum_topics.ftID
        FROM
            forum_categories
        INNER JOIN
            forum_topics
        ON
            forum_categories.fcID = forum_topics.fcID
        WHERE forum_categories.fcID = '".$category['fcID']."'
        ";
        $exec_count = mysql_query($query_count);
        $category['numrows'] = mysql_num_rows($exec_count);
        $categories[] = $category;
    }
$this->view->assign("categories", $categories);

在您的 Smarty TPL 中:{foreach from=$category.numrows item=numrow}

顺便说一句,您不是在循环中覆盖您分配的类别吗?(将最后一个分配放在while循环之外)

于 2012-04-18T11:50:20.003 回答
0

尝试在你的 foreach 循环中使用不同的名称:

{foreach name = "loop1" from=$categories item='category'}   

{foreach name = "loop2" from=$numrows item='numrow'} 

我自己没试过,但看看有什么不同

(顺便说一句,记得在特殊的 html 字符后加一个分号:它应该是   而不是  )

于 2012-04-18T11:45:21.690 回答