【问题标题】:PHP nesting foreach in tablePHP在表中嵌套foreach
【发布时间】:2013-06-14 11:38:05
【问题描述】:

我似乎无法让我的表获得正确的输出。代码如下:

<div class="bubbleTitle">Spetsialistide tööaeg graafiku alusel</div>
    <table style="width: 600px" class="slicedTable">

        <tr>
        <th>Spetsialist</th>
        <th>Tunnid</th>
    </tr>

<tr>            
    <?php foreach($specs as $specName => $spec): ?>
    <td><?php echo $specName?></td>
            <?php foreach($tunnid as $tund): ?>

    <td><?php echo $tund?></td>
</tr>
     <?php endforeach; ?>
<?php endforeach; ?>

我已经尝试了这个线程中的所有内容:Nested Loop in table PHP,但这些都没有奏效 输出如下:

名称 - 值
价值2
价值3
name2 - 值
价值2
价值3

等等

我希望它是:

名称1 - 值1
名称 2 - value2 等

$tunnid 来自哪里:

result = mysql_query("SELECT `worker_id`, SUM(TIMESTAMPDIFF(HOUR, `start`, `end`)) as `total` FROM
    `spa_worker_times` WHERE (`start` BETWEEN '".$validated['start']."' AND '".$validated['end']."') AND
    (`end` BETWEEN '".$validated['start']."' AND '".$validated['end']."') GROUP BY `worker_id`") or die(mysql_error()); 


$tunnid = array();
while ($row = mysql_fetch_assoc($result)) {
    $tunnid[] = $row['total'];

规格来自哪里:

$data = $this->BookingProcedures->query("SELECT AProcedure.name, BookingGroup.booking_package_id > 0 AS pack_proc," .
                        "SUM(BookingProcedure.price) AS price, Worker.name, COUNT(BookingProcedure.id) AS num" .
                    " FROM spa_booking_procedure_specialists BookingProcedureSpecialist, " .
                        "spa_booking_procedures BookingProcedure, " .
                        "spa_booking_groups BookingGroup, spa_procedures AProcedure, spa_workers Worker" .
                    " WHERE !BookingProcedure.deleted" .
                        " AND DATE(BookingProcedure.start) >= '".$validated['start']."'" .
                        " AND DATE(BookingProcedure.start) <= '".$validated['end']."'" .
                        " AND BookingProcedureSpecialist.booking_procedure_id = BookingProcedure.id" .
                        " AND Worker.id = BookingProcedureSpecialist.specialist_id" .
                        " AND BookingGroup.id = BookingProcedure.group_id" .
                        " AND AProcedure.id = BookingGroup.procedure_id" .
                    " GROUP BY AProcedure.name, BookingGroup.booking_package_id > 0, Worker.name");

【问题讨论】:

  • 您希望它如何显示?显示所需输出的示例
  • 当一个名称有多个值时,您希望如何显示数据?现在所有的答案都是基于猜测......
  • 一个名字不能有多个值,每个名字都对应一个值,mysql命令应该采用这个
  • 那么在表中放置一个 foreach 是没有用的,你显示使用 mysql-query 来获取 specs 和 tunnid?

标签: php loops foreach


【解决方案1】:
<div class="bubbleTitle">Spetsialistide tööaeg graafiku alusel</div>
<table style="width: 600px" class="slicedTable">
     <tr>
      <th>Spetsialist</th>
      <th>Tunnid</th>
     </tr>
     <tr>            
       <?php foreach($specs as $specName => $spec): ?>
        <td><h2><?php echo $specName?></h2>
        <table><tr>
        <?php foreach($tunnid as $tund): ?>
           <td><?php echo $tund?></td>
       <?php endforeach; ?>
       </tr></table></td>
       <?php endforeach; ?>
     </tr>
 </table>

这会像这样输出

Name1
value1 | value2 | value3
Name2
value1 | value2 | value3

【讨论】:

  • 对不起,我忘了说我想要什么,但我之前编辑过,我希望有一个常规表,每行包含 name1 - value1 和下一个 name2 - value2 等。跨度>
【解决方案2】:
<?php foreach($specs as $specName => $spec) { ?> 
  <tr>            
    <td><?php echo $specName?></td>
    <?php foreach($tunnid as $tund) { ?>
      <td><?php echo $tund?></td>
    <?php } ?>
  </tr>
<?php } ?>

会导致

名称值值值
名称值
名称值值
等等

$tunnid 是从哪里来的。我会假设它只包含值,但是以哪种方式,它们是在常规数组中还是在关联数组中?如果 $tunnid 包含一个名称的值,我的代码将起作用。但我认为情况并非如此!?

【讨论】:

  • 创建 $tunnid 的 mysql 命令使用工作人员 ID 分别计算每个名称的值。我只需要每个名称旁边都有它的值。
【解决方案3】:
<table style="width: 600px" class="slicedTable">
     <tr>
      <th>Spetsialist</th>
      <th>Tunnid</th>
     </tr>
     <tr>            
       <?php foreach($specs as $specName => $spec): ?>
        <td><?php echo $specName?></td>
    <!-- seperate with anything -->
    <td><?php echo implode(',', $tunnid); ?></td>
       <?php endforeach; ?>
     </tr>
 </table>

【讨论】:

    【解决方案4】:
    <?php
        $i = 0;
        foreach($specs as $specName => $spec){
    ?>
        <tr>
            <td><?php echo $specName?></td>
            <td><?php echo $tunid[$i++]; ?></td>
        </tr>
        }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 2012-09-17
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多