Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dynamische Webseiten mit PHP

Ähnliche Präsentationen


Präsentation zum Thema: "Dynamische Webseiten mit PHP"—  Präsentation transkript:

1 Dynamische Webseiten mit PHP
Oder: LAMP - The open way

2 Ü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

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

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

5 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.

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

7 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

8 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

9 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 ?>

10 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 ...

11 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 {... ?>

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

13 $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

14 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).

15 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; ?>

16 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 ...

17 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); ?>

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

19 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>

20 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>

21 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.

22 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>

23 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); ?>

24 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 ?

25 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 ??)

26 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


Herunterladen ppt "Dynamische Webseiten mit PHP"

Ähnliche Präsentationen


Google-Anzeigen