PHP Datenbank Tabelle als Responsive Tabelle ausgeben?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich würde zuerst einmal den den HTML-Part vom PHP-Code deutlicher trennen. So hast du im Editor mehr Übersicht, Syntax-Highlighting für dein HTML kann wieder durchgeführt werden und Fehler wie dein doppelter table-Tag oder das border-Attribut (längst deprecated, setze den Rahmen mit CSS) lassen sich schneller finden.

  $sql = $con->prepare("SELECT * FROM arbeitszeit ORDER BY (?);");
  $sql->bind_param("s", $sortieren);
  $sql->execute();
  $result = $sql->get_result();
  $finfo = $result->fetch_fields();
?>

<table class="info-table">
  <thead>
    <tr>
      <th></th>
      <?php foreach ($finfo as $val): ?>
        <th><?= $val->name ?></th>
      <?php endforeach; ?>
    </tr>
  </thead>
  <tbody>
    <?php while ($row = mysqli_fetch_assoc($result)): ?>
      <tr>
        <?php foreach ($row as $value): ?>
          <td><?= $value ?></td>
        <?php endforeach; ?>
      </tr>
    <?php endwhile; ?>
  </tbody>
</table>

CSS:

table,
th,
td {
  border: 1px solid;
}

Um die Tabelle nun responsiv zu gestalten, gibt es verschiedene Ansätze. Hier eine prozentuale maximale Breite zu definieren, mag ein erster sein. Bei viel Inhalt und mit Zunahme der Spaltenanzahl macht sich das aber vor allem auf mobilen Geräten (mit bspw. 320px Breite) nicht so gut, denn die Spalten werden mehr und mehr gequetscht.

Andere Optionen:

  • Man baut sich selbst eine Tabelle zusammen (Beispiel) und schafft sich somit eine einfacher kontrollierbare Alternative, die bspw. umbrechen kann. Man sollte dabei jedoch beachten, dass die eigentliche Semantik / Beziehung zwischen den Elementen verloren geht, die normalerweise durch td, th, etc. ausgezeichnet werden. Vielleicht könnte man aria-Attribute an dieser Stelle einsetzen.
  • Man verkürzt Spalten oder blendet sie aus. Möglicherweise reicht eine reduzierte Variante aus. Denkbar wären auch ein-/aufklappbare Spalten.
  • Schau dir die JS-Bibliothek tablesaw an.
  • Noch andere Ideen: https://blog.kulturbanause.de/2012/06/tabellen-im-responsive-webdesign/
platofan23 
Fragesteller
 19.11.2019, 18:38

Danke habs mit dem Beispiel geschafft. Deine Hilfe ist TOP wie immer :D

0

NIEMALS für jede Zeile einen Echo Befehl nutzen. Schreib lieber in HTML den PHP befehl und setze den HTML Code in eine Schleife.

Man kann übrigens auch googlen. Was heißt responsive? Meinst du einfach eine Tabelle die die Größe verändert? Dann Gib ihm eine breite in %.

Woher ich das weiß:Studium / Ausbildung – Seit vielen Jahren am coden.
platofan23 
Fragesteller
 19.11.2019, 18:39

Dankee für den Tipp. habs getrennt. nun ist es einfach und wie ich will ^^

0

Du gibst der Tabelle ein width z.B width:80%; dann wird die Tabelle immer 80% weite haben egal wie kleiner oder größer die Seite wird.

Woher ich das weiß:Hobby – Viele YouTube Tutorials