2017-05-08 55 views
0

我想正确显示我的表的记录。我目前遇到的问题是我正在重复记录。使用PHP和数据库值的Populatin HTML表

我正在使用foreach和for循环来填充表。当我使用第二个foreach访问我的二维数组以获取其值并进行比较时,问题就出现了。记录的重复次数与2d数组中的数组相同。我不知道在哪里放置我的foreach,或者如果我应该在这种情况下使用它。


应该只有在像一个正常的表

Here is my problem

这里的每一行/列组合1个按钮的代码

<table style="float: left;"> 
    <thead> 
    <tr> 
    <?php for ($i = 0; $i < 7; $i++): ?> 
     <th> 
     <?php echo $dateArray[$i]; ?> 
     </th> 
    <?php endfor ?> 
    </tr> 
    </thead> 
    <tbody> 
    <?php foreach ($data['timeData'] as $timeTable): ?> 
     <tr> 
     <?php for ($i = 0; $i < 7; $i++): ?> 
      <td> 
      <?php foreach ($data['scheduleData'] as $scheduleData): ?> The problem lies here 
       <div class="btn-group" data-toggle="buttons"> 
       <?php if (($scheduleData['time_id'] == $timeTable['time_id'] && $scheduleData['date'] == $dateArray[$i] && $scheduleData['status'] === '1')) { ?> 
        <label class="btn btn-success"> 
        <input type="checkbox" id="<?= $timeTable['time_id']; ?>" 
          name="time[]" value="<?= $timeTable['time_id']; ?> " 
          autocomplete="off"><?= $timeTable['time_hour']; ?> 
        <input type="checkbox" hidden id="<?= $dateArray[$i]; ?>" 
          name="date[]" value="<?= $dateArray[$i]; ?>"> 
        </label> 
       <?php } else { ?> 
        <label class="btn btn-primary"> 
        <input type="checkbox" id="<?= $timeTable['time_id']; ?>" 
          name="time[]" value="<?= $timeTable['time_id']; ?> " 
          autocomplete="off"><?= $timeTable['time_hour']; ?> 
        <input type="checkbox" hidden id="<?= $dateArray[$i]; ?>" 
          name="date[]" value="<?= $dateArray[$i]; ?>"> 
        </label> 
       <?php } ?> 
       </div> 
      <?php endforeach ?> 
      </td> 
     <?php endfor ?> 
     </tr> 
    <?php endforeach ?> 
    </tbody> 
</table> 

这就是$data['scheduleData']包含:

Array ([0] => Array ([person_id] => 8 
         [time_id] => 1 
         [date] => 2017-05-08 
         [status] => 1) 
     [1] => Array ([person_id] => 8 
         [time_id] => 2 
         [date] => 2017-05-09 
         [status] => 1)) 

$data['timeData']包含:

Array ([0] => Array ([time_id] => 1 [time_hour] => 00:00:00) 
     [1] => Array ([time_id] => 2 [time_hour] => 01:00:00) 
     [2] => Array ([time_id] => 3 [time_hour] => 02:00:00) 
     [3] => Array ([time_id] => 4 [time_hour] => 03:00:00) 
     [4] => Array ([time_id] => 5 [time_hour] => 04:00:00) 
     .  ....  ....    ....  .... 
     [23] => Array ([time_id] => 24 [time_hour] => 23:00:00)) 

我的$ dateArray

$dateArray = array(); 
for ($i = 0; $i < 7; $i++) { 
    $dateArray[$i] = date("Y-m-d", strtotime("+$i day", strtotime(date("Y-m-d")))); 
} 
+0

收盘做,你有,你想预期的输出,使我们可以帮助你一件事份额输入数组出。 –

+0

所以你想让我给你我当前的输出和我想要的输出? – Viteazul

+0

我的意思是说,只是分享你正在迭代的数组,你期望从这些数组中, –

回答

0

可能是你的for循环的问题(包括foreach循环内),所以我其实你需要的循环出现。如果你想限制记录使用你的查询。如果您在那里使用for循环,它将重复记录...

您尝试删除它吗?主要是它可能会导致问题...

编辑:
更改此代码:

<?php for ($i = 0; $i < 7; $i++): ?> 
      <td> 
      <?php foreach ($data['scheduleData'] as $scheduleData): ?> The problem lies here 
       <div class="btn-group" data-toggle="buttons"> 

<?php foreach ($data['scheduleData'] as $scheduleData): ?> 
      <td>     
       <div class="btn-group" data-toggle="buttons"> 

并妥善关闭的标签,并删除了for loop

+0

我需要for循环我的表基本上是一个二维数组 – Viteazul

+0

我明白了,但是你已经循环了,所以你不需要另外一个循环来完成它,你实际上做了什么,循环遍历了7次... – Kuru

+0

如果我理解正确,你说我应该循环我的第二个foreach只有7次? – Viteazul