Please disable Adblockers and enable JavaScript for domain CEWebS.cs.univie.ac.at! We have NO ADS, but they may interfere with some of our course material.

PHP Tutorial (zur Verwendung der Oracle Datenbank)

W3Schools Seite zum Thema HTML: «http://www.w3schools.com/html/» 
W3School Seite zum Thema PHP: «http://www.w3schools.com/php/» 
PHP OCI Kommando API: «http://www.php.net/manual/en/ref.oci8.php» 
 
Zu allererst muss einmal eine Verbindung zur Datenbank aufgebaut werden. Dies geschieht durch Verwendung der Funktion «oci_connect» unter Bekanntgabe des Datenbankbenutzers, dessen Passwort und der entsprechenden Datenbank (am ALMIGHTY ist dies die lab). Diese stellt eine "persistente" Verbindung zur Datenbank her. Was das bedeutet, lesen Sie bitte im Manual nach. Das if-Statement bricht den Seitenaufbau ab, falls keine Verbindung zur Datenbank hergestellt werden kann. In diesem Fall erscheint Ihre Webseite leer.  
 
<?php
  $user = 'a+MatrNr';
  $pass = 'Oracle-Passwort';
  $database = 'lab';
 
  // establish database connection
  $conn = oci_connect($user, $pass, $database);
  if (!$conn) exit;
?>
 
Danach folgt das Grundgerüst jeder HTML Seite, nämlich <html> mit eingeschlossenem <head> und <body>. Mehr dazu entnehmen Sie bitte der «HTML Kurzreferenz».  
 
<html>
<head></head>
<body>
 
Um die Webseite sowohl für eine Listenansicht, als auch für eine Suchansicht verwenden zu können, fügen wir ganz oben die entsprechenden HTML Element Ein, die uns entweder die Anzeige aller Datensätze (siehe <a> Element) oder die Suche nach bestimmten Datensätzen (siehe <form> Element) ermöglicht. Der <a>-Link ruft die aktuelle Seite ohne die Verwendung von zusätzlichen Parametern auf. Dies soll in weitere Folge immer der Fall sein, wenn wir ALLE Datensätze der person Tabelle ausgeben wollen. Mittels <form> definieren wir ebenfalls, dass die aktuelle Seite aufgerufen werden soll, nur dass wir nun mittels <input> Element "search" die Möglichkeit haben dem Aufruf einen Parameter mitzugeben bzw. sollte dieser vorhanden sein, als Standardbelegung des <input> Elements zu verwenden (siehe Anweisung <?php echo $_GET['search']; ?>). Mittels <input> Element "submit" wird dann der Seitenaufruf mit dem im "search" angegebenen Parameter durchgeführt. 
 
<div>
  <form id='searchform' action='index.php' method='get'>
    <a href='index.php'>Alle Personen</a> ---
    Suche nach Nachname:
    <input id='search' name='search' type='text' size='20' value='<?php echo $_GET['search']; ?>' />
    <input id='submit' type='submit' value='Los!' />
  </form>
</div>
 
Im nächsten Block reagieren wir auf den eventuell mitgegebenen Parameter "search" und formulieren aufgrund dieses Parameters die entsprechende SQL Abfrage. Wurde kein Parameter mitgegeben, dann reicht eine SQL Abfrage ohne WHERE Teil. Wurde jedoch für "search" ein Wert mitgegeben, dann soll dieser im WHERE Teil berücksichtigt werden. Danach übernimmt die Funktion «oci_parse» die Kontrolle der korrekten SQL Syntax der SQL Anweisung, welche mittels $sql spezifiziert ist. Mittels «oci_execute» wird die SQL Anweisung dann ausgeführt. 
 
<?php
  // check if search view of list view
  if (isset($_GET['search'])) {
    $sql = "SELECT * FROM person WHERE nachname like '%" . $_GET['search'] . "%'";
  } else {
    $sql = "SELECT * FROM person";
  }
 
  // execute sql statement
  $stmt = oci_parse($conn, $sql);
  oci_execute($stmt);
?>
 
