Derzeit online: ca. 109 User  
Spenden via PayPal PHP für dich ist auch als Buch erhältlich - im handlichen Format, zum Nachschlagen, Mitnehmen oder gemütlichen nebenbei Lesen. Mit noch mehr Informationen, zusätzlichen Beispielen und Übungsaufgaben.
Jetzt in der aktualisierten Version bei Amazon oder BoD bestellen!


Schnipsel

PHP und mySQL - Daten als Tabelle formatiert ausgeben

Als weitergehende Information zu Daten ausgeben, hier eine kurze Erklärung, wie man Daten z. B. in einer Tabelle ausgeben kann. Wir gehen hier davon aus, dass wir bereits die Daten abgefragt und sie in der Variable $ergebnis gespeichert haben.

Wir brauchen jetzt die while-Schleife, in der die Daten über mysqli_fetch_object übernommen werden und die so lange ausgeführt wird, bis alle Daten aus der DB ausgelesen wurden.
<?php
... diverser Code ...
while($row = mysqli_fetch_object($ergebnis))
{
  echo $row->url;
  echo "<br />";
  echo $row->urlname;
  echo "<br /><br />";
}
?>
Das liefert zunächst einfach nur die Url und den Urlnamen zurück, allerdings mit Zeilenumbrüchen (<br />) voneinander getrennt, also so:

http://www.schattenbaum.net
Schattenbaum

http://www.htmling.net
HTMLing

usw.

Zwischen jedem Eintrag ist also ein Absatz, der dadurch entsteht, dass am Ende jedes Durchgangs der while-Schleife - also am Ende jedes Datensatzes - ein doppeltes <br /> verwendet wird.

Ganz ähnlich gehen wir jetzt vor, wenn die Daten in eine Tabelle geschrieben werden sollen. Dabei müssen wir zuerst überlegen, welcher Teil der Tabelle für jeden Datensatz wiederholt werden muss bzw. welcher für jede Datenzelle wiederholt werden muss.

Da wir nicht für jeden Datensatz eine extra Tabelle, sondern nur eine extra Reihe aufrufen wollen, muss der Aufruf der Tabelle außerhalb der while-Schleife stehen.
<?php
... diverser Code, Datenbank-Abfrage ...
 
echo "<table>";
while($row = mysqli_fetch_object($ergebnis))
{
  echo "<tr>";
  echo "<td>",$row->url,"</td>";
  echo "<td>",$row->urlname,"</td>";
  echo "</tr>";
}
echo "</table>";
?>
Jetzt wird alles in einer Tabelle ausgegeben, wobei für jeden Datensatz eine neue Tabellenzeile angelegt wird, weswegen die <tr> zwar innerhalb der while-Schleife stehen aber nur am Anfang und am Ende der Schleife aufgerufen werden, im Gegensatz zu den <td>, die bei jeder Ausgabe eines Feldes angewandt werden.

In dem Fall wurde der HTML-Code direkt über Echos ausgegeben, interessant ist dabei vielleicht das Schema "<td>",$row-url,"".

Die Textteile werden dabei in Anführungszeichen gesetzt und durch Komma von den Variablen (hier $row->url) getrennt.

Eine 2. Variante wäre es natürlich, den HTML-Teil außerhalb des PHP-Codes zu schreiben und dabei auf Teile der Echos zu verzichten:
<?php
... diverser Code, Datenbank-Abfrage ...
?>
<table>
<?php
while($row = mysqli_fetch_object($ergebnis))
{
  ?>
  <tr>
  <td>
  <?php
  echo $row->url;
  ?>
  </td>
  <td>
  <?php
  echo $row->urlname;
  ?>
  </td>
  </tr>
  <?php
}
?>
</table>
<?php
}
?>
Das ist jetzt ziemlich unübersichtlich, allerdings soll es auch nur die Möglichkeiten darstellen, die man hat. In der Praxis wird man in den meisten Fällen beide Varianten kombinieren und einen Teil außerhalb des PHP-Bereichs schreiben und den Rest per echo ausgeben.

Autor: Claudia Unkelbach
© 2001 - 2017 Claudia Unkelbach
Gießener Straße 75, 35396 Gießen