【问题标题】:foreach php-smarty helpforeach php-smarty 帮助
【发布时间】:2011-09-10 11:50:45
【问题描述】:

我的 php 脚本如下:

$sql = "
        SELECT
            *
        FROM
            tbl_messages
        WHERE
            msg_sender_id = '$this->UM_index'
    ";
    $res = $this->db->returnArrayOfObject($sql);
    $this->assign_values('sent_messages',$res);

在我检索到的模板中:

{foreach name = feach key = indx item = k from = $sent_messages}
{$k->msg_sender_id}
{$k->msg_subject}
{/forach}

我可以检索上述两个字段。但我想检索字段sender_idmessage_sender_name,它可以从函数getDetails($id) 获得。

我的问题是如何将 sender_name 字段(这是一个数组)分配给我的 smarty 模板?

【问题讨论】:

    标签: php foreach smarty


    【解决方案1】:

    所以您还希望能够拥有由函数 getDetails($id) 返回的 message_sender_name?

    您必须遍历结果,并获取每行的 message_sender_name。像这样的:

    $arrResults = array();
    while ($res = $this->db->returnArrayOfObject($sql)))
    {
      $res['msg_sender_name'] = getDetails($res['msg_sender_id']);
      $arrResults[] = $res;
    }
    $this->assign_values('sent_messages',$arrResults);
    

    如果我是对的,您现在可以通过模板文件中的{$k->msg_sender_name} 访问 sender_name。

    但我建议您在 SQL 语句中使用 JOIN,这样您就不必再次请求 sender_name。

    【讨论】:

    • 感谢您的回复..但它显示“第 152 行 C:\wamp\www\social\PEAR\pager\Jumping.php 中的最大执行时间超过 30 秒”!!!跨度>
    • 你能用你的getDetail()函数的内容和Jumping.php的代码来编辑你的帖子吗?
    • 我按照您的建议使用了 JOIN 表格,现在它正在工作。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多