Dynamische Webseiten mit PHP

Slides:



Advertisements
Ähnliche Präsentationen
Allgemeines Name: Ursprünglich: „Personal Home Page Tools“
Advertisements

der Universität Oldenburg
Java-Servlets Gliederung: Allgemeine Informationen zu Servlets
1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
Forschungszentrum caesar
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Software Engineering Praktikum SS 2003
Software Engineering Praktikum WS 2002/03
Dynamische Seiten mit Dreamweaver Zugriff auf (mysql) Datenbank mit PHP.
Zusammenfassung der Vorwoche
Aufbau des Internets Überblick Prof. Dr. T. Hildebrandt
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
Internet-Datenbanken
Imperative Programmierung -Entwicklungswerkzeuge
Allgemeine Technologien II
Tomcat Web-Server installieren
Java: Dynamische Datentypen
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
Java: Grundlagen der Sprache
SWITCH - Anweisung.
Internet-Technologien und Java
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
DO...WHILE Anweisung.
Robotik mit LEGO Mindstorms
Dynamische Webseiten mit PHP Oder: LAMP - The open way.
Dynamische Webseiten Java servlets.
Web-Anwendungen.
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Filiale pea09 Die Einbindung der MySQL-Datenbank in das Servlet.
Seminarvotrag: PHP Von Stefan Niemczyk.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
Einführung in die Programmierung Datensammlung
Einführung MySQL mit PHP
Verzweigung.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Jetzt lernen wir.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Einführung Servlets/JSPs
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Erste Schritte mit PHP 5 von Max Brandt, 22. September 2006.
Wir bauen uns eine Webapplikation!
1 Sg 3 – JSP - Java Server Pages Softwareengineering Praktikum Java Server Pages Nicole Brandstätter Josef Sturm Karl Streicher.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
CuP - Java Eingabe über Tastatur, AudioClips, überschreiben, Quiz Montag, 18. November 2002.
PHP Basic.
Unterprogramme in JAVA
Dynamische Webseiten-Generierung
Datenanbindung in Webapplikationen
Einführung in PHP.
Einführung in PHP 5.
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
PHP: Operatoren und Kontrollstrukturen
Datenbankanbindung mit
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
Programmiervorkurs WS 2014/15 Schleifen
PHP PHP ( „PHP Hypertext Preprocessor") ist eine Skriptsprache
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Datenbanken im Web 1.
Geschichte - Entstehung - Was ist PHP? Einordnung - Allgemeines
Variablen und Datentypen
Java Programme nur ein bisschen objektorientiert.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
PHP Schulung Beginner Newthinking Store GmbH Manuel Blechschmidt.
 Präsentation transkript:

Dynamische Webseiten mit PHP Oder: LAMP - The open way

Überblick Dynamische Webseiten Entwicklung von PHP PHP an Beispielen Anbindung an mySQL Literatur: Williams, Lane, Web database Applications with PHP and MySQL, O‘Reilly, 2002 Lerdorf, Tatroe, Programieren mit PHP, O‘Reilly, 2003

PHP Personal Homepage Tools, Rasmus Lerdorf Erste Version 1994 CGI Tools keine Scriptsprache PHP/FI 1996 Scriptsprache, Anbindung an Datenbanken PHP Version 3 1998 Open Source, Suraski, Gutmans PHP Version 4 2000 Redesign, Zend

Verbreitung Neben ASP verbreitetste Web-Scripting-Umgebung LAMP (Linux, Apache, mySQL, PHP): freie Alternative zu M$

dynamische Webseiten Programm erzeugt HTML HTML enthält Programm public class myServlet extends HttpServlet { protected void doGet(...) { response.setContentType( "text/html"); java.io.PrintWriter out = response.getWriter(); out.println("<HTML>“); ... out.println(“Hallo"); out.println("</HTML>“); } <HTML> ... <?php echo “Hallo"; ?> </HTML> verschiedene Implementierungen: PHP (C-ähnlich) JSP (JAVA) ASP (Visual Basic (und andere) usw.

Einbetten von Code <HTML> ... <?php // XML-Stil echo “Hallo"; ?> <? /* SGML (PI) Stil */ <% # ASP Stil %> <script language=“php“> // „korrektes“ HTML </script> </HTML>

Einschub: Programmierung Lösung eines (Anwendungs-) Problems durch Computer Formulierung des Problems (meist leider der Lösung) in für Computer verständlicher Form Hier: Algorithmen, d.h. Beschreibung der Lösung durch Abfolge von einzelnen Schritten

Algorithmus <Schritt 1> <Schritt 2> <Schritt 3> usw. Folge von Anweisungen, Beispiel: echo “Hallo“; Beispiel: Lösung(en) von ax**2+bx+c=0 Berechne b**2-4ac Berechne Lösung 1 Berechne Lösung 2 Problem: Ergebnis aus Schritt 1 wird später gebraucht Muss „gemerkt“ werden, wie ? --> Variable Variable = Platz (im Hauptspeicher) zur Speicherung von (Zwischen-) Ergebnissen

Variablen <?php $i = 0; // Variablen werden nicht deklariert echo $i; // Name beginnt mit $ echo $I; // undefiniert (Schreibweise), aber Echo $i; // funktioniert. $i= “Hallo"; // Datentyp implizit (Zuweisung) $i= ‘Hallo‘; // String durch ‘ oder “ terminiert $i=0.3E-4; // Integer, Fließkomma, String, $i=true; // Boolean $i=5; $j=2*$i; // j==10 $j=$j+1; // j==11 ?>

Soll ich oder soll ich nicht ... Berechne d=b**2-4ac Berechne w=wurzel(d) Berechne -b+w/2a Berechne -b-w/2a Problem: Was tun, wenn d<0 ? Fallunterscheidungen (Verzweigungen) Wenn (d > 0) dann Sonst ...

In PHP <? $a=1; // Initialisierung $b=2; $c=1; $d=b*b-4*a*c; if ($d > 0) { // Blöcke durch {} $w=sqrt($d); // Funktionen $x1=(-b+$w)/(2*a); // Reihenfolge --> klammern $x2=(-b-$w)/(2*a); } else {... ?>

Oops, I did it again.... Wiederholungen: <Schritt A> <Schritt B> ..... Besser: Solange (Bedingung erfuellt)

$i=0; while ($i < 10) { echo $i; $i = $i + 1; } // Zahlen von 0 bis 9, langweilig while ($1 < 10) { echo “PHP ist toll“; } // besser $zahl=4711; $i=2; $istPrim=true; while ($i < $zahl) { if (($zahl % $i) == 0) // % ist modulo-Division $istPrim =false; } // viel besser

Viele Daten ... Berechnung des Notendurchschnitts (Klausur) $Durchschnitt=($Note1+$Note2+...+$Note24)/24 Quatsch Mathematik: Vektor Programmiersprache: Array $Noten=array(1.0,1.8,2.7); $Durchschnitt=0.0; $i=0; While ($i < $Anzahl) { $Durchschnitt = $Durchschnitt + $Noten[i]; $i = $i + 1; } $Durchschnitt=$Durchschnitt/$Anzahl; Anm: Arrays erlauben zunaechst mal die Formulierung von Algorithmen unabhaengig von der Zahl der Elemente (durch Schleifen), wo die Daten herkommen (Initialisierung) ist zunaechst mal offen, meist aber gibt‘s die ja schon irgendwo (Datei, Datenbank usw), Dadurch werden Programme dann tatsaechlich unabhaengig von der Anzahl. Arrays sind die einfachste Art von Datenstruktur, fuer andere Aufgaben gibt’s andere (komplexere).

Kontrollstrukturen <?php if (1 == 1) // Syntax wie in JAVA //Schleifen: for, while, do ... while, foreach $namen=array(“max“,“hugo“,“gerd“); for($i=0;$i<count($namen);$i++) echo $namen[$i]; while ($i < 10) { echo $i; $i++; } // Durchlaufen von Arrays foreach($namen as $name) echo $name; ?>

Funktionen Warum alles selbst programmieren ? Mehrfach gebrauchte Funktionalitäten werden als „Funktion“ zur Verfügung gestellt, Beispiel Datum: <? $datum=getdate(); echo $datum[“year“]; // assoziatives Array ?> Eine Funktion liefert (meistens) einen Wert zurück, Kann Parameter haben (in Klammern, () wenn keine) Kann man auch selbst schreiben: function sagHallo() { echo “Hallo“; } Muss man aber nicht ...

Variablenfunktionen Wie andere Scriptsprachen auch ist PHP ziemlich flexibel, ein Beispiel: <?php function minus($i) { return $i-1; } function plus($i) { return $i+1; $op = “plus“; echo $op(3); ?>

Ein Beispiel <HTML> <body> <? for($i=0;$i<10;$i++) echo "Hello world<br>"; ?> </body> </HTML>

HTML-Formulare DoHelloForm.php <HTML> <body> <form action="DoHelloForm.php" method="post"> Wie oft ? <input type="text" name="WieOft"> <input type="submit"> </form> </body> </HTML> DoHelloForm.php <HTML> <body> <? for($i=0;$i<$WieOft;$i++) // $WieOft enthält Eingabe echo "Hello world<br>"; ?> </body> </HTML>

All in one <HTML> <body> <? if (isset($WieOft)) { for($i=0;$i<$WieOft;$i++) echo "Hello world<br>"; } else { ?> <form action="CompactHelloForm.php" method="post"> Wie oft ? <input type="text" name="WieOft"> <input type="submit"> </form> </body> </HTML>

Aufgaben Geben Sie "Es funktioniert" aus. Schreiben Sie mindestens zwei weitere (verschiedene) Programme, die "Es funktioniert" ausgeben. Programmieren Sie einen "Web-Taschenrechner", zunächst nur für Addition zweier Zahlen. Erweitern Sie den Rechner auf alle vier Grundrechenarten. Schreiben Sie ein Programm, das die Primzahlen kleiner 100 ausgibt. Erweitern Sie dieses Programm so, dass alle Primzahlen bis zu einer eingegebenen Obergrenze ausgegeben werden.

besser <HTML> <body> <form action="RealHelloForm.php" method="post"> Wie oft ? <input type="text" name="WieOft" <? if (isset($WieOft)) echo ' value="'.$WieOft.'"'?>> <input type="submit"> </form> <? if (isset($WieOft)) { for($i=0;$i<$WieOft;$i++) echo "Hello world<br>"; } ?> </body> </HTML>

Zugriff auf mySQL <? // Verbindung mit mysql_connect aufbauen $connection = mysql_connect("localhost","till","haenisch"); // Datenbank auswählen mysql_select_db("ba",$connection); // Abfrage ausführen $result = mysql_query("SELECT text from data",$connection); // Resultset durchgehen while ($row = mysql_fetch_row($result)) { // $row ist ein Array mit den Inhalten der Attribute echo $row[0]; echo "<br>"; } // Verbindung wieder schließen mysql_close($connection); ?>

alternativ sieht schon ziemlich ähnlich wie ASP aus, oder ? ... $result = mysql_query("SELECT text from data",$connection); // Resultset durchgehen while ($row = mysql_fetch_array($result)) { // $row ist jetzt ein assoziatives Array echo $row["text"]; echo "<br>"; } // Insert geht übrigens genauso mysql_query(„INSERT INTO data(text) values('Hallo'); sieht schon ziemlich ähnlich wie ASP aus, oder ?

Cookies Dazu braucht man also Cookies ... <? if (!isset($count)) // unser Cookie { $count=0; } else $count++; // Cookies müssen gesetzt werden, bevor html ausgegeben wird setcookie("count",$count); ?> <html> <body> Hallo zum <?=$count?> ten Mal. </body> </html> Dazu braucht man also Cookies ... (eins pro Variable --> umständlich, Typ != String ??)

Sessions Ein Cookie pro Session (alternativ URL rewriting) <? session_start(); if (!session_is_registered("count")) { session_register("count"); $count=0; } else $count++; ?> <html> <body> Hallo zum <?=$count?> ten Mal. </body> </html> Ein Cookie pro Session (alternativ URL rewriting) Beenden mit session_destroy(), z.B. beim logout