Danach bereiten wir die Ausgabe vor, indem wir eine Tabelle anlegen, die es ermöglicht die Daten der Person (also Spalten des Tupels, eines Datensatzes) in "geordneter" Form auszugeben. D.h. wir erstellen eine Tabelle (<table>) mit 4 Überschriftspalten (<th>) nämlich SVNr, Name, Adresse und sonstiges, in der wir alle Informationen einer Person dann letztendlich ausgeben werden. 
 
<table style='border: 1px solid #DDDDDD'>
  <thead>
    <tr>
      <th>SVNr</th>
      <th>Name</th>
      <th>Adresse</th>
      <th>sonstiges</th>
    </tr>
  </thead>
  <tbody>
 
Im <tbody> Element folgen nun die eigentlichen Daten, d.h. die Ergebnisse der SQL Abfrage müssen Datensatz für Datensatz (deswegen while Schleife) aus der Datenbank mittels «oci_fetch_assoc» ausgelesen werden. Alternativ kann man auch «oci_fetch_all», «oci_fetch_array», «oci_fetch_object», «oci_fetch_row» oder «oci_fetch» verwenden, um die einzelnen Datensätze der Tabelle person auszulesen. Diese Daten werden dann in den jeweiligen Spalten der Tabelle (<td>) untergebracht. Beispielsweise hängen wir den Vornamen und Nachnamen einer Person mit einem Leerzeichen zusammen und schreiben diesen in die zweite Tabellenspalte der HTML Seite. 
 
<?php
  // fetch rows of the executed sql query
  while ($row = oci_fetch_assoc($stmt)) {
    echo "<tr>";
    echo "<td>" . $row['SVNR'] . "</td>";
    echo "<td>" . $row['VORNAME'] . " " . $row['NACHNAME'] . "</td>";
    echo "<td>" . $row['STRASSE'] . ", " . $row['PLZ'] . " " . $row['ORT'] . "</td>";
    echo "<td>geb. am " . $row['GEBDATUM'] . " in " . $row['GEBORT'] . "</td>";
    echo "</tr>";
  }
?>
 
Danach schließen wir die geöffneten HTML Element der Tabelle, also <tbody> und <table> selbst (Achtung mit / am Anfang). 
 
  </tbody>
 </table>
 
Zu guter Letzt geben wir noch die Anzahl der gelesenen Datensätze mittels «oci_num_rows» aus. 
 
<div>Insgesamt <?php echo oci_num_rows($stmt); ?> Person(en) gefunden!</div>
 
Um "sauber" die in Anspruch genommenen Resourcen (Statement und Datenbankverbindung) wieder freizugeben sind die Anweisungen [oci_free_statement|oci_free_statement] und «oci_close» notwendig. 
 
<?php
  // clean up connections
  oci_free_statement($stmt);
  oci_close($conn);
?>
 
Die Elemente <body> und <html> werden nun noch abschließend wieder geschlossen (Achtung wieder mittels / am Anfang). 
 
</body>
</html>
 
Somit ist der Prototyp eine PHP Implementierung, welche auf Ihre ALMIGHTY Datenbank zugreifen kann geschafft. 
 
Hier die PHP Datei
 
Um die PHP Seite in Ihrer Kennung am ALMIGHTY ausführbar zu machen müssen Sie Ihre PHP Datei in ein Unterverzeichnis im "public_html" Verzeichnis Ihrer Kennung ablegen.  
 
Also mittels SSH am ALMIGHTY verbinden, dann mittels cd public_html in Ihr WWW-Hauptverzeichnis wechseln, dort einen Unterordner mittels mkdir <ordnername> anlegen (z.b. dbs) und dort dann die PHP Datei ablegen.  
 
Der Aufruf erfolgt dann in Ihrem Fall über folgende URL:  
http://wwwlab.cs.univie.ac.at/~a<MatrNr>/dbs/
 
Sollte Ihre PHP Datei nicht index.php heißen, so müsste auch der Dateiname in der URL angegeben werden: 
http://wwwlab.cs.univie.ac.at/~a<MatrNr>/dbs/index.php
 
Bei mir ist die Tutorial Datei unter folgenden Pfad aufrufbar:  
«http://wwwlab.cs.univie.ac.at/~beranp7/dbs/» 
Letzte Änderung: 24.02.2015, 15:29 | 1001 Worte