Alle Tabellen bei phpMyAdmin anzeigen?

1 Antwort

1) Es wäre besser, PHP und HTML stärker voneinander zu trennen.

Ein Weg wäre die alternative Syntax für Kontrollstrukturen:

<?php
  /* build connection ... */
  $result = $connection->query('SHOW DATABASES');
  $databaseEntries = $result->fetch_all(MYSQLI_ASSOC);
  $connection->close();

  /* etc. ... */
?>
<!doctype html>
<head>
  <title>Datenbanken</title>
  <meta charset="utf-8">
</head>
<body>
  <h1>Datenbanken</h1>
  <?php if (count($databaseEntries) > 0): ?>
    <ul>
    <?php foreach ($databaseEntries as $databaseEntry): ?>
      <?php $databaseName = databaseEntry['Database']; ?>
      <li><a href="?database=<?= $databaseName ?>"><?= $databaseName ?></a>
    <?php endforeach; ?>
    </ul>
  <?php else: ?>
    <p>Keine Datenbanken gefunden.
  <?php endif; ?>

  <!-- etc. ... -->
</body>

2) Die Links halte ich in einer Auflistung für besser aufgehoben. Man könnte stattdessen aber auch eine Auswahlliste oder eine Gruppe an Radioboxen anbieten. Den Fallbacktext würde ich in ein eigenes Element (p/span/o.ä.) packen, damit man ihn später leichter stylen kann.

3) Dein Skript soll als grafische Schnittstelle dienen, über die eine explizite Auswahl an Aktionen durchgeführt werden darf. Demzufolge wäre es auch in diesem Fall klüger, mit Prepared Statements zu arbeiten, um zu verhindern, dass ein Nutzer eigene Anweisungen an die Datenbank verschicken kann, die von der Oberfläche nicht angeboten werden.

4) Texteingabefelder brauchen kein explizites type- oder value-Attribut. Auch bei den form-Elementen kannst du das action-Attribut weglassen, wenn es doch eh auf diesselbe URL verweist.

5) Da du wohl auch Daten zum Speichern an die Datenbank schicken möchtest, würde ich empfehlen, für die Datenbankverbindung explizit die Zeichenkodierung vorzugeben.

6) Statt einer Funktion checkConnection wäre eine Funktion getConnection sinnvoll, die eine Verbindung kreiert und zurückgibt.

7) Wenn der URL Querystring neben einem Datenbanknamen auch einen Tabellennamen beinhaltet, brauchst du die zuvor hergestellte Datenbankverbindung doch nicht kappen. Immerhin befragst du doch in beiden Fällen die gleiche Datenbank.

8) Das border-Attribut auf dem table-Element ist obsolet. Nutze CSS stattdessen.

9) Im Übrigen fehlen in deinem geposteten Code Doctype und title. Falls sie dem HTML-Dokument tatsächlich fehlen, sollten sie noch ergänzt werden.