首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >智能前程回路

智能前程回路
EN

Stack Overflow用户
提问于 2013-02-16 12:44:45
回答 1查看 4.5K关注 0票数 0

我对智能有问题,实际上我不能循环从DB收集的数据。

这是计算函数

代码语言:javascript
复制
function getreputation($username)
{
global $rDB;

$rows = $rDB->select('
    SELECT *
    FROM account_reputation
    WHERE username=?
    ORDER BY id DESC
    ',
    $username
);

foreach($rows as $row)
{
    $reputation = array();
    $reputation['user'] = $row['username'];
    $reputation['reputation'] = $row['reputation'];
    $reputation['action'] = $row['reason'];
    $reputation['date'] = $row['date'];
}

return $reputation;
}

下面是如何将这个函数分配给tpl

代码语言:javascript
复制
$smarty->assign('reputation', getreputation($page['username']));

最后,这是foreach循环

代码语言:javascript
复制
{foreach from=$reputation item=reputation}
<tr><td width="33%"><center>
{if $reputation.action == 1}Registering an account
{elseif $reputation.action == 2}Daily visit
{elseif $reputation.action == 3}Posting a comment
{elseif $reputation.action == 4}Your comment was voted up (each upvote)
{elseif $reputation.action == 5}Submitting a screenshot
{elseif $reputation.action == 6}Submitting a guide (approved)
{elseif $reputation.action == 7}Earning a <font color="brown">Copper</font> <a href="/?website-achievements">website achievement</a>
{elseif $reputation.action == 8}Earning a Silver <a href="/?website-achievements">website achievement</a>
{elseif $reputation.action == 9}Earning a <font color="gold">Gold</font> <a href="/?website-achievements">website achievement</a>
{else}Achievement not found
{/if}
</center></td><td width="33%">
<center><font color='green'>+{$reputation.reputation}
</font></center></td><td width="33%"><center>
{$reputation.date}
</center></td></tr>
{/foreach}

我能看到的就是

那么外汇输出是完全错误的,有人能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-16 16:18:27

首先,您在这里发布的PHP函数永远不会返回多于一行,因为您一直在覆盖$reputation的值。

代码语言:javascript
复制
function getreputation($username) {
    global $rDB;
    $rows = $rDB->select('SELECT * FROM account_reputation WHERE username=? ORDER BY id DESC', $username);

    // Initialize the array that will be filled with the single rows
    $reputation = array();
    foreach($rows as $row) {
        // Create a temporal variable with a different name
        $rep = array();
        $rep['user'] = $row['username'];
        $rep['reputation'] = $row['reputation'];
        $rep['action'] = $row['reason'];
        $rep['date'] = $row['date'];

        // Add this array to the other one
        $reputation[] = $rep;
    }

    return $reputation;
}

然后,在您的智能代码中,您应该为当前项使用不同的变量名(正如所建议的):

代码语言:javascript
复制
{foreach from=$reputation item=rep}
    <tr><td width="33%"><center>
    {if $rep.action == 1}Registering an account
    {elseif $rep.action == 2}Daily visit
    etc...
    {else}Achievement not found
    {/if}
    </center></td>

    <td width="33%"><center><font color='green'>+{$rep.reputation}
    </font></center></td>
    <td width="33%"><center>{$rep.date}</center></td>
    </tr>
{/foreach}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14910425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档