3

Smartyで1つのテーブルで2つの異なるforeachループを使用することは可能ですか?私はすべてを試しましたが、うまくいかないようです。$ numrow配列には10個の結果がありますが、10行すべてに同じものが1つだけ表示されます。

これは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文字の後にセミコロンを付けることを忘れないでください。&nbspではなく&nbsp;にする必要があります)

于 2012-04-18T11:45:21.690 に答える