Datenanbindung in Web-Applikationen

Slides:



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

Semesterarbeit von Dieter Lorenz, Sebastian Galenski, Stephan Bury
Apache - PHP - MySQL Apache-PHP-MySQL.
Entwicklung UnivIS-Anbindung auf Basis von PHP und DOM-XML
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
2. DB-API: Programmierschnittstellen zu Datenbanken
Zusammenfassung der Vorwoche
Kurze Einführung in ASP
Datenbankzugriff im WWW (Kommerzielle Systeme)
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
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.
Dynamische Webseiten mit PHP
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Hassan Bidani Jallal Alami Rahmouni FH Wiesbaden
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
JDBC EDV JDBC.
Einführung in die Programmierung Datensammlung
Einführung MySQL mit PHP
Einführung und Überblick
Seite Common Gateway Interface. Konzepte. Übersicht 1Einleitung 2Was ist CGI? 3Wozu wird CGI verwendet? 4Geschichtlicher Überblick 5Grundvoraussetzungen.
JDBC: JAVA Database Connectivity
Jetzt lernen wir.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
... und alles was dazugehört
Welche Funktion hat die php.ini? -Beinhaltet wichtige Einstellungen für PHP. Genannt seien hier u.a. der Speicherort von Cookies, Parameter der Kompilierung,
Einführung Servlets/JSPs
Internet-Datenbanken und ASP Eine Einführung von J.Sommer & A.Vortisch.
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Wir bauen uns eine Webapplikation!
Learning By Doing Thema 1: Dynamische Webseiten und Online Datenbanken (Jarka Arnold) Thema 2: Simulationen, Sound, Schnittstellen (Aegidius Plüss) Thema.
Seminar Internet - Technologie
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Basiswissen für Partner und interessierte Kunden Technologie.
PHP und MYSQL am Organisatorisches Der komplette Kurs im Schnelldurchgang Bewertung von wichtig und unwichtig Historisch Kulturwissenschaftliche.
Dynamische Webseiten mit PHP [und Python]
Vergleich verschiedener Konzepte für das Software Engineering Praktikum.
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
CGI (Common Gateway Interface)
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
PHP Basic.
Oliver Spritzendorfer Thomas Fekete
Dynamische Webseiten-Generierung
Datenanbindung in Webapplikationen
SQLite und XML in PHP 5.
Einführung in PHP.
Einführung in PHP 5.
Webseiten mit PHP, SQL, XML und Webservices Anhand praktischer Beispiele.
Datenbankanbindung in Web-Applikationen
Mag. Andreas Starzer weloveIT – EDV Dienstleistungen
PHP: Operatoren und Kontrollstrukturen
Datenbankanbindung mit
Projekt Pokémon (CSL) Evaluation Technologien / Entwicklungsumgebungen Schlusspräsentation, Philip Iezzi, BDLI 2.
Structured Query Language
PHP PHP ( „PHP Hypertext Preprocessor") ist eine Skriptsprache
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
prof. dr. dieter steinmannfachhochschule trier © prof. dr. dieter steinmann Folie 1 vom Montag, 30. März 2015.
PHP:: Hypertext Preprocessor Einführung Praxis. PHP:: Hypertext Preprocessor Jetzt mal von der anderen Seite © All rights reversed2 PHP:: Hypertext Preprocessor.
Datenbanken im Web 1.
TypoScript.
(Syntax, Strings/Zahlen, Variablen, Arrays)
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Dynamische Webseiten CGI & co. © CGI - Lösung für alle ? Ja CGI kann alles tun, was man für Anwendungen braucht flexibel (beliebige.
 Präsentation transkript:

Datenanbindung in Web-Applikationen

Überblick In diesem Kapitel: Datenpersistenz allgemeine Aspekte der Datenpersistenz in Web-Applikationen Datenbankanbindung in serverseitigen Applikationen Web-Applikationstechnologien: PHP, ASP, ASP.NET, JSP Ausführliche Einführung in PHP Kurze Einführung in SQL als "Datenbanksprache"

Datenpersistenz Möglichkeiten der Datenpersistenz statische Inhalte z.B. in HTML, XML Dateien fixe Daten ohne (Vor-)verarbeitung dynamische Inhalte Aufbereitung in serverseitigen Programmen (z.B. PHP, ASP, CGI etc.) Filesystem: low-level direct I/O Datenbankmanagementsbstem (DBMS): high-level managed I/O

Datenpersistenz Abstraktionsebenen bei Datenzugriff DBMS als einzige Schicht Business Objects Layer Schicht zwischen Applikation und DBMS Ziel: Kapseln der Anwendungslogik in Business Objects Realisierung meist über Klassen-/Objektbibliotheken oder Services (z.B. Java Beans, COM-Objekte, ...) Transaction Processing Monitors (TPM) Verwaltung einkommender Client-Anfragen Bündelung gleichartiger Anfragen bei gleichzeitiger Sicherstellung der Datenintegrität wichtig für verteilte, stark vernetzte Architekturen

Web-Applikation mit Datenanbindung Datenbankanbindung in einer serverseitigen Web-Applikation Ablauf einer Webseitenabfrage 3. Aufruf von DB-Funktionen über DB-API Serverseitige Programme DBMS Daten- bank 4. Ausführen der Funktionen auf der DB 5. Ergebnis liefern 2. Request verarbeiten Webserver 6. Response vorbereiten Serverseite 1. HTTP-Request schicken Webclient (z.B. Browser) 7. HTTP-Response schicken 8. Response anzeigen

Technologien für Web-Applikationen Überblick Datenbankschnittstellen ODBC/JDBC Native einige serverseitige Scriptumgebungen: PHP ASP, ASP.NET JSP ColdFusion Vergleich

DB-Schnittstellen Open Database Connectivity (ODBC) Standardisiertes API für Datenbankzugriff DB-spezifische Implementierungen durch ODBC-Treiber SQL als Datenbankzugriffssprache Java Database Connectivity (JDBC) Java Klassenbibliothek von Sun Microsystems Native APIs Spezielle Application Programming Interfaces (API) für bestimmte Datenbanksysteme und/oder Sprachen zB. für OCI-Funktionen in PHP für Oracle8 Binaries: Treiber oder einkompilierte Libs (z.B. MbSQL)

PHP PHP: Hypertext Preprocessor Datenanbindung Scriptsprache Open Source Serverseitige Verarbeitung Eingebettet in HTML Datenanbindung Mit allen gängigen Datenbank-/Betriebssystem–/ Server-Konfigurationen möglich PHP/MySQL beliebteste Kombination Schnell, billig, unkompliziert

PHP Eingebettet in HTML Spezielle Tags zur Markierung von PHP-Abschnitten, u.a. <?php ... ?> ...jump in and out of "PHP mode" Bsp.: am Client: <html> <head><title>PHP Beispiel</title></head> <body> <?php echo "Guten Tag!"; ?> </body> </html> <html> <head><title>PHP Beispiel</title></head> <body> Guten Tag! </body> </html>

ASP, ASP.NET Active Server Pages ASP.NET Serverseitige Technologie von Microsoft Konzept ähnlich PHP Eingebettet in HTML Unterstützt verschiedene Scriptsprachen Plattform: WinNT, IIS Datenanbindung: funktioniert mit ODBC-fähigen DBs ASP.NET Trennung HTML und OO-Programmcode Ereignisorientiert, Objektorientiert, verwendet Teilmenge der .NET Klassenbibliothek Definiert HTML-Elemente als Objekte vorherrschende Sprachen: VB.NET, C# (früher: VBScript, JScript) Datenanbindung: Funktioniert derzeit mit SQL-Server und OLEDB

ASP, ASP.NET ASP: eingebettet in HTML, ablauforientiert <html> <head><title>ASP Beispiel</title></head> <body> <? Response.Write("Hi, I'm an ASP script!") ?> </body> </html>

ASP, ASP.NET ASP.NET: "hinter" HTML, ereignisorientiert test.aspx <%@ Page Language="vb" Codebehind="test.aspx.vb" Inherits="TestPage" %> <html> <body> <asp:Table id="Tbl" runat="server"></asp:Table> </body> </html> test.aspx.vb Public Class TestPage Inherits System.Web.UI.Page Private Sub Page_Load(…) Handles MyBase.Load Tbl.BorderColor = Color.Blue Tbl.Rows(1).Cells(3).Text = "Hello!" ... End Sub End Class

JSP JavaServer Pages Datenanbindung Ähnliches Konzept wie PHP/ASP Java-Code eingebettet in HTML Server erzeugt bei erstem Zugriff ausführbares Servlet: "Reiner" Java-Bytecode HTML-Ausgabe über Response-Objekt Datenanbindung Zugriff auf Datenbank über JDBC-Klassen Benötigt JDBC-Treiber für Datenbank <body> <% for (int i=0; i<11; i++) { %> <br> <%= i %> <% } %> </body>

Weitere... Common Gateway Interface (CGI) ColdFusion Weit verbreiteter serverseitiger Mechanismus Parameterübergabe an Programme (z.B. Formulareingaben) Dynamische Erzeugung von HTML-Seiten, ... Sprachen: PERL, C/C++, ... Datenbankanbindung möglich ColdFusion Kommerzielle Technologie (teuer) In HTML eingebettete Tags

Vergleich PHP ASP.NET JSP CGI Sprachen VB.NET, C# Java PERL, C/C++, ... DBS Alle native OLEDB, SQL-Server JDBC Alle Plattform WinNT, IIS Windows, Unix/Linux Kosten Freeware, Open Source Freeware X

Einführung in PHP

Allgemeines Allgemeines zu PHP steht für PHP Hypertext Preprocessor ist eine Skriptsprache wird eingebettet in HTML wird serverseitig verarbeitet wird seit 1994 entwickelt, ist sehr beliebt ist angelehnt an C, Java, und Perl besitzt APIs zu sehr vielen DBS PHP ist verfügt über umfangreiche Dokumentation: Homepage: http://www.php.net oder http://at.php.net Handbuch: http://at.php.net/manual

PHP-Code 4 verschiedene Möglichkeiten zur Einbettung in HTML (abhängig von der PHP-Konfiguration) <? … ?> <?php … ?> <script language="php"> … </script> <% … %> Kommentare innerhalb von PHP-Code <? # einzeiliger Kommentar // ebenfalls einzeiliger Kommentar /* mehrzeiliger Kommentar */ ?> Jede PHP-Anweisung muss mit Strichpunkt abgeschlossen werden! <? echo "Hallo"; ?>

Textausgabe Textausgabe mit print oder echo <? print "Hallo"; # Hallo ausgeben # echo macht automatisch newline ("\n") am Ende echo "Hallo"; # entspricht print "Hallo\n" # mehrzeilige Ausgabe print "Erste und zweite Zeile"; # das gleiche erreicht man mit print "Erste und\nzweite Zeile"; # beachte den Unterschied zum HTML-Zeilenumbruch print "Erste und<BR>zweite Zeile"; /* Anführungszeichen kann man auch verwenden, muss sie aber mit Backslash maskieren */ print "Michi sagte \"Hallo\"."; ?>

Variablen in PHP beginnen Variable mit einem Dollarzeichen ($), gefolgt vom Namen der Variablen. Name muss entweder mit Buchstaben oder Underscore (_) beginnen! <? # Deklaration und Initialisierung $var1 = "Hallo"; $var2 = "Schatzi"; # Ausgabe print $var1; # Hallo # Verkettung mit Punkt (.) print $var1 . " " . $var2; # Hallo Schatzi # alternativ auch innerhalb der print-Anweisung print "$var1, mein $var2"; # Hallo, mein Schatzi /* soll die Ausgabe "as is" erfolgen, dann muss einfaches Hochkomma verwendet werden */ print '$var1 ist eine Variable'; # $var1 ist eine Variable ?>

Variablen Es gibt verschiedene Typen von Variablen Skalare Typen String <? $s = "Hallo"; ?> Integer <? $i = 4711; ?> Float <? $f1 = -47.11; $f2 = 0.3; ?> Boolean <? $b = TRUE; $b = FALSE; ?> Zusammengesetzte Typen Arrays Objekte

Arrays Arrays bestehen aus mehreren indizierten Elementen. "Normale" Arrays haben einen numerischen Index beginnend bei Null. <? $arr = array(); # Initialisierung leer $arr = array(47, 11); # ... mit Vorbelegung $arr[] = 10; # anhängen mit automatischem Index $arr[3] = "hallo"; # hallo an Index 3 einfügen # Ausgabe eines Arrays mit print_r() print_r($arr); ?> Ergibt: Array ( [0] => 47 [1] => 11 [2] => 10 [3] => hallo )

Arrays Assoziative Arrays verwenden String- oder Integer-Indices, um beliebige Werte zu referenzieren: <? # Initialisierung $star = array( "Vorname" => "Clint", "Nachname" => "Eastwood", "Alter" => 74); # formattierte Ausgabe: echo $star["Vorname"] . " " . $star["Nachname"] . " ist " . $star["Alter"] . " Jahre alt."; ?> Ergibt: Clint Eastwood ist 74 Jahre alt.

Vordefinierte Variablen In PHP sind einige Variablen vordefiniert $PHP_SELF: Name des aktuellen Scripts $HTTP_POST_VARS: Alle Variablen, die über ein Formular geliefert werden (s. später) $HTTP_GET_VARS: Variablen, die über die URL geliefert werden, z.B. Aufruf von: http://www.xyz.com/test.php?x=10&y=Hallo print_r($HTTP_GET_VARS) liefert: Array ( [x] => 10 [y] => Hallo ) $HTTP_COOKIE_VARS: Cookie-Variablen $HTTP_SERVER_VARS: Server-Variablen, z.B. URL des Client Hinweis: Alle vordefinierten Variablen können angezeigt werden mit : <? phpinfo(); ?>

Operatoren Arithmetische Operatoren <? $a = 10; $b = 3; $a + $b; # Addition (13) $a - $b; # Subtraktion (7) $a * $b; # Multiplikation (30) $a / $b; # Division (3.33333) $a % $b; # Rest ermitteln (1) # Erhöhen um 1 $a++; # Post-Inkrement (NACH Auswertung der Anweisung) ++$a; # Prä-Inkrement (VOR Auswertung der Anweisung) # Verringern um 1 $a--; # Post-Dekrement (NACH Auswertung der Anweisung) --$a; # Prä-Dekrement (VOR Auswertung der Anweisung) ?>

Operatoren Logische Operatoren Vergleichsoperatoren <? <? # logisches UND $a and $b; $a && $b; # logisches ODER $a or $b; $a || $b; # exklusives ODER $a xor $b; # Negation !$a; ?> Vergleichsoperatoren <? $a == $b; # gleich? $a === $b; # ident? $a != $b; # ungleich? $a <> $b; # ungleich? $a !== $b; # unident? $a < $b; # kleiner? $a > $b; # grösser? # kleiner oder gleich? $a <= $b; # grösser oder gleich? $a >= $b; ?>

Operatoren Zuweisungsoperatoren <? $a = $b; # weist den Wert von $b auf $a zu # Kombination mit arithmetischen Operatoren: $a += $b; # entspricht $a = $a + $b # analog für andere arithmet. Operatoren: $a /= $b; $a *= $b; $a %= $b; ?> Es gibt noch viele weitere Operatoren, zu finden unter: http://at.php.net/manual/de/language.operators.php

Kontrollstrukturen Konstrollstrukturen sind wichtige Elemente einer Programmiersprache, da sie dynamische und variable Abläufe ermöglichen PHP kennt u.a. folgende Kontrollstrukturen: if, elseif, else while, do for, foreach break, continue switch include

if, elseif, else if, elseif, else werden für Abfrageverzweigungen verwendet if und elseif evaluieren beliebige nicht-leere Ausdrücke zu TRUE oder FALSE <? $a = 10; if ($a >= 0 && $a < 10) { /* wenn $a gleich 8 oder gleich 9, wird dieser Block ausgeführt */ } elseif ($a == "Text") { /* dieser Block wird ausgeführt, wenn $a grösser oder gleich 11. Nach der Prüfung wird $a inkrementiert */ else { /* dieser Block, falls alle die anderen Bedingungen nicht erfüllt sind */ ?>

switch wenn eine Variable auf mehrere Werte geprüft wird, so empfiehlt sich ein switch-Statement <? $a = 10; switch ($a) { case "Text": echo '$a ist Text'; break; case 10: echo '$a ist 10'; break; default: echo 'keines von beiden'; break; } ?> case: Prüfwert break: Tritt aus dem switch-Block aus default: Anweisung(en), die ausgeführt werden, falls kein case zutrifft.

while, do while-Schleifen werden solange durchlaufen, bis der Kontrollausdruck zu FALSE evaluiert <? $a = 0; while ($a < 10) { echo "Heute ist es sehr heiss!"; $a++; } ?>  Gibt 10 mal den Text aus # do..while Variante do { echo "Hoffentlich ist es morgen nicht so heiss!"; } while ($a < 10);  Gibt ebenfalls 10 mal den Text aus

for for-Schleifen sind etwas komplexer, da Sie 3 (optionale) Ausdrücke beinhalten: <? for ($i=0; $i<10; $i++) { echo "$i<br>"; } ?> Kontrollbedingung: Schleife bricht ab, wenn diese Bedingung zu FALSE evaluiert Initialisierung: wird bei Schleifeneintritt einmalig ausgeführt Anweisung, die am Ende jedes Durchlaufs ausgeführt wird

foreach foreach ist ein Konstrukt zum bequemen Durchlaufen von Arrays <? $arr = array("a", "b", "c"); # nur die Werte auslesen foreach ($arr as $v) { echo $v; } # Schlüssel und Werte auslesen foreach ($arr as $k => $v) { echo "Schlüssel $k hat Wert $v"; ?>

Weitere In Schleifen kann man die Abarbeitung beinflussen: break: Veranlasst den sofortigen Austritt aus der Schleife continue: erzwingt sofort den nächsten Durchlauf, ohne die restlichen Statements der Schleife auszuführen. Um andere Dateien einzubinden: <? include "andere.php"; include "http://www.google.at"; ?> Der Code einer eingebundenen Datei wird an die Stelle des include-Statements gesetzt

Funktionen Häufig benutzte Anweisungssequenzen kann man in eine Funktion verpacken: <? # berechne die Anzahl der Sekunden von $tage Tagen function errechneSekunden ($tage) { $sekunden = $tage * 24 * 60 * 60; return $sekunden; } $t = 5; $s = errechneSekunden($t); echo "$t Tage haben $s Sekunden"; ?> Eine Funktion hat also einen Namen, eine Liste von Parametern, und optional einen Rückgabewert

Web-Formulare Web-Formulare sind die beliebteste Form der Benutzerinteraktion auf Webseiten Die Frage ist: Wie kann man Benutzereingaben in PHP verarbeiten? Antwort: Die Benutzereingaben werden dem PHP-Skript als HTTP-Post- oder HTTP-Get-Variablen zur Verfügung gestellt (beide Mechanismen sind Teil des HTTP Protokolls) $HTTP_POST_VARS und $HTTP_GET_VARS sind vordefinierte assoziative Arrays! Detaillierte Infos zu allen PHP und Formularen: http://at.php.net/manual/de/tutorial.forms.php und http://at.php.net/manual/de/faq.html.php

Web-Formulare Formular definieren in der Datei form.php: <? if(isset($HTTP_POST_VARS["var"])) { echo "Sie haben {$HTTP_POST_VARS["var"]} eingegeben!"; exit; } ?> <form action="form.php" method="post"> <input type="text" name="var"> <input type="submit"> </form> Beim ersten Aufruf im Browser wird das Formular dargestellt: Nach drücken auf "Abschicken!" wird die Ausgabe dargestellt, weil isset(...) zu TRUE evaluiert

Exkurs: SQL Relationale Datenbanken bestehen u.a. aus Tabellen (Tables) Ein Datensatz ist eine Zeile einer Tabelle Die Spalten entsprechen den einzelnen Feldern (Attributen) eines Datensatzes Beispiel: Tabelle Mensen ID Name Note Kommentar 1 NIG Mensa 4 Übel 2 Katholische Mensa Sehr fein ...

Exkurs: SQL SQL bietet Möglichkeiten, Tabellen zu erzeugen, zu manipulieren, und abzufragen CREATE TABLE: Tabelle erzeugen SELECT: Inhalte auslesen UPDATE: Inhalte ändern DELETE: Inhalte löschen Wichtigstes Statement: SELECT SELECT Spalte(n) FROM Tabelle(n) WHERE Bedingung(en);

Exkurs: SQL Will man z.B. alle Mensennamen: SELECT Name FROM Mensen; Will man Name und Note der Mensa auslesen: SELECT Name, Note FROM Mensen; Bedingungen können angegeben werden: SELECT * FROM Mensen WHERE Note = 1; Neue Datensätze werden folgendermaßen hinzugefügt: INSERT INTO Mensen VALUES (3, 'TU', '2', 'Recht gut'); Ändern von Datensätzen UPDATE Mensen SET Note = 5 WHERE ID = 1;

Datenanbindung in PHP PHP bietet Schnittstellen (API) zu allen gängigen Datenbanksystemen und Standards Oracle, MySQL, dBase, PostgreSQL, Informix, Sybase, ODBC, uvm... Alle diese APIs bieten zumindest folgende Funktionalität: Verbindung zur DB herstellen und trennen Abfrage an die DB schicken (meist mehrstufig) Ergebnis durchlaufen  einzelne Datensätze auslesen Felder einzelner Datensätze auslesen Kann man mit einer DB-Schnittstelle umgehen, kann man mit allen umgehen!

Datenanbindung in PHP Ausgabe: NIG Mensa hat die Note 4. Beispiel Oracle8: OCI-Funktionen <? # Verbindung herstellen $c = OCILogon("user", "password"); # Abfrage erzeugen... $s = OCIParse($c, "SELECT Name, Note FROM Mensen"); # ...und ausführen OCIExecute($s); # Datensätze abarbeiten while(OCIFetch($s)) { # Felder auslesen $name = OCIResult($s, "NAME"); $note = OCIResult($s, "NOTE"); echo "$name hat die Note $note.<br>"; } # Verbindung trennen OCILogoff($c); ?> ID Name Note Kommentar 1 NIG Mensa 4 Übel 2 Katholische Mensa Sehr fein Ausgabe: NIG Mensa hat die Note 4. Katholische Mensa hat die Note 1.

PHP Links Homepage: http://www.php.net oder besser (weil schneller) http://at.php.net Ein einfaches Tutorial gibts dort auch: http://at.php.net/manual/de/tutorial.php Eine gute Einführung als PDF gibts von Team ThinkPHP: www.thinkphp.de