2017-05-08 3 views
0

Ich versuche, die Datensätze meiner Tabelle korrekt anzuzeigen. Das Problem, das ich gerade habe, ist, dass ich Aufzeichnungen wiederhole.Populating HTML-Tabelle mit PHP und Datenbankwerte

Ich verwende eine foreach und eine for-Schleife, um die Tabelle zu füllen. Das Problem tritt auf, wenn ich einen zweiten Foreach benutze, um auf mein 2D-Array zuzugreifen, um seine Werte zu erfassen und sie zu vergleichen. Die Datensätze werden so oft wiederholt, wie Arrays im Array 2d vorhanden sind. Ich weiß nicht genau wo ich meine foreach platzieren soll oder ob ich es in diesem Fall benutzen soll.


Es gibt nur 1 Taste sollte in für jede Zeile/Spalte Kombination wie ein normaler Tisch

Here is my problem

Hier ist der Code

<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> 

Dies ist, was die $data['scheduleData'] enthält:

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)) 

Mein $data['timeData'] enthält:

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)) 

My $ dateArray

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

eines tun Aktie Eingabefelder die Schließung entfernen, die Sie haben und erwartete Ausgabe wollen Sie, damit wir Ihnen helfen können aus. –

+0

Sie wollen also, dass ich Ihnen meine aktuelle Ausgabe und meine gewünschte Ausgabe gebe? – Viteazul

+0

Ich möchte sagen, teilen Sie einfach die Arrays, auf denen Sie iterieren und Sie erwartet von diesen Array, –

Antwort

0

Wahrscheinlich Ihre for-Schleife das Problem (in beiden foreach-Schleifen) ist, warum ich Sie tatsächlich die Schleife dort brauchen. Wenn Sie die Datensätze einschränken möchten, verwenden Sie Ihre Abfrage. Wenn Sie die for-Schleife dort verwenden, wird es die Datensätze wiederholen ...

Haben Sie versucht, es zu entfernen? Meistens könnte es das Problem verursachen ...

EDIT:
Ändern Sie diesen Code:
.

<?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"> 

zu

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

Und richtig schließen die Tags und für for loop

+0

Ich brauche das für die Schleife um die Tabelle zu bevölkern Meine Tabelle ist im Grunde ein 2d-Array – Viteazul

+0

Ich bekomme die Idee, aber Sie bereits Schleifen, so dass Sie nicht brauchen eine andere Schleife, um es zu tun .. Was Sie tun, ist Schleife, foreach für 7 mal ... – Kuru

+0

Wenn ich richtig verstehe, sagst du, dass ich meine 2. foreach nur 7 mal wiederholen sollte? – Viteazul

Verwandte Themen