Ungetestet, könnte aber passen
<?php
// Funktion zum Erzeigen des Tabellenkopfes
function createTableHeader($columns, $sortColumn, $direction)
{
$result = "";
// Richtung fuer den Link drehen
if ($direction == 'asc')
$direction = 'desc';
else
$direction = 'asc';
// Tabellenkopf mit Links
foreach ($columns as $column)
$result .= "<th><a href='?" .
(($column == $sortColumn) ? "column=$column&direction=$direction" : "column=$column&direction=asc") .
"'>" .
ucfirst($column) .
"</a>
</th>\n";
// Ergebnis zurueckliefern
return $result;
}
// Tabellenspalte, auf der per Default sortiert werden soll
$column = "spalte1";
// Richtung, auf der per Default sortiert werden soll
$direction = "asc";
// DB-Verbindung
$link = mysqli_connect("localhost", "root", "cadbas", "wm2018");
if (!$link)
{
echo "Fehler: konnte nicht mit MySQL verbinden." . PHP_EOL;
echo "Debug-Fehlernummer: " . mysqli_connect_errno() . PHP_EOL;
echo "Debug-Fehlermeldung: " . mysqli_connect_error() . PHP_EOL;
exit;
}
// UTF-8
mysqli_set_charset($link, "utf8");
// Wenn eine Tabellenspalte im Link steht
if (isset($_GET['column']))
$column = mysqli_real_escape_string($link, $_GET['column']);
// Wenn eine Richtung im Link steht
if (isset($_GET['direction']))
$direction = $_GET['direction'];
// DB-Query
$query = "select
`spalte1`,
`spalte2`,
`spalte3`,
`spalte4`
from
`user`
order by $column $direction";
// Abfrage ausfuehren
$result = mysqli_query($link, $query)
or die ("MySQL-Error: " . mysqli_error($link));
// Tabelle starten
echo "<table>
<tr>";
// Tabellenkopf erzeugen
echo createTableHeader(array('spalte1', 'spalte2', 'spalte3', 'spalte4'), $column, $direction);
echo "</tr>";
// Daten ausgeben
while ($row = mysqli_fetch_assoc($result))
{
echo "<tr>
<td>" . $row['spalte1'] . "</td>
<td>" . $row['spalte2'] . "</td>
<td>" . $row['spalte3'] . "</td>
<td>" . $row['spalte4'] . "</td>
</tr>\n";
}
echo "</table>";
?>
Alles anzeigen
Mit ein paar Anpassungen sollte man damit jede Tabelle darstellen können. Ich habe bewusst die einfachste Methode geschrieben, die sollte auch ein Anfänger nachvollziehen können.