【问题标题】:Smarty foreach mysql issueSmarty foreach mysql问题
【发布时间】:2015-04-06 08:11:29
【问题描述】:

在 smarty 中使用 foreach 遇到一些问题。

php

$rows4 = array(); 
   $result4 = mysql_query("SELECT * FROM stats_follow ORDER BY id DESC LIMIT 5"); 
   while($row4 = mysql_fetch_assoc($result4)) { 
   $rows4[] = $row4; 
    } 

   $rows45 = array(); 
   $result45 = mysql_query("SELECT * FROM stats_follow ORDER BY id DESC LIMIT 5 OFFSET 1"); 
   while($row45 = mysql_fetch_assoc($result45)) { 
   $rows45[] = $row45; 
    } 

/** assign variable */ 

$smarty->assign('rows4', $rows4); 
$smarty->assign('rows45', $rows45); 

tpl

{foreach $rows4 as $row4} 
    <tr> 
       <td><center>{$row4.datum|truncate:10:""}</center></td> 
       <td><center>{$row4.count|truncate:10:""} {$row45.count}</center></td> 
     </tr> 
      {/foreach}

但是我现在如何在这个 foreach 中分配第二个查询,这不起作用:

{foreach $rows4 as $row4 || $rows45 as $row45} 
    <tr> 
       <td><center>{$row4.datum|truncate:10:""}</center></td> 
       <td><center>{$row4.count|truncate:10:""} {$row45.count}</center></td> 
     </tr> 
      {/foreach}

【问题讨论】:

  • 为什么要同时对两个数组使用foreach循环?你想得到什么结果?
  • 我需要这两个结果并希望在同一个 foreach 的 tpl 中显示它们,也许更好的解决方案?谢谢
  • 请提及您尝试做的事情,您的两个查询看起来都一样,因此您可以只提取前 6 个结果并按照您想要的方式操作它们,而不是运行 2 个不同的查询。顺便说一句,没有使用 mysql_* 函数的原因
  • 是的,我可以在一个查询中获得 6 个结果,但是如何处理第 6 个结果不显示?我只想在一个 tpl 上显示这一天,就像您在 tpl 示例(foreach)中看到的那样。谢谢
  • 我看不懂你的代码,不明白你想做什么,提供查询给出的列表和你想要的显示方式。

标签: php mysql foreach smarty


【解决方案1】:

试试这个:

$rows445 = array();
$result4 = mysql_query("SELECT * FROM stats_follow ORDER BY id DESC LIMIT 5");
while ($row4 = mysql_fetch_assoc($result4)) {
    $rows445[]['row4'] = $row4;
}

$result45 = mysql_query("SELECT * FROM stats_follow ORDER BY id DESC LIMIT 5 OFFSET 1");
while ($row45 = mysql_fetch_assoc($result45)) {
    $rows445[]['row45'] = $row45;
}

/** assign variable */    
$smarty - > assign('rows445', $rows445);

【讨论】:

  • 这没有给我带来任何好处,因为我需要在 tpl 的 foreach 中有两个数组数据
【解决方案2】:

如果您在 $row4$row45 中得到相同数量的结果,那么您可以使用增量:

    {assign var=i value=0}
    {foreach $rows4 as $row4} 
    {assign var=row45 value=$rows45[i]}
        <tr> 
            <td><center>{$row4.datum|truncate:10:""}</center></td> 
            <td><center>{$row4.count|truncate:10:""} {$row45.count}</center></td> 
        </tr> 
    {assign var=i value=$i+1}
    {/foreach}

【讨论】:

  • 这与增量无关... $row4.count 是示例。 1240 和 $row45.count 8450
  • 所以我不明白你为什么要在同一个 foreach 上显示它们?
  • 因为我有一个表必须在同一个 foreach 中显示来自 mysql(2 个查询)的两个变量
  • 你能不能说的更直白点?因为它可以是另一种方式来做到这一点。
  • www11.pic-upload.de/06.04.15/ce5kme8zr2a.png ,第一个查询显示 (1) 第二个显示 (2) 但如果我在 tpl 中添加另一个 foreach 我无法在 foreach 中显示 bot 我得到 5x5=25 行...: S thx
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多