Einstieg in PHP und DB

Werbung
Überblick
PHP
• Prinzipien und Architekturen
• PHP als Programmiersprache
• PHP: Skriptsprache für server-seitige Einbettung in HTML
• Features
– Ausführung in der Unix-Shell
– Ausführung im Webserver
•
•
•
•
•
•
•
–
–
–
–
Einbettung
HTML und Formulare
Datenbank-Connect
Anfragen (select)
Anfrageergebnisse iterieren
Anfragen (insert, update)
Formulare und SQL verknüpfen
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
• Prinzip
<html><body>
<?php echo "Hello World !" ?>
</body></html>
1
Einführendes Beispiel
„Hallo Welt“ in PHP
•
http://fwil588.fh-brandenburg.de/~ hoeding /HalloWelt.php
•
•
Ausführung in der Unix-Shell
Ausführung durch Webserver
PHP und Datenbanken
Schnelleinstieg
PHP und Datenbanken
Schnelleinstieg
In PHP gibt es 3 Skalar-Typen
– Integer
– Real (Float, Double)
– String
•
Ungetypte Sprache: Typen werden nicht vordefiniert
<?php
// Integer-Variablen
$inte[] = 123; $inte[] = -123; $inte[] = 0x123;
// reelle Variablen
$reele[] = 123.4; $reele[] = 12e20; $reele[] = -.23;
// Strings
$str[] = "abc"; $str[] = 'abc\n\c\'';
$str[] = "abc\n\ab\rx\t\\,\$\041\x401";
?>
3
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
PHP-Kontrollstrukturen
Ein wenig HTML
• Bedingte Ausführung: if oder switch
• Schleifen: while, do while, for
• Kurzschlüsse: break, continue
• bei Ausgabe über Browser: HTML-Tags wirksam aber
Leerzeichen Zeilenumbruch unterdrückt
• Zeilenumbruch: <BR> <P>
• Fettdruck: <B> </B>
• Überschriften <H1></H1> <H2> </H2> usw.
• Tabellen: <TABLE> </TABLE>
<?php
$a = 12;
print "$a, $b , $c";
while ($a>0) {
print "$ai .. ";
if ($a<10) print "Einstellig \n";
$a--;
}
?>
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
2
PHP – Datentypen
<?php
print "Hallo Welt\n";
?>
Dr. Michael Höding
Dr. Michael Höding
•
•
C-ähnliche Syntax, objektorientierte Konzepte
einfache Verarbeitung von Dokumentanforderung
dynamische Generierung von HTML-Dokumenten
Schnittstellen zu vielen Systemfunktionen und DBMS
4
– Zeile (Row) <TR> </TR>
– Spalte <TD> </TD>
5
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
6
1
HTML-Table - Beispiel
Common Gateway Interface (CGI)
<?php
print "<H1>Hallo Welt</H1>";
• CGI: ursprüngliche Schnittstelle zwischen Web-Server
und Programm zur Anbindung externer Quellen
• Gateway:
$a = 12;
$b =1.23;
$c = "Eine Zeichenkette\n";
– Umformung einer Informationsquelle in ein Web -Dokument
– Programm/Skript zur Bearbeitung einer
Dokumentenanforderung, das
print "$a, $b , $c";
print "<TABLE BORDER=3>";
while ($a>0) {
print "<TR><TD>$a</TD>\n";
if ($a<10) print "<TD>Einstellig</TD><TR>\n";
$a--;
}
print "</TABLE>";
• HTML-Text, eine URL oder andere Daten liefert
• in beliebiger Sprache implementiert ist
?>
/+,!-"#.*$%+,-.
&'( )
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
7
PHP und Datenbanken
Schnelleinstieg
Einbettung: Prinzip
9
Einbettung: Beispiel
<html><body>
<H1>Hallo Welt</H1>
<?php
$a = 12;
$b =1.23;
$c = "Eine Zeichenkette\n";
print "$a, $b , $c";
?>
<TABLE BORDER=3>
<?php
while ($a>0) {
?><TR><TD><?php print $a ?></TD>
<?php if ($a<10): ?> <TD>Einstellig</TD><TR>
<?php endif;
$a--;
} ?>
</TABLE>;
</body></html>
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
PHP und Datenbanken
Schnelleinstieg
0016:1627253;738<849=459>? @86 AB LMEJNFGHIJKNG
CGI: Prinzip
Dr. Michael Höding
Dr. Michael Höding
Dr. Michael Höding
8
0161273:7308C84925?695>4D0:2?5
PHP und Datenbanken
Schnelleinstieg
10
Einbettung mit PHP
• Einbindung externer Dateien (z.B. HTML-Vorlagen)
– require 'dateiname'
Einfügen des Inhaltes der Datei dateiname
– include 'dateiname'
Einfügen und Auswerten der Datei dateiname
• Verarbeitung von Formularen
– Auswertung der Umgebungsvariablen durch PHP -Interpreter
– Zugriff auf Werte der Felder: Variablen mit Elementnamen
– Beispiel:
HTML: <input type="text" name="eingabe">
PHP: $eingabe
11
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
12
2
PHP und Datenbanken
Verbindungsaufbau PHP-Oracle
• DatenbankHandle=OCILogin(Name, Passwort,
Datenbankname)
• Beispiel
$connID = ocilogon("scott","tiger","db2.fhbrandenburg.de");
• PHP – prozedurale Programmiersprache
• Nutzung von SQL über CLI
• Verschieden CLI für verschiedene DBMS
– ora, oci8 für Oracle (http://www.php.net )
– mySQL für MySQL
– scott (mit tiger) ist bei Oracle ein Testaccount (Achtung
Sicherheitslücke schließen)
– Kleine Testdatenbank mit 4 Tabellen
– Umgebungsvariablen müssen gesetzt sein, wichtig:
ORACLE_HOME (sollte durch Webserver erfolgen)
• Grundsätzlich
– zum Verbindungsaufbau: Database Handle
– Erzeugen, Parsen, Ausführen von SQL-Anweisungen:
Statement Handle
– Auswertung des Ergebnis mit Cursor
– Test ob Ausführung erfolgreich
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
• Test ob Verbindung aufgebaut – einfach überprüfen, ob der
Database Handle initialisiert ist:
if ($connID > 0) { echo "Connected to Oracle!<BR>"; }
13
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
14
SQL-Statement ausführen
SQL-Ergebnis auswerten
• Schritt 1: SQL-Anfrage formulieren
$sql = "select ENAME from EMP";
• Schritt 2: Statement-Handle durch Parsen erzeugen
$stmt = OCIParse($connID, $sql);
• Schritt 3: Ausführen
OCIExecute($stmt);
• Schritt 4: Auf Ausführungsfehler testen
if($error = OCIError($stmt)) {
die("<font color=red>ERROR!! Could not execute
statement!</font>");}
• mit OCIFetch wird satzweise über die Ergebnismenge
iteriert
• OCIFetch liefert 0 wenn kein Satz gefunden
• mit OCIResult wird aus dem Satz auf den der Cursor
zeigt und der genannten Spalte eine Datenwert geliefert
• Beispiel: Auslesen bzw. Ausgeben aller Werte für
ENAME (Name des Employees - Arbeitnehmers)
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
15
while (OCIFetch($stmt)) {
print OCIResult($stmt, "ENAME"). "<BR>";
}
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
SQL-Ergebnis auswerten
Metainformationen nutzen
• Das ganze als HTML-Tabelle:
• OCINumCols liefert Anzahl der Spalten einer
Ergebnisrelation
• OCIColumnName liefert Name der n-ten Spalte
• Damit kann man für beliebige SQL-Anfragen
„passende“ HTML-Tabellen erzeugen
• Prinzip:
<TABLE BORDER=3>
<?php
while (OCIFetch($stmt)) {
$ename= OCIResult($stmt, "ENAME");
$sal= OCIResult($stmt, "SAL");
?><TR><TD><?php print $ename ?></TD>
<TD><?php print $sal ?></TD><TR>
<? } ?>
</TABLE>;
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
16
– Überschrift ausgeben: für 1 bis n: OCIColumnName
– Äußere Schleife; für alle Datensätze OCIFetch
• für 1.. n OCIResult( $stmt, $OCIColumnName(n))
17
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
18
3
Parametrisierung mit Formular
Fazit
• Formularvariablen sind unmittelbar in PHP-Skript
nutzbar!
• Nutzung von HTML und Formularen erlaubt einfache
Oberflächen
• Datenbankanbindung über spezielle CLI: z.B OCI
• Zahlreiche OCI-Funktionen zur Anfragebearbeitung,
Transaktionssteuerung, Zugriff auf Daten und
Metadaten
• Einbettung von PHP erlaubt komfortable Nutzung von
HTML mit Datenbankzugriff oder
Berechnungsfunktionalität
• Einbettung kann zu unübersichtlichem HTML-Code
führen
beispiel_form.html
<HTML><BODY>
<H1> Das ist ein Beispielformular</H1>
<form method=POST action="beispiel.php">
<input type="text" SIZE=40 name="sqlQuery">
<input type="submit">
</form>
</BODY><(HTML>
beispiel.php (Ausschnitt)
...
$sql = $sqlQuery;
...
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
19
Dr. Michael Höding
PHP und Datenbanken
Schnelleinstieg
20
4
Herunterladen