PHP Select 为 Smarty

PHP Select for Smarty

是否可以在现有 Select 中制作第二个 Select?

我的php代码

$stmt = $handler->prepare('SELECT id,subcat_name FROM subcategory WHERE cat_id='.$cat_id.' ORDER BY sort DESC');
        $stmt->execute();
        while($row = $stmt->fetch(PDO::FETCH_OBJ)){
        $subcats[]=$row;
        }


        $smarty->assign('subcat',$subcats);

模板代码

<table border="0" width="100%">
                    {* start counter *}
                    {counter start=1 assign="cntval"}

                  <tr>
                    {foreach item=row  from=$subcat}

                    <td width="100%">


                                    <table width="50%" border="0" cellspacing="5">
                                      <tr>
                                        <td align="center" valign="top"><a class="subcatlink" href="index.php?view=subcat&id={$row->id}">{$row->subcat_name}(HERE I WANT INSERT THE RESULT FROM THE SECOND SELECT)</a></td>
                                      </tr>
                                    </table>


                    </a>
                    </td>
                    {if ($cntval mod 2) eq 0}
                    </tr><tr>
                    {/if}
                    {* raise counter *}
                    {counter}
                    {/foreach}
                    </tr>
                 </table>

我可以在什么地方插入新的 select? 感谢帮助

循环中的 $row->id 将作为第二个结果的键。

使用 'siteid' 作为键创建一个 $no_comments 数组,这样您就可以通过调用 $no_comments.$siteid.

在 smarty 循环中访问它们

编辑: 所以你有两个数组 $comments 和 $sites (你也可以将 id 指定为键,这样你就不必在 Smarty 循环中分配变量)。

在 Smarty 循环中: 你不能直接做 $comments.$row->id。您必须首先分配 $row->id,例如 {assign var='siteid' value=$row->id},然后您可以调用 $comments.$siteid.

好的,我已经做到了。网站的结果已列出,但我没有看到评论数 @JoeS

$stmt = $handler->prepare("SELECT * FROM sites WHERE subcat_id = '$subcat_id' AND status = 1 ORDER BY RAND()");
        $stmt->execute();
        $no=$stmt->rowCount();
        while($row = $stmt->fetch(PDO::FETCH_OBJ)){
            $site_id = $row->id;
            $sites[]=$row;

            $stmt2 = $handler->prepare("SELECT id FROM comments WHERE site_id = '$site_id' AND status = 1");
            $stmt2->execute();
            $no_Comment=$stmt2->rowCount();
            $smarty->assign('no_Comment',$no_Comment);
        }


        $smarty->assign('site',$sites);

这样对吗?

$stmt = $handler->prepare("SELECT * FROM sites WHERE subcat_id = '$subcat_id' AND status = 1 ORDER BY RAND()");
        $stmt->execute();
        $no=$stmt->rowCount();
        while($row = $stmt->fetch(PDO::FETCH_OBJ)){
            $site_id = $row->id;
            $sites[]=$row;

            $stmt2 = $handler->prepare("SELECT id FROM comments WHERE site_id = '$site_id' AND status = 1");
            $stmt2->execute();
            $no_Comment=$stmt2->rowCount();
            $comments[$site_id]=$no_Comment;

        }

        $smarty->assign('site',$sites);
        $smarty->assign('comments',$comments);