German English

DBS2 Praktische Übung

Erstellen Sie zwei kleine PHP-Programme authors.php und books.php, die aus einer Bibliotheksdatenbank alle Autoren auslesen, und zu einem gegebenen Autor per Mausklick alle Bücher ausgeben, die dieser Autor verfasst hat. Hierzu sind folgende Schritte durchzuführen:

Bei Problemen mit den Servern wenden Sie sich bitte an juseks@informatik.uni-leipzig.de

Zugang zu Poolrechner und Datenbank

Sie erhalten eine E-Mail mit einem db2ueXXX-Account für Ihre PHP-Programmierung. Mit dem Ihnen zugewiesenen Account können Sie sich auf einem der CIP-Pool-Sun-Rechner (ehemals HG 1-46, siehe http://www.informatik.uni-leipzig.de/~zd/cip/) ilabwsXX.informatik.uni-leipzig.de (XX=01..14) oder im Solaris-Pool (ehemals HG 1-06/09, 1-10/12, 1-13/15) uservX.informatik.uni-leipzig.de (X=1..2) einloggen.

Im Home-Verzeichnis Ihres Accounts finden Sie ein Verzeichnis public_html, in das Sie Ihre erstellten Programme (d.h. Ihre .php-Files) legen müssen. Bitte ändern Sie nichts an der Konfiguration (Name/Rechte) dieses Verzeichnisses, da dieses Verzeichnis für den Web-Server zugreifbar sein muss.

Datenbankschema

Ihre PHP-Programme sollen auf eine SQL-Bibliotheksdatenbank zugreifen, die Sie mit den Parametern, die Sie in der E-Mail erhalten haben, ansprechen. Der für Sie relevante Teil des Bibliotheksschemas lautet wie folgt:

autor (
    autorid     INT NOT NULL PRIMARY KEY,
    nachname    VARCHAR(30) NOT NULL,
    zusatz      VARCHAR(10),
    vornamen    VARCHAR(30)
);
buch (
    buchid      INT NOT NULL PRIMARY KEY,
    titel       VARCHAR(255),
    isbn        VARCHAR(15),
    auflage     VARCHAR(70),
    jahr        SMALLINT,
    preis       NUMERIC(10,2),
    waehrung    VARCHAR(15),
    signatur    VARCHAR(30),
    verlagsid   INT,
    FOREIGN KEY (verlagsid) REFERENCES Verlag (verlagsid)
);
buch_aut (
    buchid      INT NOT NULL,
    autorid     INT NOT NULL,
    rolle       CHAR(1),
    rang        SMALLINT,
    PRIMARY KEY (buchid, autorid),
    FOREIGN KEY (buchid) REFERENCES buch (buchid),
    FOREIGN KEY (autorid) REFERENCES autor (autorid)
);

Aufgabe

Erstellen Sie eine PHP-Datei authors.php, die in einer Tabelle oder einem Auswahlfeld alle Autoren mit Vor- und Nachnamen aufführt. Durch das Anklicken eines Autors (im Falle einer Tabelle) bzw. Auswählen des Autors und Klicken auf eine Senden-Schaltfläche (im Falle eines Auswahlfeldes) soll die von Ihnen erstellte Datei books.php vom Web-Server angefordert werden. Diese Datei soll alle Bücher ausgeben (mit Titel, ISBN, Jahr, Verfasser, Preis und Währung), bei denen der ausgewählte Autor als Verfasser beteiligt ist (rolle = ‘v’).

Hinweise

Beachten Sie bitte auch die Hinweise zu Anfrageergebnissen und Parameterübergabe/Abruf:

Nachdem eine Anfrage mittels $result = dbx_query ("SELECT-ANFRAGE") abgeschickt worden ist, liegt das Ergebnis in dem zweidimensionalen Array $result->data vor. Zum Auslesen kann eine for-Schleife, die über die Zeilen iteriert, beginnend bei 0 bis ($result->rows - 1) verwendet werden (eine weitere Möglichkeit zur Iteration bietet foreach). Die Spalten können über die Attributnamen angesprochen werden, z.B.: $result->data[$i]["isbn"] (mit $i als Schleifenvariable).

Wenn Sie die Autoren in einer Tabelle aufführen, müssen diese mit einem Link hinterlegt sein, der books.php zusammen mit dem Parameter für den Autor aufruft (Beispiel zeigt Auszug aus HTML-Datei nach Verarbeitung der PHP-Anweisungen):

<table>
  <tr>
    <td><a href="books.php?author=0815>Heinz Mustermann</a></td>
  </tr>
  ...
</table>

Wenn Sie ein Auswahlfeld verwenden, wird der author-Parameter als Form-Parameter übermittelt (Beispiel ebenfalls nach Verarbeitung der PHP-Anweisungen):

<_form action="books.php" method="post">
  <select name="author" size="6">
     <option value="0815">Heinz Mustermann</option>>
       ...
  </select>
  <input type="submit" value="Abschicken" />
</form>

Auslesen des author-Parameters in PHP: $_REQUEST["author"]

Bitte halten Sie die Namenskonventionen authors.php und books.php ein, damit wir im Falle eines Logins auf Ihrem Account die Dateien schneller finden. Wichtig ist, dass Ihre beiden Dateien authors.php und books.php für den Server lesbar sind; dies erreichen Sie mit dem Unix-Befehl chmod g+r authors.php books.php.

Zusätzliche Informationen zu HTML-Programmierung (z.B. bzgl. Browser oder Tabellenaufbau) finden Sie unter http://de.selfhtml.org, Hilfen zu PHP können z.B. unter http://www.php.net abgerufen werden.

Test der Webanwendung

Um Ihr Programm zu testen, geben Sie in Ihrem Webbrowser folgende Adresse ein:

http://leutzsch.informatik.uni-leipzig.de:8080/~db2ueXXX/authors.php

Der Webserver geht dann automatisch in Ihr public_html-Verzeichnis und liest die authors.php-Datei. Beachten Sie, dass die Ladezeit einige Sekunden betragen kann.

Wählen Sie zum Testen den Autor “Rahm, Erhard” aus; in der anschließenden Buchausgabe müssen 7 Bücher erscheinen (Web & Datenbanken; Datenbanksysteme - Konzepte und Techniken der Implementierung (mit 2 Auflagen); Mehrrechner-Datenbanksysteme (mit 2 Auflagen); Hochleistungs-Transaktionssysteme; Synchronisation in Mehrrechner-Datenbank-Systemen).

Weitere Hinweise

Für Studenten, die keinen Zugang zum CIP-Pool haben (z.B. Nebenfachstudenten) ist von allen Rechner-Pools der Universität, auf denen Sie einen Account haben, ein ssh/rlogin/telnet auf die CIP-Pool-Rechner unter den zugewiesenen Accounts möglich. Beachten Sie, dass Sie bei einem rlogin/telnet zum Öffnen von Anwendungsfenstern die Bildschirmausgabe vom ilabws/userv-Rechner auf Ihren Rechner exportieren müssen, z.B. per

export DISPLAY=<Ihr Rechner>:0 (ksh,bash)
setenv DISPLAY <Ihr Rechner>:0 (csh)

Hierzu müssen Sie dem ilabws/userv-Rechner ggf. auch eine Schreiberlaubnis auf Ihrem Bildschirm erlauben:

xhost +ilabwsXX.informatik.uni-leipzig.de bzw. +uservX.informatik.uni-leipzig.de

Bei einer ssh-Verbindung kann per Parameter die Bildschirmausgabe automatisch umgeleitet werden.

Bitte kontaktieren Sie bei Problemen hierzu Herrn Jusek.

Übung | Wintersemester 2007/08