Anzeige
Tutorialbeschreibung

PHP - Teil 24 - PHP & MySQL (4)

PHP - Teil 24 - PHP & MySQL (4)

In den bisherigen Beispielen wurden die Datensätze mehr oder weniger ungeordnet ausgegeben. Das ist so aber natürlich nicht immer gewünscht. So möchte man Datensätze beispielsweise oftmals in Tabellenform oder in Formularfeldern anzeigen. Wie sich so etwas umsetzen lässt, erfahrt ihr in diesem Video-Training.

Icon-Ersteller: Oxygen-Team

... übrigens findest du die komplette Serie hier: PHP-Workshop-DVD - Basics & Tricks - Schnapp sie dir in unserem Shop oder in der Kreativ-Flatrate!


In diesem Tutorial wird gezeigt, wie ihr Datensätze, die in einer Datenbank hinterlegt sind, geordnet ausgeben könnt. Denn eines ist klar: Früher oder später wollt oder müsst ihr Daten in Tabellenform oder beispielsweise auch innerhalb von Formularfeldern ausgeben. Einige der wichtigsten Ausgabevarianten werden in diesem Tutorial vorgestellt.

Ausgangspunkt für die Beispiele in diesem Tutorial bildet eine Datenbank, die aus einer Tabelle mit zwei Spalten besteht. Diese Spalten sind thema und beschreibung. Wenn ihr später eure eigenen Anwendungen auf Basis dieses Tutorials umsetzen wollt, könnt ihr das dann problemlos adaptieren, da die notwendigen Änderungen dann tatsächlich sehr gering ausfallen.

Insgesamt wird von folgender Datenbankstruktur ausgegangen:

Bilder



 
Um die Daten anzulegen, könnt ihr folgende SQL-Syntax verwenden:

INSERT INTO  `psd`.`tutorials` (
 `id` ,
 `thema` ,
 `beschreibung`
 )
 VALUES (
 NULL , 'PHP', 'Alles zum Thema PHP.'
 ), (
NULL , 'Joomla!', 'Zahlreiche Informationen zum beliebten CMS.'

Die Inhalte dieser Datenbank sollen nun in verschiedenen Formen ausgegeben werden. Gleichgültig, wie die Ausgabe letztendlich aussehen soll - zunächst muss immer eine Verbindung zur Datenbank hergestellt werden. Die notwendigen Einstellungen dazu werden in einer externen Datei definiert, die dann bei Bedarf mittels include() eingebunden wird.

<?php
 $server = "localhost";
 $user = "root";
 $passwort = "";
 $datenbank = "psd";
 $verbindung = mysql_connect($server, $user, $passwort) or die ("Es konnte keine Verbindung zum Server hergestellt werden");
 mysql_select_db($datenbank) or die ("Die Datenbank existiert nicht");
?>

 
Im ersten Schritt sollen Thema und Beschreibung jeweils nebeneinander angezeigt werden. Dabei wird nach jedem Datensatz ein Zeilenumbruch eingefügt. Das Ergebnis sollte dann also folgendermaßen aussehen:

Bilder



 
Der Code stellt sich folgendermaßen dar:

<?php
include ('include.php');
$result = mysql_query("SELECT thema, beschreibung FROM tutorials");
while($row = mysql_fetch_array($result))
  {
  echo $row['thema'] . " " . $row['beschreibung'];
  echo "<br />";
  }
?>

Entscheidend ist hierbei eigentlich nur die Verwendung einer Schleife, damit tatsächlich alle Datensätze (die man will) ausgelesen werden können. Da nach jedem Datensatz ein Zeilenumbruch erfolgen soll, muss dieser innerhalb (!) der Schleife definiert werden.

echo "<br />";


 

Daten in Listen

Die gezeigte Variante ist natürlich der denkbar einfachste Weg. Daher geht es jetzt mit einer etwas anspruchsvolleren Variante weiter. Und zwar sollen die Datensätze in Listenform ausgegeben werden. Auch dabei wird natürlich wieder auf die Schleifendefinition zurückgegriffen. Hier ist allerdings Vorsicht geboten, da es ansonsten zu unsauberem HTML-Code kommt. Das folgende Beispiel zeigt, wie man es nicht machen sollte:

<?php
include ('include.php');
$result = mysql_query("SELECT thema, beschreibung FROM tutorials");
while($row = mysql_fetch_array($result)){
  echo "<ul><li>";
  echo $row['thema'] . " " . $row['beschreibung'];
  echo "</li></ul>";
  }
?>

Sieht man sich das Ergebnis im Browser an, ergibt sich folgendes Bild:

Bilder



 
Das scheint in dieser Form richtig zu sein. Wirft man aber einen Blick in den generierten Quellcode, wird deutlich, dass dem nicht so ist.

Bilder



 
Hier werden jeweils die ul-Elemente ebenfalls bei jedem Schleifendurchlauf mit ausgegeben. Verhindern lässt sich dies, indem man das einleitende und schließende ul außerhalb der Schleife notiert.

<?php
include ('include.php');
$result = mysql_query("SELECT thema, beschreibung FROM tutorials");
 echo "<ul>";
while($row = mysql_fetch_array($result)){
 echo "<li>";
 echo $row['thema'] . " " . $row['beschreibung'];
 echo "</li>";
 }
echo "</ul>";
?>


 

Daten in Tabellenform ausgeben

Die Ausgabe in einer Tabelle lässt sich durchaus mit dem vorherigen Listenbeispiel vergleichen. Dennoch ist das Ganze etwas komplexer. Zunächst das gewünschte Ergebnis:

Bilder



 
Wie beim Listenbeispiel muss auch hier darauf geachtet werden, was in der Schleife steht und was nicht. In der Schleife müssen die tr- und die td-Elemente eingefügt werden. Denn diese umschließen jeweils die einzelnen Datensätze. Was nicht in der Schleife angegeben werden darf, sind das table-Element und die Kopfzeile, da beides ja jeweils nur einmal ausgegeben werden darf. Insgesamt sieht das Beispiel also folgendermaßen aus:

<?php
include ('include.php');
$result = mysql_query("SELECT thema, beschreibung FROM tutorials");
echo '<table border="1"><tr><th>Thema</th><th>Beschreibung</th></tr>';
while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['thema'] . "</td>";
  echo "<td>" . $row['beschreibung'] . "</td>";
  echo "</tr>";
  }
