Ankündigung

Einklappen
Keine Ankündigung bisher.

Probleme bei mit PHP erstellten Tabellen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Probleme bei mit PHP erstellten Tabellen

    Hallo liebe Forengemeinde. ich sehe wahrscheinlich den Wald vor lauter Bäumen nicht mehr und die Antwort dürfte wohl total simpel sein, aber ich checks einfach nicht.
    Zu meinem Problem. Ich erstelle mittels PHP-Schleifen HTML Tabellen in denen unterschiedliche Zeilen miteinander verbunden werden sollen. Sobald ich aber eine <td rowspan=3>
    zum Beispiel habe, wird mir neben der (hier im Script) Zeile 5, 8 und 9 die rowspanzelle 5 angezeigt, und die Zellen 6 und 7 werden wie gewünscht ausgeblendet. Vereinfacht sieht das ganze so aus:
    PHP-Code:
    <!DOCTYPE html>
    <html lang="de">
    <head>
        <meta charset="utf-8">
        <style>
            .table-container {
                display: flex;
                gap: 0px; /* Abstand zwischen den Tabellen */
            }
            table {
                border-collapse: collapse;
                padding: 0px;
                width: 100px;
            }
            th, td {
                border: 1px solid black;
                padding: 0px;
                text-align: center;
                min-width: 200px;
                max-width: 200px;
                height: 30px; /* Feste Höhe für die Zeilen setzen */
            }
        </style>
    </head>
    <?php $dayName = array("Montag""Dienstag""Mittwoch""Donnerstag""Freitag""Samstag""Sonntag"); ?>
    <body>
    <div class="table-container">
        <?php
        
    // Schleife zum Erstellen von 7 Tabellen
        
    for ($j 0$j 7$j++) {
            echo 
    "<table>";
            echo 
    "<thead><tr><th>{$dayName[$j]}</th></tr></thead>";
            echo 
    "<tbody>";
            
    // Initialisiere den Zeilenindex
            
    $i 1;
            while (
    $i <= 18) {
                echo 
    "<tr>";
                echo 
    "<td>Zeile $i</td>";
                
    // Zusammenführen von Zellen
                
    if ($j == && $i == 5) { // Freitag und Zeile 5
                    // Zeile 5 mit rowspan=3
                    
    echo "<td rowspan='3' colspan='1'>Zeile $i</td>";
                    
    $i += 2// $i um 2 erhöhen, um die nächsten zwei Zeilen (6 und 7) zu überspringen
                
    }
                
    $i++;
                echo 
    "</tr>";
            }
            echo 
    "</tbody>";
            echo 
    "</table>";
        }
        
    ?>
    </div>
    </body>
    </html>
    Ich habe mich dumm und dusselig gesucht aber bin zu keiner Lösung gelangt. Vll bekomme ich ja hier Hilfe. Vielen Dank schonmal im Vorraus.

  • #2
    Die Ausgabe von <td>Teile $i</td> gehört in ein Else von der If-Bedinung.

    Kommentar


    • #3
      Ja das stimmt, aber dann werden die Zeilen 7 und 8 neben Zelle 5 angezeigt. Also daran liegt auch nicht.

      Kommentar


      • #4
        Das liegt daran, dass nur die Zelle mit der 5 einen rowspan von 3 erhält, du aber danach gar keine leeren 2 rows hast, über die sich die zelle erstrecken könnte.
        Die nächsten Zellen sind ja bereits wieder mit 7 und 8 befüllt, denn für die übersprungenen 5 und 6 hast du gar nichts gemacht. hier hätten leere Zeilen hingehört, über die sich die erste rowspan 3 Zelle erstrecken kann.
        Wenn die nächsten zwei Zeilen jedoch Werte enthalten, wird hier natürlich mit den befüllten Zellen versucht, dennoch ein rowspan 3 darzustellen

        Kommentar


        • #5
          Danke Hamburg. Dein Tip hat mir seh geholfen Hab den Code entsprechend geändert und nun funktionierts.
          PHP-Code:
          <div class="table-container">
              <?php
              
          // Array mit den Namen der Wochentage
              
          $dayName = ["Montag""Dienstag""Mittwoch""Donnerstag""Freitag""Samstag""Sonntag"];
             
              
          // Schleife zum Erstellen von 7 Tabellen (eine für jeden Tag)
              
          for ($j 0$j 7$j++) {
                  echo 
          "<table>";
                  echo 
          "<thead><tr><th>{$dayName[$j]}</th></tr></thead>";
                  echo 
          "<tbody>";
                 
                  
          // Initialisiere den Zeilenindex
                  
          $i 8;
                  
          $duration 3;
                 
                  while (
          $i <= 18) {
                      echo 
          "<tr>";
                     
                      
          // Überprüfen, ob die Zelle zusammengeführt werden soll
                      
          if ($j == && $i == 11) { // Wenn es Freitag und Zeile 11 ist
                          // Zelle mit rowspan-Attribut
                          
          echo "<td rowspan='$duration'>";
                          echo 
          "Zeile $i";
                              for(
          $k=0$k <= $duration$k++) {
                                  echo 
          "<tr></tr>";
                              }
                          echo 
          "</td>";
                          
          $i += $duration// Erhöht $i um 3, um die abgedeckten Zeilen zu überspringen
                      
          } else {
                          
          // Normale Zelle ohne Zusammenführung
                          
          echo "<td>Zeile $i</td>";
                          
          $i++;
                      }
                     
                      echo 
          "</tr>";
                  }
                 
                  echo 
          "</tbody>";
                  echo 
          "</table>";
              }
              
          ?>
          </div>

          Kommentar

          Lädt...
          X