• XAMPP IDEXAMPP IDE

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

 

  • Strings und CoStrings und Co
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

 

  • foreach()foreach()
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!

 

  • DiashowDiashow
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 ;-)

 

  • KontaktverwaltungKontaktverwaltung
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

 

  • PhpMyAdmin DumpPhpMyAdmin Dump
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