echo "</table>";
?>


 

Datensätze in Formularfeldern anzeigen

Das Ändern von Datensätzen über ein HTML-Formular setzt voraus, dass die in einer Datenbank vorhandenen Einträge in einem Formular angezeigt werden. Hierzu ist es lediglich nötig, dass der gewünschte Datensatz eindeutig gekennzeichnet ist und die Einträge der Tabellenfelder als Werte von Eingabefeldern angezeigt werden. (Wie ihr Datensätze über UPDATE ändern könnt, wurde im vorherigen Tutorial gezeigt).

Beachtet, dass es sich hierbei um eine recht statische Anwendung handelt. Schließlich wird hier lediglich ein spezieller Datensatz, nämlich der mit der ID 7, ausgelesen. Für eine dynamische Anwendung, müsste die ID als Parameter übergeben und die Datensätze mittels einer Schleife abgearbeitet werden.

Zunächst das Ergebnis:

Bilder



 
Innerhalb der beiden Textfelder werden die Werte der thema- und beschreibung-Felder angezeigt. Dazu müssen diese Felder ausgelesen werden.

<?php
   include ('include.php');   
   $result = mysql_query("SELECT thema, beschreibung FROM tutorials WHERE id =7");    
   $menge = mysql_num_rows($result);   
   $row = mysql_fetch_row($result); 
?>

Alle Elemente dieser Anwendung wurden bereits vorgestellt. Der Fokus muss hier auf den SELECT-Befehl gelegt werden. Über WHERE id = 7 wird festgelegt, dass der Datensatz mit der ID 7 selektiert werden soll. Um die ermittelten Werte in den Eingabefeldern anzuzeigen, werden den value-Attributen jeweils die Spalten der Abfrage zugewiesen. Beachtet dabei, dass die interne Zählung bei 0 beginnt. Die erste Spalte der Tabelle wird demnach über $row[0] angesprochen.

Was jetzt noch fehlt, ist das eigentliche Formular. Für die Anzeige des Themas wird auf ein normales Eingabefeld zurückgegriffen. Da der Inhalt des Beschreibungen-Feldes umfangreicher sein kann, wird dort ein mehrzeiliges Feld verwendet. Entscheidend ist hier jeweils die Angabe einer echo-Anweisung und der auszugebenden Spalte.

<form>
   <table>
        <tr>
          <td>Thema</td>
          <td><input type="text" name="id" value="<?php echo $row[0] ; ?>" />
          </td>
        </tr>
        <tr>
          <td>Beschreibung</td>
          <td><textarea><?php echo $row[1] ; ?></textarea></td>
        </tr>
   </table>
</form>


Fazit

Die Beispiele in diesem Tutorial haben gezeigt, wie ihr die von einer Datenbank gelieferten Werte ganz einfach in beliebiger Art und Weise ausgeben könnt. Ob ihr dann dabei auf Listen, Tabellen oder Formularfelder setzt, spielt keine Rolle. Die Syntax und das allgemeine Vorgehen sind jeweils identisch.

Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 14.05.2017 - 02:03

Danke, sehr gut rüber gebracht!

Portrait von dmtw2107
  • 16.11.2013 - 09:37

verständlich und toll erklärt danke für das tutorial

x
×
×