【问题标题】:Table row beside each other并排的表格行
【发布时间】:2012-04-05 01:05:46
【问题描述】:

我试图允许此代码中的最后一个 td 位于前一个 td 旁边,但我不能,并且 td 打印在新行中。如何让它们彼此相邻,问题是第一个 5 td 在 foreach 循环中,最后一个 td 不遵循这个 foreach 因为它的值是一个函数而不是一个键或一个值foreach。

<?php foreach($downloads as $dl) { ?>
<tr id="this">
 <td ><img src="images/<?=$dl['type']?>.png"/></td> 
 <td id="no3"><?=$dl['type']?></td>
 <td>
  <a target="_blank" style="margin-right:3px" href="download.php?id=<?=$dl['id']?>">
   <?=$dl['title']?>
  </a>
 </td>
 <td>
  <center>
   <a href="http://<?=urlencode($dl['surl'])?>"><?=$dl['sname']?></a>
  </center>
 </td>
 <td align="center"><?=$dl['views']?></td>
</tr>
<?php } ?>


  <td  align="center"><?=$core->use_love(); ?></td> 

最后一个td的作用

    public function use_love(){

    $sql=mysql_query("select * from wcddl_downloads ORDER BY id DESC LIMIT ".$this->pg.",".$this->limit."");

    while($row=mysql_fetch_array($sql))
    {
    $down_id=$row['id'];
    $love=$row['love'];
    ?>
    <div class="box" align="center">
    <a href="#" class="love" id="<?php echo $down_id; ?>">
    <span class="on_img" align="left"> <?php echo $love; ?> </span> 
    </a>
    </div>
    <?
    }               
 }

【问题讨论】:

  • 你仍然可以将它放在 for each 循环中,它仍然会运行并将值添加到最后一行。或者您可以在循环外运行该函数,存储它的值并将该值插入到 td 中(再次将在 for each 循环内)。
  • 我不希望函数位于 foreach 循环内,因为它将在单个 td 中迭代,我只想让 2 tr 彼此并排,前提是函数的 td在循环之外
  • 您希望最后一列显示在每一行,还是仅显示在最后一行?为什么你不能将它存储在一个字符串中,然后按照@Davos555 的建议将它添加到 foreach 中?
  • 或许你可以画个图上传来帮忙解释一下?
  • 是的,我希望在 foreach 循环的每个 tr 内打印最后一个 td 的列,但我不想成为循环的一部分,因为这个 td 的函数包含一个while 循环,独立于 foreach 循环循环

标签: php html html-table row


【解决方案1】:

更新:我刚刚看到你添加了一个图表。这个答案现在没有任何意义,因为前面给出的文字描述与您想要在图表中实现的目标无关。

我将修改提交给 Steve Nay 的答案,因为您需要在所有 TR 中使用相同数量的 TD。当你没有相同的计数时,你需要使用colspan来实现它。我添加了一个计数器来检查它是否是你最后一次循环。就是这样:

<?php
$downloads_count = count($downloads);
$counter = 0;
foreach($downloads as $dl) :
  $counter++;
  // If this is the first time through the loop, don't echo a </tr> tag:
  if ($counter > 1) {
      echo "</tr>";
  }

  // Now print the new row, but don't close it yet:
?>

<tr id="this">
  <td><img src="images/<?=$dl['type']?>.png"/></td> 
  <td id="no3"><?=$dl['type']?></td>
  <td><a target="_blank" style="margin-right:3px" href="download.php?id=<?=$dl['id']?>"><?=$dl['title']?></a></td>
  <td><center><a href="http://<?=urlencode($dl['surl'])?>"><?=$dl['sname']?></a></center></td>
  <td align="center"<?php if ($downloads_count != $counter) echo ' colspan="2"'; ?>><?=$dl['views']?></td>

<?php endforeach; ?>

  <td align="center"><?=$core->use_love(); ?></td> 
</tr>

【讨论】:

  • 感谢maxiem,如果达到我想要的,简单描述一下,这是最后td中的函数代码
【解决方案2】:

最后一个&lt;td&gt;foreach 循环之外的那个)位于新行上,因为它位于最后一个&lt;tr&gt; 标记之外。解决此问题的一种方法是始终在最后一个 &lt;td&gt; 之后关闭 &lt;/tr&gt; 标记,如下所示:

<?php
$first_time = True;
foreach($downloads as $dl) {
    // If this is the first time through the loop, don't echo a </tr> tag:
    if ($first_time) {
        $first_time = False;
    } else {
        echo "</tr>";
    }

    // Now print the new row, but don't close it yet:
?>

<tr id="this">
  <td><img src="images/<?=$dl['type']?>.png"/></td> 
  <td id="no3"><?=$dl['type']?></td>
  <td><a target="_blank" style="margin-right:3px" href="download.php?id=<?=$dl['id']?>"><?=$dl['title']?></a></td>
  <td><center><a href="http://<?=urlencode($dl['surl'])?>"><?=$dl['sname']?></a></center></td>
  <td align="center"><?=$dl['views']?></td>

<?php
}
?>

<td align="center"><?=$core->use_love(); ?></td> 
</tr>

这将始终将最后一个 &lt;td&gt; 放在最后一行。

【讨论】:

  • 我认为您还需要在您的colspan="2" 属性中显示除最后一个视图之外的视图。要获得最后一次下载,您需要一个count($downloads),每次循环时递增它并相应地检查它以插入最后一个&lt;TD&gt;
  • 好主意史蒂夫,但最后一个 td 打印在新行中,但在我想要的相同位置,只是我们希望方式在同一行中...... ..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-07
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2013-08-28
  • 2016-09-09
  • 1970-01-01
相关资源
最近更新 更多