PHP-Programmierung

Daten einer Tabelle darstellen und bearbeiten

 aufwärts

Ergebnis einer SQL-Anfrage darstellen

Das folgende PHP-Programm tabelle-darstellen.php stellt das Ergebnis einer SQL-Anfrage, das stets eine Tabelle ist, auf dem Bildschirm dar.

 

<html>
<head>
<title>Tabelle darstellen</title>
</head>

<body>
<?php
    // Verbindung zur Datenbank herstellen
    require_once "dbconnect.php";

    // SQL-Anfrage: Ergebnis ist stets eine Tabelle
    $sql="SELECT matrnr, name FROM stud WHERE name LIKE 'M%'";

    // Anfrage ausführen
    $result=mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");

    // Tabelle in HTML darstellen
    echo "<table border=\"1\">\n";
    while ($row=mysql_fetch_row($result))
    {
        echo "<tr>";
        foreach ($row as $item)    // jedes Element $item der Zeile $row durchlaufen
            echo "<td>$item</td>";
        echo "</tr>\n";
    }
    echo "</table>\n";
?>
</body>
</html>

 

Das Ergebnis der Anfrage wird wie folgt auf dem Bildschirm dargestellt (Bild 1):

101520Meier
203040Müller
506070Meier
Bild 1:  Ergebnis einer SQL-Anfrage

 

Daten einer Tabelle bearbeiten

Als nächstes soll eine vorhandene Tabelle, z.B. die Tabelle STUD, auf dem Bildschirm dargestellt werden (Bild 2). Zusätzlich soll hinter jeder Zeile ein Link mit dem Text "bearbeiten" erscheinen. Beim Klicken auf diesen Link soll ein Formular aufgerufen werden, in dem die betreffenden Daten bearbeitet werden können. Das Attribut in Spalte 1, hier matrnr, ist der Primär­schlüssel der Tabelle; dieser soll nicht bearbeitet werden können.

 

101520Meier1985-01-06bearbeiten
203040Müller1981-05-10bearbeiten
506070Meier1985-05-08bearbeiten
102030Schulze1985-01-06bearbeiten
Bild 2:  Tabelle STUD mit Links zum Bearbeiten der Zeilen

Das entsprechende PHP-Programm tabelle-bearbeiten.php ist eine geringfügige Erweiterung des vorigen Programms; lediglich die SQL-Anfrage ist geändert und die Links sind als zusätzliche <td>-Elemente angefügt. Jeder Link enthält als Ziel die Datei eingabemaske.php, versehen mit dem Get-Parameter id, der den Schlüssel der betreffenden Zeile enthält (hier die Matrikelnummer, also z.B. id=101520).

 

<html>
<head>
<title>Tabelle bearbeiten</title>
</head>

<body>
<?php
    // Verbindung zur Datenbank herstellen
    require_once "dbconnect.php";

    // SQL-Anfrage: Ergebnis ist eine vorhandene Tabelle
    $sql="SELECT * FROM stud";

    // Anfrage ausführen
    $result=mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");

    // Tabelle in HTML darstellen
    echo "<table border=\"1\">\n";
    while ($row=mysql_fetch_row($result))
    {
        echo "<tr>";
        foreach ($row as $item)    // jedes Element $item der Zeile $row durchlaufen
            echo "<td>$item</td>";
        echo "<td><a href=\"eingabemaske.php?id=$row[0]\">bearbeiten</td>";
        echo "</tr>\n";
    }
    echo "</table>\n";
?>
</body>
</html>

 

 

Eingabemaske

Das folgende PHP-Programm eingabemaske.php stellt eine Eingabemaske für die Tabelle STUD auf dem Bildschirm dar (Bild 3). Hier können die Daten einer Zeile der Tabelle, mit Ausnahme der Matrikelnummer, bearbeitet und anschließend durch Betätigen der Schaltfläche "Abschicken" wieder an die PHP-Datei tabelle-bearbeiten.php zurück­geschickt werden.

Matrikelnummer:
Name:
Geburtsdatum:
 
Bild 3:  Eingabemaske

 

<html>
<head>
<title>Eingabemaske</title>
</head>

<body>
<?php
    // Verbindung zur Datenbank herstellen
    require_once "dbconnect.php";

    // SQL-Anfrage: Zeile mit der übergebenen Matrikelnummer  wählen
    $sql="SELECT * FROM stud WHERE matrnr=$_GET[id]";

    // Anfrage ausführen
    $result=mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");

    // Formular darstellen
    if ($row=mysql_fetch_row($result))
    {
        echo "<form method=\"post\" action=\"tabelle-bearbeiten.php\">\n";
        echo "<br>Matrikelnummer: <input type=\"text\" name=\"matrnr\" readonly value=\"$row[0]\">\n";
        echo "<br>Name: <input type=\"text\" name=\"name\" value=\"$row[1]\">\n";
        echo "<br>Geburtsdatum: <input type=\"text\" name=\"gebdat\" value=\"$row[2]\">\n";
        echo "<br><br><input type=\"submit\" name=\"submit_eingabemaske\" value=\"Abschicken\">\n";
        echo "</form>\n";
    }
    else
        echo "Fehler: Matrikelnummer $_GET[id] nicht vorhanden\n";
?>
</body>
</html>

 

Geänderte Daten in die Datenbank zurück­schreiben

Nach Betätigen der Schaltfläche "Abschicken" kehren wir von der Datei eingabemaske.php in die Datei tabelle-bearbeiten.php zurück.

Die Daten werden mit der Post-Methode übergeben. Dass die Schaltfläche "Abschicken", betätigt wurde, erkennen wir daran, dass $_POST[submit_eingabemaske] gesetzt ist, also einen Wert enthält. Hierbei ist submit_eingabemaske der Name der Schaltfläche "Abschicken".

Mit einem zusätzlichen Stück Programmcode werden nun die übergebenen Daten, die sich im Array $_POST befinden, zurück in die Datenbank geschrieben. Danach wird die Tabelle erneut dargestellt.

 

<html>
<head>
<title>Tabelle bearbeiten</title>
</head>

<body>

<?php
    // Verbindung zur Datenbank herstellen
    require_once "dbconnect.php";

    // übergebene Daten zurück in die Datenbank schreiben
    if (isset($_POST[submit_eingabemaske]))	// Submit-Schaltfläche der Eingabemaske wurde betätigt
    {
        // SQL-Kommando: Ändern von Einträgen
        $sql="UPDATE stud SET name='$_POST[name]', gebdat='$_POST[gebdat]' 
                    WHERE matrnr=$_POST[matrnr]";
        // SQL-Kommando ausführen
        mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");
    }

    // Tabelle erneut darstellen
    // SQL-Anfrage: Ergebnis ist eine vorhandene Tabelle
    $sql="SELECT * FROM stud";

    // Anfrage ausführen
    $result=mysql_query($sql) or exit("Fehler im SQL-Kommando: $sql");

    // Tabelle in HTML darstellen
    echo "<table border=\"1\">\n";
    while ($row=mysql_fetch_row($result))
    {
        echo "<tr>";
        foreach ($row as $item)    // jedes Element $item der Zeile $row durchlaufen
            echo "<td>$item</td>";
        echo "<td><a href=\"eingabemaske.php?id=$row[0]\">bearbeiten</td>";
        echo "</tr>\n";
    }
    echo "</table>\n";
?>
</body>
</html>

 

 

Weiter mit:   up

 

homeH.W. Lang   FH Flensburg   lang@fh-flensburg.de   Impressum   ©   Created: 12.07.2006   Updated: 26.04.2010
Valid HTML 4.01 Transitional