An der VHS Braunschweig findet ab dem 27.06.2011 ein Bildungsurlaub zum Thema "Dynamische serverseitige Webseiten mit PHP & MySQL" statt. Anhand praktischer Beispiele wollen wir uns die aktuellen Techniken rund um PHP-Skripte und MySQL-Datenbanken erarbeiten. Besonderen Dank an dieser Stelle an den Bildungsträger VHS Braunschweig für den Support unserer schlanken Seminaregruppe.
Ort: Heydenstraße 2, VHS Braunschweig, Raum 2.03
Zeiten: Mo, 27.06. bis Fr, 01.07.11; jeweils von 08.30 - 16.00 Uhr
Wir wünschen - wie immer - viel Spaß und Erfolg bei unseren Seminaren.
Ihr Trainer Joe Brandes - hier folgt unser "Roter Faden" für die Woche ...
Montag, 27.06.2011, 08.30 - 16.00 Uhr
- Orientierungsphase, Wochenplanung
- Infosites VHS Braunschweig und Software-Portal Cobra-Shop
- Für PHP/MySQL benötigen wir echte Serverumgebung AMP
Apache - Webserver - www.apache.org,
MySQL - Datenbank - www.mysql.com,
PHP - serverseitige Skriptsprache - www.php.net - Erstausstattung Tools:
7-Zip - Packer/Entpacker für fast alle Formate
XAMPP - Server Entwicklungsumgebung von apachefriends.org für Windows
PSPAD - cleverer Codeeditor
portableapps.com - Infosite mit portablen Tools/Programmen bis hin zum kompletten Büro - XAMPP-Umgebung
entpackt, setup_xampp.bat durchgeführt, Verwaltung über xampp-control
c:\xampp\htdocs\uebungen\test.php - Dokumentstruktur für Hypertext-Dokument (Webdokumente)
eigene Unterordnerstruktur .\uebungen
http://localhost/uebungen/test.php - erstes Testen im Browser
Ordner und Dateien ohne Umlaute, Sonderzeichen und Leerzeichen
bereits Groß-/Kleinschreibung beachten (Empfehlung: alles klein) - Erste Skripts:
phpinfo(), Variablen mit $ am Anfang (Groß-/Kleinschreibung),
Ausdrücke ("Anweisungen") sauber mit ; abschließen - Kommentare in PHP
mehrzeilig mit /* ... */
einzeilig mit // - Online/Offline-Hilfe für PHP auf php.net
Download und Bereitstellung einer kommentierten Hilfe-Datei in PSPAD
Aufruf von Hilfe in Editor mit Alt+F1 - PHP-Versionen
veraltet / möglichst vermeiden: 3.x / 4.x
Status: Versionen 5.2.x bei aktuellen Hostern,
Entwickeln mit 5.3.x um vorbereitet und sicher zu sein für 6.0
PHP-Projekte (CMS / Blogs) verlangen oft spezielle Versionen!
phpinfo() zeigt detaillierte Infos zum eingesetzten PHP - Strings (Zeichenketten) mit einfachen und doppelten Anführungszeichen
Hinweis: PHP-Parser schaut in die "doppelten" Strings hinein und erkennt Variablen und Formatierungszeichen - Zahlenwerte
bitte mit Punkt als Dezimaltrennzeichen vereinbaren
Dienstag, 28.06.2011, 08.30 - 16.00 Uhr
- Rekapitulation, Lösung TN-Fragen und Problemchen, Bereitstellung der Serverumgebung
- Stichworte zur Variblenverwaltung:
Datentypen (integer, double, string)
Zuweisungen durch Wert (by value) und durch Referenz (by reference); Idee hierzu: Variablen zeigen auf Speicherbereiche mit Inhalten
Konstanten müssen über define() definiert werden (immer alles groß schreiben) - Vordefinierte Konstanten und Variablen:
PHP_VERSION; PHP_OS, ...
aus $SERVER_NAME wurde mit aktuellen PHP-Versionen $_SERVER['SERVER_NAME']
$_SERVER ist globales Array (Superglobals: s.a. $_GET, $_POST, ...) - Arrays: nummerische und assoziative Array
manuelle Zuordnung, array(),
mehrdimensionale Arrays (Praktische Übung mit "Mitgliederverwaltung")
Ausgaben durch klassische while-Schleifen oder besser durch
foreach ($array as $key=>$elem) {... Anweisungen ...} (verfügbar ab PHP 4) - Array-Funktionen
in_array(), array_keys(), compact(), ... - String-Funktionen
explode, implode (zerlegen / zusammensetzen von Strings)
substr_replace, substr, ...
diese Funktionen werden unsere "echten Websites" erzeugen / modellieren - weitere Funktionen
addslashes, stripslashes (Zusammenhang mit Datenbanken, spezielle Sequenzen/Anführungszeichen müssen sauber behandelt werden, da es sonst zu Missverständnissen mit der DB kommen kann)
rawurlencode, get_html_tags
htmlspecialchars (wandelt alle HTML-Skript-Codes in HTML-Zeichen um - wichtig für Sicherheit!) - SelfPHP - Online-Portal (nachgeahmt zu SelfHTML Original entwickelt von Stefan Münz)
zum Selbstlernen und Nachschlagen
Download aller Infos möglich!
Mittwoch, 29.06.2011, 08.30 - 16.00 Uhr
- Rekapitulation und TN-Fragen
Hinweis: Skriptsammlungen auf selfphp.de oder hotscripts.com - Formulartechnik mit post und get
HTML-Tag <form> deklariert Aktionskript (action="mache.php") und Methode (method="post" oder = "get")
die Eingabefelder erhalten über name="var_name" gültige PHP-Variablen
saubere Ansprache der Variablen über Superglobale Array ($_POST['var_name'] bzw. $_GET)
POST überträgt unsichtbar und "sicher"
GET überträgt offen in der URL, als Link speicherbar, kleine Datenmengen!
Beispiel für URL: http://localhost/uebungen/action_get.php?name=Dozent&alter=20
Hinweis: so funktioneren dann auch die dynamischen Webprojekte:
http://www.breakpoint-hannover.de/index.php?option=com_content&view=article&id=117&Itemid=67 - Dateien handeln (lesen von / schreiben in Textdokumente)
es werden Handle (Zugriffe) auf Dateien verarbeitet
Beispielbefehle: fopen, fgets, fwrite, fclose
Unterschiedliche Handle-Methoden beim fopen: w, a, a+, ...
Hinweis: Schließen von Dateien wichtig! - Bildergalerie mit PHP-Skript - unsere erste dynamische Website!
Quelle: Internet Professionell 08/2003 (Mark Lubkowitz)
Umsetzung in CSV: Comma Separated Values (Wikipedia)
Lösung für funktionierende Aufruf durch Analyse des Hauptskripts:
Skriptabarbeitung wenn gleichzeitig erfüllt (&&)
- per GET wurde Variable fn übergeben
- es existiert Datei mit dem Namen, der per GET in fn= übergeben worden ist
weitere Analyse des Hauptskripts diashow.php (Zeile für Zeile!) - Grundprinzip dynamische Websites
(X)HTML/CSS-Template mit Platzhaltern für dynamische Inhalte erzeugen
Template wird in String-Variable (oder Array) eingelesen
Skript erstellt/berechnet "Füllungen" für dynamische Bereiche
Ersetzen der Platzhalter (z.B. str_replace) in Ausgabestring (oder Array)
Ausgabe an Browser - fertig! - Lesestoff:
Mark Lubkowitz, "Webseiten programmieren und gestalten: ...", Galileo Verlag, aktuell vergriffen, Neuauflage?
Stefan Münz, "Webseiten professionell gestalten", Vorgängerauflage freier Download (bitte im Netz suchen ;-)
Galileo Verlag Rubrk PHP, diverse Autoren, guter Verlag und OPENBOOKS!
Franzis Verlag, Blaue Reihe, günstige Paperbacks guter Autoren (z.B. Kannengiesser s. selfphp.de)
Christian Wenz, Tobias Hauser, "PHP 5.3 Dynamische Websites professionell programmieren", Addison-Wesley, 2010 - Erste Überlegungen und Einsatz von MySQL-DB (phpMyAdmin)
Hierarchie: DB-Server -> Datenbanken -> Tabellen
klassische Nutzung über MySQL-Client (Befehlszeilentool mysql) - besser PhpMyAdmin ;-)
Donnerstag, 30.06.2011, 08.30 - 16.00 Uhr
- Rekapitulation und TN-Fragen
- PhpDia-Show mit MySQL umsetzen, Einführung in PhpMyAdmin
Datenbank und Tabellen erstellt und mit Daten gefüttert
Analyse der notwendigen Skripte
Datenbank-Konnekt-Daten in externer Datei config.inc.php (include) - Mit Datenbank-/Tabellen arbeiten: (hier prozedural - s. u. objektorientiert)
- mysql_connect($host, $user, $password) - Datenbank konnektieren
- mysql_select_db($database) - Datenbank auswählen
- mysql_query - Operationen mit DB/Tabellen/Daten
- weitere mysql-Kommandos PHP (siehe PHP-Manual) - OOP (Beispielskripte und Selfphp Praxisbuch)
einfache einführende Beispiele für Objektorientierte Programmierung mit PHP
siehe hierzu Kapitel aus selfphp-Praxisbuch
Konstruktor mit __construct(), Vererbungen (extends, Eltern- und Kindklassen)
Konstruktor wird automatisch bei Erzeugung eines neuen Objekts ausgeführt
Sichtbarkeit für Eigenschaften/Methoden mit private, protected, public
$this-> weist auf "eigene Klasse",
Nutzung von OOP für Datenbanken: (z.B. mysqli - mysql improved)
$db = new mysqli($host, $user, $password)
$db->mysql_db($dbname) - Beispiel OOP mit PHP-Grafikbibliothek GD
und ein PHP-Menü, dass ein bildhaftes Menü aus einer CSV-Datei erstellt - Datenbankpraxis: (Christian Wenz, Internet Pro 2006, aktuelles PHP 5.3 Profibuch)
Kontaktverwaltung zeigt die vier Grundtechniken von PHP-MySQL-Zugriffen:
Datensätze auslesen (SELECT), aktualisieren (UPDATE), erzeugen (INSERT) und löschen (DELETE)
Datenbank kontakte über phpmyadmin anlegen,
Import von "CREATE TABLE kontakt ..." über Datei kontakte.sql
Freitag, 01.07.2011, 08.30 - 16.00 Uhr
- TN-Frage: Praxis mit FTP (Filezilla als FTP-Client auf diversen Betriebssystemen)
- weitere Literatur:
Charles Wyke-Smith, Addison-Wesley, "Codin for the web" - leider vergriffen
Herdt-Skripte (Verlag für Seminargestützte Lehrgangssystemen)
Web Developer (bis vor kurzem PHP Journal), monatliche Fachzeitschrift
Internet Magazin (monatliche Fachzeitschrift) - Fortsetzung Kontaktverwaltung
Skripte analysieren - kennenlernen, speziell: Skript loeschen
Ablaufdiagramm für loeschen.php (Nassi-Shneiderman-Diagramm)
Verschachtelung mit Hilfe von Ausnahmebehandlung (try ... catch) - Backup & Restore (Sichern und Wiederherstellen PHP/MySQL-Projekte)
PHP + MySQL Projekte bestehen aus zwei Daten-"Arten":
1) Datei-/Ordner-Struktur Webserver (Sicherung über FTP)
2) Datenbank-/Tabellen (Sicherung über Dumps) - Datenbanken / Tabellen sichern und wiederherstellen
durch Exportieren und Importieren mittels PhpMyAdmin werden sogenannte "DB-Dumps" erstellt
Dumps lassen sich automatisch zippen bei Import/Export
PhpMyAdmin für OnlineSeiten wird vom Hoster bereitgestellt!
Tipp: MySQLDumper - Skriptsammlung für Lösung von Laufzeitproblemen und MB-Beschränkungen für Up-/Downloads von Dumps - Normalformen für Datenbanken
Hr. Kofler erklärt uns die DB-Tabellen! - Konfigurationsdateien
Apache-Webserver (httpd.conf)
Hinweis auf Portnummer: Listen 80
XAMPP: c:\xampp\apache\conf\httpd.conf
PHP-Konfiguration (php.ini - zuständige php.ini über phpinfo() ermitteln!)
Hinweis auf Einträge für max_execution_time und post_max_size (s. a. mysqldumper.de)
XAMPP: c:\xampp\php.ini
und MySQL-DB-Server (aktuell: my.ini; alt / vormals Windows my.cnf)
XAMPP: c:\mysql\bin\my.ini - Cookies und Sessions
Cookies: Client-seitige textorientierte Infos, je nach Browser unterschiedlich verwaltet
FF: über Einstellungen - Datenschutz - Cookies
IE: auf Festplatte c:\Dokumente und Einstellungen\username\cookies (WinXP)
c:\Benutzer\username\cookies (Win7)
Befehl: setcookie()
Session: auf Server abgelegte textorientierte Infos,
Konfiguration über session.save_path (siehe phpinfo); bei XAMPP: c:\xampp\tmp
Befehle: session_start(), session_init(), session_destroy() - Bereitstellung der Dozenten-Trainingsunterlagen und -Skripte:
- Letzte Fragen / Teilnehmerbescheinigungen
Auch von dieser Stelle nochmals schönen Dank für Ihr freundliches Feedback zu unserem "dynamischen" Wochenseminar ;-)
Ihr Trainer Joe Brandes