HTML PHP Anbindung an die Oracle Datenbank
Transcrição
HTML PHP Anbindung an die Oracle Datenbank
Einführung in HTML Einführung in HTML Beschreibung zu HTML: http://de.selfhtml.org/html/index.htm HTML dient zur Strukturierung von Text. Ein HTML-Text besitzt folgenden typischen Aufbau: <HTML> <HEAD> <TITLE> Titel des Textes (Kopfzeile des Browsers) </TITLE> </HEAD> <BODY> HTML-Text (Inhalt des Dokuments) </BODY> </HTML> einzelne Elemente des Textes werden durch sogenannte Tags gekennzeichnet. Während die meisten Tags paarweise als öffnendes (<BODY>) und schließendes (</BODY>) Tag auftreten, gibt es auch Tags (<BR>), für die kein schließender Tag benötigt wird Konstrukte können auch verschachtelt werden (keine Überlappung) bei den Tags ist Groß/Kleinschreibung irrelevant Fortlaufender Text kann beliebig formatiert werden. Der Browser behandelt normalerweise Folgen von Spaces, Tabulatorsprüngen und Zeilenumbrüchen im Text wie ein einzelnes Space (Ausnahme: Der Text steht zwischen den Tags <PRE> und </PRE>) Umlaute sollen im HTML-Text folgendermaßen codiert werden: Ä = Ä Ö = Ö Ü = Ü ä = ä ö = ö ü = ü &szuml; = ß einige Zeichen haben in HTML eine besondere Bedeutung und müssen deshalb ebenfalls codiert werden: < = < > = > & = & für Zeilenumbrüche verwendet man folgende Tags: <br> beginne neue Zeile <par> beginne neuen Absatz (mit halber oder ganzer Leerzeile) <hr> eine horizontale Trennungslinie Gestaltungsmittel in HTML Gestaltungsmittel in HTML: Überschriften: Listen <li> Listeneintrag, bekommt "1." vorangestellt <li> Listeneintrag, bekommt "2." vorangestellt </ol> geeignete Zeilenumbrüche vor, nach und zwischen den Listeneinträgen automatisch, keine Verschachtelung gezählter Listen einige Tags zur Texthervorhebung: <b> </b> <i> </i> <u< </u> <big> </big> <small> </small> <sup> </sup> <sub> </sub> fett kursiv unterstrichen größere Schrift kleinere Schrift hochgestellte Schrift tiefgestellte Schrift Tag zur Schriftgröße: <font size= > </font> Als Größe können absolute Werte zwischen 0 und 7 oder die relativen Werte +1, -1 angegeben werden gezählte Listen: <ol> Für Überschriften verschiedener Größe stellt HTML die Tags <H1> (höchste Ordnung, sehr groß) bis <H6> (niedrigste Ordnung, klein) zur Verfügung. Das Ende der Überschrift wird durch ein schließendes Tag </H1> bzw. </H6> gekennzeichnet. Zeilenumbrüche werden vor und nach den Überschriften automatisch eingefügt. Bullet-Listen: <ul> <li> Listeneintrag, bekommt Punkt vorangestellt <li> ... <li> ... </ul> Tabellen Tabellen werden mit <TABLE> eingeleitet und mit </TABLE> beendet. Im Normalfall soll die Tabelle umrandet und die Zeilen durch Linien getrennt werden. Dann ist die Tabelle mit <TABLE BORDER> einzuleiten. jede Zeile beginnt mit <TR> und endet mit </TR> jede Datenzelle innerhalb einer Zeile wird mit <TD> begonnen und mit </TD> beendet. sollen Zellen hervorgehoben werden (Kopfzeile), dann werden sie mit <TH> statt mit <TD> gekennzeichnet Beispiel: Hyperlinks anklickbare Verweise auf andere Seiten (Hyperlinks) werden zwischen <A HREF=...> und </A> eingeschlossen folgende Fälle können unterschieden werden: ¾ <A HREF="neighbor.html"> Nachbar-Datei </A> <table border> <tr> <th> Berlin </th> <th> Hamburg </th> <th> München </th> </tr> <tr> <td> Buletten </td> <td> Frikadellen </td> <td> Fleischpflanzerl </td> </tr> </table> ¾ ¾ Wie sind PHP-Dateien aufgebaut? <form action="http://server/script" method=post> Es können Skripte in PHP, CGI, Java, ... eingebunden werden. Bei action gibt man die Internet-Adresse an, zu der der Inhalt des ausgefüllten Formulars geschickt werden soll. Dies kann eine e-mailAdresse sein: action="mailto:[email protected]" oder die http-Adresse eines Gateway-Programms Nach der Einleitung des Formulars folgen die einzelnen Elemente des Formulars. Neben Eingabefeldern, Buttons und Auswahllisten sind hier alle üblichen HTML-Konstrukte zur Text-Strukturierung erlaubt. Das Formular endet mit </form>. Innerhalb einer HTML-Seite können auch mehrere Formulare hintereinander stehen. Verweis auf eine Datei auf einem anderen Server: <A HREF="http://anderer.rechner.de/verzeichnis/datei.html> ... </A> Einleitung eines Formulars (innerhalb von <body>): Verweis auf eine Datei in einem anderen Verzeichnis am selben Server-Rechner: <A HREF="../anderes_verzeichnis/datei.html"> ... </A> Formulare Verweis auf Datei im gleichen Verzeichnis: PHP-Dateien fangen mit <?php an und hören mit ?> auf. Sie müssen die Dateiendung *.php haben Beispiel: <?php echo "So könnte eine Datei aussehen\n"; ?> oder <html> <head> <title>Hi all</title> </head> <body> <?php echo "Der PHP Code\n"; ?> </body> </html> Kommentare Variable 2 Arten mehrzeilige Kommentare wird mit /* eingeleitet und endet mit */ einzeilige Kommentare: mit // eingeleitet und endet am Ende der Zeile. Beispiele: <?php // Ein Beispielkommentar echo "Hallo Welt!"; // gibt "Hallo Welt!" aus ?> <?php /* Dies ist ein Hello World Script. Damit kann man testen ob PHP auf dem Server installiert und aktiviert ist. */ echo "Hallo Welt!"; // gibt "Hallo Welt!" aus ?> Alle Variablennamen beginnen mit $. Es gibt keine Deklarationen. Der Typ der Variablen wird durch die Wertbelegung festgelegt Beispiel: Name des Skriptes var.php <?php $text = "Ich bin ein String !"; echo $text; echo ("$text,$text,$text"); echo „<BR>“; $l = "langer"; $k = "kurzer"; echo "Ich bin ein $l$l$l$l$l$l Text!"; echo „<BR>“; echo "Ich bin ein $k Text!"; echo „<BR>“; $i = 10; $j = 5; echo $i."+".$j."="; echo $i+$j; ?> Einfache Rechenoperationen (1) Einfache Rechenoperationen (2) "+": Addition, $i+$j, "-": Subtraktion, $i-$j "*": Multiplikation, $i*$j "/": Division, $i/$j "%": modulo, $i%$j: Abkürzungen: $i++ erhöht $i um 1. ++$i erhöht $i ebenfalls um 1. $i-- erniedrigt $i um 1. --$i erniedrigt $i ebenfalls um 1. z.B. 23%17 ergibt 6, da 23 geteilt durch 17 gleich 1 Rest 6 ist. ".": Verknüpft Strings: $l = "langer"; $k = "kurzer"; echo $l.$k; Æ ergibt langerkurzer Der Unterschied zwischen $i++ und ++$i ist: $i=0; echo $i++; gibt 0 aus, anschließend wird $i auf den Wert 1 erhöht. $i=0; echo ++$i; erhöht zuerst $i auf 1 und gibt den Wert 1 aus. Schleifen (1) while - Schleife Beispiel: $t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n"; $i = 0; while ($i<10) { echo $t; $i++; } abweisende Schleife – Test vor dem ersten Befehl oder $i = 0; do { echo $t; $i++; } while ($i<10); nicht abweisende Schleife, der erste Befehl wird in jedem Fall ausgeführt Beide Male wird der Text der Variablen $t wird 10mal ausgegeben. Bedingte Anweisungen (1) Der if-Befehl Beispiel: if ($i<0) { echo "$i ist kleiner als Null\n"; } oder auch if ($i<0) { echo "$i ist kleiner als Null\n"; } else { echo "$i ist nicht kleiner als Null\n"; } Man kann diesen Befehl auch schachteln: if ($i<0) { echo "$i ist kleiner als Null\n"; } else if ($i>0) { echo "$i ist groesser als Null\n"; } else { echo "$i ist Null\n"; } Schleifen (2) „for“ – Schleife Form: for (ausdruck1;ausdruck2;ausdruck3) { ... } Mit ausdruck1 wird die Schleife initialisiert, d.h. die Schleifenvariable wird auf den Anfangswert gesetzt. ausdruck2 gibt die Abbruchbedingung an. In ausdruck3 wird die Schleifenvariable erhöht bzw. erniedrigt. Beispiel: $t = "Ich soll meine Uebungsaufgaben selbst erstellen!<BR>\n"; for ($i=0;$i<10;$i++) { echo $t; } Bedingte Anweisungen (2) Hat man mehrere Tests der gleichen Variablen, so verwendet man den switch-Befehl : switch ($name) { case "Heinrich": echo "Ich bin der kluge Heinrich"; break; case "Hans": echo "Ich bin der dumme Hans"; break; case "Agathe": echo "Ich bin die Agathe und klüger als Heinrich und Hans"; break; default: echo "Wir sind der Rest"; } Falls die Variable $name den Wert "Hans" hat, wird als nächster Befehl echo "Ich bin der dumme Hans"; ausgeführt. Normalerweise würden dann alle nachfolgenden Befehle ausgeführt werden, u.a. echo "Ich bin die Agathe und klüger als Heinrich und Hans"; Dies ist meist nicht erwünscht, man springt deshalb mit break aus dem switch-Befehl heraus. Funktionen Weitere Vergleiche: Weitere Vergleichsoperatoren: $i==10: Ist $i gleich 10? $i!=10: Ist $i ungleich 10? $i>=10: Ist $i größer oder gleich 10? $i<=10: Ist $i kleiner oder gleich 10? Kombination: ($i==10) && ($j>0): Ist $i gleich 10 und $j größer als 0? ($i==10) || ($j==0): Ist $i gleich 10 oder $j gleich 0? Ausgabe (1) 1. Ausgaben mit echo erzeugen Echo gibt genau einen Parameter aus. Echo ist keine Funktion, sondern ein PHP-Konstrukt, deshalb keine Klammern. Beispiel: <?php echo "Dies ist eine Zeichenkette, die ausgegeben wird"; ?> Zeichenkette in Anführungszeichen Innerhalb der Zeichenkette können HTML-Tags oder Steuerzeichen angegeben werden, also <?php echo "Dies ist eine Zeichenkette, die ausgegeben wird\n"; ?> oder <?php echo "Dies ist eine Zeichenkette, die ausgegeben wird<BR>"; ?> <?php name_der_funktion(parameter1, parameter2, ...); ?> Beispiel: <?php phpinfo(); ?> Ausgabe (2) Ausgabe mit print: print ("Zeichenkette"); $x=7; Print("Variable:");Print($x); Oder mit printf: $x=10; Printf("Das ist eine Variable %d", $x); PHP aus HTML aufrufen Dateien hinzuladen Die Befehle include("dateiname"); oder require("dateiname"); lesen den Inhalt der Datei dateiname so, als ob er an dieser Stelle stehen würde. Damit kann z.B. einheitliches Layout bei einer größeren Anzahl von Dateien erreicht werden. Unterschied: require wird nur beim ersten Scriptdurchlauf ausgeführt Beispiel: <?php // Dateiname: config.php $name = "Max"; $nachname = "Mustermann"; ?> <?php include "config.php"; // einbinden der config.php echo "Ich bin ".$name." und heiße mit Nachnamen ".$nachname; ?> Der Aufruf geschieht aus Forms: <HTML><TITLE>TEST</TITLE> <BODY> <H3><CENTRE>Das ist HTML</CENTRE></H3> <FORM ACTION= "var.php" METHOD="POST" > <INPUT TYPE="submit" value="Eingabe"> </FORM> <H3><CENTRE> Das sehen Sie nur am Anfang </CENTRE> </H3> </BODY> </HTML> Die Datei var.php hat den Inhalt des Skriptes von Folie 10 Definition von Formularen in HTML: Einleitung eines Formulars (innerhalb von <body>): <FORM ACTION="http://server/script" METHOD=POST> Es können Skripte in PHP, CGI, Java, ... eingebunden werden. Bei ACTION gibt man die Internet-Adresse an, zu der der Inhalt des ausgefüllten Formulars geschickt werden soll. Dies kann eine e-mail-Adresse sein: ACTION="mailto:[email protected]" oder ein PHP-Skript, oder ... Nach der Einleitung des Formulars folgen die einzelnen Elemente des Formulars. Neben Eingabefeldern, Buttons und Auswahllisten sind hier alle üblichen HTML-Konstrukte zur Text-Strukturierung erlaubt. Das Formular endet mit </FORM>. Eingabe-Elemente für Forms (1) einzeilige Eingabefelder: <input name="username" size=40 maxlength=60> Default-Wert Jedes Eingabe-Element muß unter name= einen eindeutigen internen Bezeichnernamen erhalten. Außerdem läßt sich mit type= noch der Typ des Eingabefeldes näher spezifizieren. Möglich sind: type=int ganze Zahlen type=float Fließkommazahlen type=date Kalenderdatum type=url Internet-Adresse type=password verdeckte String-Eingabe size : Länge, mit der das Eingabefeld angezeigt wird, maxlength: tatsächliche Maximallänge des Strings Eingabe-Elemente für Forms (2) mehrzeilige Eingabefelder: <textarea name="feedback" rows=10 cols=50> DefaultText</textarea> erzeugt ein Eingabefeld der Grösse 10x50 Auswahllisten: Liste mit mehreren Einträgen, aus einer ausgewählt wird: <select name="top3" size=3> <option> Schiller <option> Lessing <option selected> Goethe </select> Die dritte Option ist vorselektiert (Default-Wert). Mehrfachauswahl mit <select multiple name=...> Eingabe-Elemente für Forms (4) Submit-Button: Schickt das Formular ab. <input type=submit value="Formular abschicken"> Die Beschriftung des Buttons wird hier durch value bestimmt. Reset-Button: Abbrechen und Löschen aller Eingaben. <input type=reset value="Loeschen"> Die Beschriftung des Buttons wird ebenfalls durch value bestimmt. versteckte Elemente: • Felder, die dem Anwender nicht gezeigt, jedoch mit übertragen werden. • Versteckte Felder sind wichtig, wenn in einer Applikation mehrere Benutzerinteraktionen hintereinander auftreten. In diesem Fall kann der Zustand der Applikation in den versteckten Elementen gespeichert werden. <input type=hidden name="session_id" value="125"> Eingabe-Elemente für Forms (3) Checkbuttons: können einzeln selektiert und deselektiert werden: <input type=checkbox name="top2" value="einstein"> Albert Einstein <br> <input type=checkbox name="top2" value="curie"> Marie Curie Radiobuttons: von den Radiobuttons einer Gruppe (gleicher name) wird genau einer selektiert: <input type=radio name="janein" value="ja"> ja <input type=radio name="janein" value="nein"> nein Beispiel für Auswahltypen (1) <html><head> <title>Auswahltypen</title></head> <body> <!-- Formulardefinition --> <form action=htmlphp.php method=post name="Auswahl" onSubmit="" enctype="multipart/form-data"> <!-- Auswahltypen/Menue --> <b>Auswahltypen</b><br> <br> Auswahlfeld Multiple: <br> <select name=selectmultiple[]" size=4 multiple> <option value="A11" disabled> Auswahl 11 <option selected value="A12"> Auswahl 12 <option selected value="A13"> Auswahl 13 </select><br> </td><br> Beispiel für Auswahltypen (2) Auswahlfeld Normal:<br> <select name=selectnormal1" size=3> <option value="A1" disabled> Auswahl 1 <option selected value="A2"> Auswahl 2 <option selected value="A3"> Auswahl 3 </select> </td><br><br> Auswahlfeld aufklappbar:<br> <select name=selectauf1" size=1> <option value="A11" disabled> Auswahl 11 <option selected value="A12"> Auswahl 12 <option selected value="A13"> Auswahl 13 </select> </td><br><br> <td > Beispiel für Auswahltypen (4) <? // Überprüfung des Formulars echo "<u>Auswahlfeldtype</u><br>"; echo "Select multiple:<br>"; for ($i=0;$i<3;$i++) echo $selectmultiple[$i],"<br>"; echo "<br>"; echo "Select normal: <br> $selectnormal1<br>"; echo "<br>"; echo "Select aufklappbar: <br> $selectauf1<br>"; echo "<br>"; echo "Radiobutton: <br>$rad1<br>"; echo "<br>"; echo "Checkbox:<br>"; for ($i=0;$i<3;$i++) echo $CB1[$i],"<br>"; ?> Beispiel für Auswahltypen (3) Radiobutton:<br> <input type=radio name="rad1" value="alt1" disabled> wert1<br> <input type=radio name="rad1" value="alt2" checked> wert2<br> <input type=radio name="rad1" value="alt3" checked> wert3<br><br> Checkboxen:<br> <input type=checkbox name="CB1[]" value="opt1" disabled> Option 1<br> <input type=checkbox name="CB1[]" value="opt2" checked> Option 2<br> <input type=checkbox name="CB1[]" value="opt3" checked> Option 3<br> </td> <input type=submit value="ab"></tr> </form> </body> </html> Beispiel für Auswahltypen (5) PHP - Skript Abarbeitung Übergabe von Variablen (1) GET - Methode: http://users.informatik.uni-halle.de/~name/varget.php?Wetter=wolkig&Temp=5 <HTML> <BODY> <H3>Uebertragen mit GET-Methode </H3> Wie ist das Wetter ? <br> <? php echo $_GET[Wetter]; ?> <br> <H3>Wie hoch ist die Temperatur ? </H3> <? php echo $_GET[Temp]; ?> Grad </BODY> Variablennamen sind case-sensitiv </HTML> Übergabe von Variablen (1) GET - Methode: Übergabe von Variablen (2) POST - Methode: <HTML> <BODY> <H4>Hallo, hier kann etwas eingegeben werden</H4> <FORM ACTION="vorl1.php" METHOD="POST" > <TEXTAREA NAME="String" ROWS="5" COLS="40"> </TEXTAREA> <BR> <INPUT TYPE="submit" VALUE="Abschicken"> <BR> </FORM> </BODY> </HTML> Name des PHP-Files: vorl1.php <?php echo "Hi, ich bin ein PHP-Skript!","<br>"; echo "<H4>"; echo $_POST[String]; echo "</H4>"; $_POST[String]="<br> Das war ein Test"; echo $_POST[String] ; ?> Übergabe von Variablen (3) POST - Methode: Komplettes Beispiel (2) PHP-Datei: vorl1.php: <?php echo "<center><h5>"; echo "Gewählt wurde <br>"; echo "</h5></center>"; echo $_POST[classic]; echo "<br> "; ?> Bis Version 4.0x Æ $classic Wir arbeiten mit Version 5.2.0-8+etch10 Komplettes Beispiel (1) HTML-Datei: <HTML> <BODY> Hallo, hier kann gewählt werden: <FORM ACTION="vorl3.php" METHOD="POST" > <select name="classic" size=3> <option> Mozart <option> Beethoven <option selected> Tschaikowski </select> <input type=submit value="Wahl"> </FORM> </BODY> </HTML> Komplettes Beispiel (3) Verbindung zur Datenbank (Oracle) lesen (1) Allgemeine Voraussetzung: Login auf "users" Aufruf mit dem Browser: http://users.informatik.uni-halle.de/~p_login/name_der_html_datei.html Die html- und php-Skripte liegen in der homepage unter /public_html Rufende HTML – Datei für Verbindung mit der DB <HTML> <HEAD> <TITLE>Ausgabe von empdept</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <H2><CENTER>Aktivieren der DB-Ausgabe</CENTER></H2> <FORM ACTION="connect.php" METHOD="POST"> <INPUT TYPE="SUBMIT" value="senden" > </FORM> </BODY> </HTML> Es werden keine Variablenwerte übertragen Æ aus der DB wird nur gelesen, das PHP-Skript wird durch Klicken auf den „SUBMIT“ – Botton aktiviert. Verbindung zur Datenbank (Oracle) lesen (3) $ora_connect=oci_connect($user,$passwd,'//'.$host.'/'.$db); $query='select ename, job from emp'; $stid = oci_parse($ora_connect, $query); if (!stid){ $e = oci_error(ora_connect); print htmlentities($e['message']); exit; $r = oci_execute($stid, OCI_DEFAULT); if (!$r) { $e = oci_error($stid); echo htmlentities($e['message']); exit; } Verbindung zur Datenbank (Oracle) lesen (2) empdeptdaten.php Beispiel zum Auslesen <? $host="141.48.14.164"; (Rechnername oder IP-Adresse) $user="Name"; (p_Login) $passwd="verrate_ich_euch_nicht"; $db="studdb"; $ora_connect=oci_connect($user,$passwd,'//'.$host.'/'.$db); if (!ora_connect){ $ora_conn_erno = oci_error(); // Fehlermeldung in Variable echo ($ora_conn_erno['message']."\n"); // Fehlerm. ausgeben oci_close($ora_connect); // Verbindung schließen } else { // Sonst Ausgabe: Verbindung fehlerfrei echo "Verbindung erfolgreich\n"; oci_close($ora_connect); // Verb. schließen, wird neu eröffnet Verbindung zur Datenbank (Oracle) lesen (4) /* Ausgabe in einer Tabelle */ print '<table border="1">'; while ($row = oci_fetch_row($stid)) { print '<tr>'; foreach ($row as $item) { print '<td>'.($item?htmlentities($item):' ').'</td>'; } print '</tr>'; } print '</table>'; oci_close($ora_connect); // Datenbank schließen } ?> Eingabe in eine Oracle-DB - Beispiel (1) <HTML> <HEAD> <TITLE>Eingabe in dept</TITLE> </HEAD> <BODY BGCOLOR="#FFFFFF"> <H2><CENTER>Eingabe in dept</CENTER></H2> <FORM ACTION="con_insert.php" METHOD="POST"> <p>Abteilungsnummer: <br> <input name="deptno" type="int"></p> <p>Abteilungsname: <br> <input name="dname" type="text" size="10" maxlength="15"></p> <p>Ort: <br> <input name="loc" type="text" size="10" maxlength="15"></p> <INPUT TYPE="SUBMIT" value="Eingabe" > </FORM> </BODY> </HTML> Eingabe in eine Oracle-DB - Beispiel (3) $stid = oci_parse($ora_connect, $sql); if (!$stid) { $e = oci_error($ora_connect); print htmlentities($e['message']); exit; } $r = oci_execute($stid); echo "Das ist $_POST[dname]"; if (!$r) { $e = oci_error($stid); echo htmlentities($e['message']);exit;} oci_commit($ora_connect); oci_close($ora_connect); //Verbindung schließen } ?> Eingabe in eine Oracle-DB - Beispiel (2) <?php $host='141.48.14.164'; // (Rechnername oder IP-Adresse) $user="login"; // (p_Login) $passwd="rate_mal"; $db="studdb"; $ora_connect=oci_connect($user,$passwd,'//'.$host.'/' .$db); if (!ora_connect){ $ora_conn_erno = oci_error(); // Fehlermeldung in Variable echo ($ora_conn_erno['message']."\n"); // Fehlerm. ausgeben oci_close($ora_connect); // Verbindung schließen } else {// Sonst Ausgabe: Verbindung fehlerfrei echo "Verbindung erfolgreich\n"; oci_close($ora_connect); // Verbindung schließen, wird neu eröffnet $ora_connect=oci_connect($user,$passwd,'//'.$host.'/' .$db); $sql="insert into dept values($_POST[deptno],'$_POST[dname]','$_POST[loc]')"; Eingabe in eine Oracle-DB - Beispiel (4)