• XAMPP IDEXAMPP IDE

An der VHS Braunschweig findet ab dem 03.06.2013 ein Bildungsurlaub zum Thema "Dynamische serverseitige Webseiten mit PHP & MySQL" aus der Zertifikatsreiche "CMS Online Designer" statt. Anhand praktischer Beispiele wollen wir uns die aktuellen Techniken rund um PHP-Skripte und MySQL-Datenbanken erarbeiten.

Ort: Heydenstraße 2, VHS Braunschweig, Raum 2.03
Zeiten: Mo, 03.06. bis Fr, 07.06.13; jeweils von 08.30 - 16.00 Uhr
Prüfung: eine freiwillige Prüfung für das Modul II des "CMS Online Designer"-Zertifikats wurde besprochen und festgelegt auf ...
Termin: Mi., 26.06.2013, 17.00 Uhr Raum 2.03 (4 TN - Status Erstkorrektur: erledigt 01.07.2013)
Ich gratuliere allen TN an der Prüfung zum Bestehen! Ihr stolzer Trainer J. Brandes

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

 

Mo., 03.06.13

  • XAMPP 1.8.1XAMPP 1.8.1

Montag, 03.06.2013, 08.30 - 16.00 Uhr

  • Orientierungsphase, Teilnehmer-Themen, Pausenregelung/Seminarablauf
    Cobra-Shop: gesponserte SW für IT-TN bei VHS
  • Software- und Grundeinrichtung PCs
    Packer: 7-Zip als Tool zum Packen/Entpacken
    Browser: Mozilla Firefox, Chrome, Opera, Safari (IE-Alternativen und Developer-Tools)
    Editor: Notepad++, PsPad (multifunktionaler Editor - PlugIn-Übersicht und Downloads)
    Explorer konfigurieren (Win + E): Dateiendungen, versteckte und Systemdateienen einblenden
  • Client-Server-Prinzip für WWW
    WWW - World Wide Web Internet "Dienstleistung / Service / engl. Daemon - siehe angehängtes d bei httpd für Apache-SW"
    Web-Client: genannt Browser, die über ein Protokoll (http, https) vom Server Daten erfragen (request)
    Software: Microsoft Internet Explorer, Google Chrome, Mozilla Firefox, Apple Safari, Opera, ...
    Web-Server: "Dienstleister"-Software - Apache ("A Patchy Server" - historisches Wortspiel für alten NCSA Webserver, der durch "Flicken" verbessert und dann eigenständig entwickelt wurde)
    Alternative Software: IIS (Internet Information Server von Microsoft); nginx von Firma NGINX, in PHP 5.4 ist ein "Server" eingebaut (Link)!
    Zusammenspiel: "Kopiermaschine" - Client fragt nach Webdokument - Server bereitet Daten auf und kopiert an Client
  • AMP - Apache, MySQL, PHP
    notwendige dynamische Technikumgebung für serverseitige Skriptsprachen (Perl, PHP, ASP, JSP, Python, Ruby on Rails, ...); auf Linux-Systemen dann also LAMP und Windows als WAMP bezeichnet
    Anm.: rein statische Webseiten (HTML + CSS + JS) kämen testseitig auch ohne Server aus!
    Empfehlung: XAMPP  (Bitte nicht in Produktionsumgebungen, sondern nur zu Testzwecken einsetzen)
    in Seminar: aktuelle Version 1.8.1 mit Apache 2.4.3, MySQL 5.5.27, PHP 5.4.7, phpMyAdmin 3.5.2.2
    Anm.: die Prüfungsumgebungen des CMSOD laufen alle mit Version 1.7.4 (PHP 5.3)
  • XAMPP (Inbetriebnahme)
    XAMPP in C:\xampp\... entpacken - so sind keinerlei Konfigurationen vorzunehmen
    Hinweis: beim Entpacken mit 7-Zip nur Hauptverzeichnis C:\ angeben!
    bei abweichender "Installation" muss die setup_xampp.bat einmalig ausgeführt werden
    Start der Dienste Apache und MySQL über das XAMPP Control Center (xampp-control.exe)
    Meldungen der Windows 7 Firewall betreffen nur die Zugriffe vom Netz (außerhalb localhost)
  • Web-Dokumente-Ordner
    XAMPP-Verzeichnis: c:\xampp\htdocs (entspricht der Request-URL: http://localhost/)
    Übungsordner: C:\xampp\htdocs\test (entspricht http://localhost/test/)
    Wichtig: keine Umlaute, keine Sonderzeichen, Groß- und Kleinschreibung beachten (also Empfehlung: alles klein), keine Leerzeichen
    Bei Anfrage von Verzeichnissen gibt XAMPP ein Inhaltsverzeichnis (Index) zurück - das ist auf Produktionssystem nicht wünschenswert; ansonsten sind Standarddokumente mit interner Reihenfolge in Konfigurations des Webservers hinterlegt (z.B. index.php index.html index.htm index.php3 ...)
  • phpinfo() - (Link php.net)
    ein allererstes Testskript als Analyse-Skript  mit Aufruf von phpinfo() ohne Parameter
  • Kommentare in PHP
    Einzeilig mit //, mehrzeilig mit /* ... */, spezielle Kommentartechniken mit automatischen Dokumentationserstellungen (siehe phpDoc)
    Nutzen zum Auskommentieren von Zeilen - also Testzwecken - oder natürlich der Erläuterung von Code im Skript (wichtig für spätere Nachvollziehbarkeit und Analyse/Anpassung)
  • Notepad++ Tipps
    Cursor in PHP-Technikwort und Online-Hilfe mit Alt + F1 aufrufen
    Code-Completion (Codevervollständigung) mit Strg + Leertaste
    Zoomfaktor/Schriftanzeigengröße mittels Strg + Rollrad-Maus oder Strg + "+" (oder -) auf Nummernblock
    Für sauberes Syntax-Highlighting und Codecompletion benötigt Notepad++ Datei mit gespeichertem Dateiformat
    Über Kontextmenü auf PHP-Datei den Editor Notepad++ als Standardprog zum Öffnen eingestellt
  • Intermezzo:
    Zen-Coding
    (aktuell als Software Emmet) und
    Firebug: Erweiterung des Firefox mit AddOn
    Installation von Plugin Zen-Coding für Notepad++ (benötigt Python Unterstützung)
    erste Beispiele (ausführlichere Beispiele: Link, Link)
    html:5 (Strg+Alt+Enter) erzeugt komplettes HTML5-Gerüst
    html:xt - erzeugt XHTML 1.0 transitional
  • Mischung von HTML und PHP
    letztendlich wollen wir natürlich komplette Webseiten an den Client ausliefern - also benötigen wir HTML-Gerüste und bringen dort unsere PHP-Skriptzeilen unter; das werden wird aber nur erst mal ausprobieren und verstehen und dann wieder auf PHP konzentrieren
  • echo (Sprachkonstrukt zur Übergabe von Strings an Browser - Link php.net)
    Ausgabe von Text und Variablen (beginnen immer mit $)
    bei Verwendung von doppelten Anführungszeichen (double quotes) werden integrierte Variablen in der Ausgabe ausgewertet
    die einfachen Anführungszeichen (single quotes) erlauben die Verschachtelung mit doppelten Anführungszeichen (siehe HTML-Code class="top" oder ähnliche Syntax; außerdem kann man Texte/String über den Operator "." aneinderheften oder über Kommas einfach nacheinander aufzählen
  • vordefinierte PHP-Konstanten ("magische" PHP-Konstanten - Link php.net)
    __LINE__, __FILE__, PHP_VERSION, PHP_OS
  • $_SERVER[] (Link php.net)
    Array für die Nutzung von Server-Variablen wie HTTP_USER_AGENT, SERVER_NAME oder PHP_SELF
    Aufruf mittels $_SERVER['HTTP_USER_AGENT]
  • Arrays (erste Annäherung - Teil 01 - Funktion array Link php.net)
    2-dimensionale Tabellen mit Spalte für Index und Spalte für Inhalt/Wert,
    bei numerischen Arrays laufen die Indizes von 0, 1, 2, ...
    bei assoziativen Arrays (Hash) werden Begriffe/Bezeichner möglich,
    Definition von Array mit Hilfe von PHP-Aufruf array(...), Zuweisungen mittels "=>"
    Beispiel (assoz. A.):  $arr = array( "Nr" => 12345, "Name" => "Meier", ...)
    Beispiel (num. A.):  $arr2 = array( "Auto", "Bahn", "Fahrrad")

 

  • ArraysArrays
  • Code vs. BrowserCode vs. Browser
  • PHP-Editor NP++PHP-Editor NP++
  • XAMPP läuftXAMPP läuft

Simple Image Gallery Extended

Di., 04.06.13

  • ManualsManuals

Dienstag, 04.06.2013, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen (auch über den Tag verteilte Themen/Nachfragen)
    Themen: Wiederholung zu XAMPP und Hinweis auf apachefriends-Webportal mit mehr Infos und Darstellungen zu XAMPP (Link XAMPP Windows);
    Diskussion zu Einsatzgründen (Pros / Contras) von CMS-Systemen und die Eigenschaften von Web CMS;
    insbesondere: Trennung von Inhalt & Layout/Design gefordert (beispielhafte Website: www.csszengarden.com), Einschätzung zu Selfhtml-Website (Link) und Hinweis auf die Original-Bücher und Downloads von Stefan Münz (Website "Webkompetenz" von Stefan Münz)
    Wichtig: in unseren Beispielen häufig klassische/schnelle Formatanweisungen, die dann später mit CSS-Styles und CSS-Dateien umgesetzt werden müssen!
    Suchmaschinen: Fachbegriffe SEO (Search Engine Optimization - Suchmaschinenoptimierung), SEF (Search Engine Friendly - Suchmaschinenfreundliche Links: aus index.php?inhalt=impressum wird impressum.html); Alternative Suchmaschinen: Yahoo, BING, Altavista, Metager (Infoportal RRZN Hannover)
    Captcha: (Link Wikipedia) Ausnutzung von Formularen als "Spam-Schleuder" unterbinden, Beispielhafte Lösung/Empfehlung: reCAPTCHA (Link)
  • PHP-Hilfe nutzen
    Aufruf der Online-Hilfe von php.net mittels Cursor in PHP-Wort und Alt + F1
    Übung: Bereitstellung der PHP-Hilfe als CHM-Datei - wichtig: CHM-Dateien müssen seit Windows XP SP2 erst bei Kontextmenü "zugelassen" werden
    Link zu deutschen PHP-Dokus
  • Arrays (Teil 02)
    Funktionsbeispiele für Arrays: next, list
    Arrays mittels print_r oder auch var_dump mit pre-Tag ausgeben, damit sie besser lesbar werden.
    Ausgabe mit PHP-Befehl foreach (mehrdimensionale Arrays mittels Verschachtelungen von Arrays)
    // Ausgabe der Datensätze mit verschachtelten Arrays
    foreach($kontakt as $kk => $details) {
        foreach($details as $k => $elem) {
            echo $kk, ": ", $k, ": ", $elem, "
    "; } echo "
    "; }
  • String-Funktionen (Link php.net)
    addslashes, stripslashes - Anführungszeichen sequenzieren (sonst DB-Probleme möglich)
    explode, implode - Auseinanderbauen und zusammensetzen von Zeichenketten
    substring - Beispiel für Zeichenkettenmanipulierung (siehe auch morgen str_replace)
    print, printf, sprintf - Ausgabe formatierter, intelligenter Zeichenketten (Link sprintf php.net)
    $anzahl = 5;
    $ort    = 'Baum';
    $format = 'Es sind %d Affen auf dem %s';
    printf($format, $anzahl, $ort);
    

    htmlspecialchars - macht aus Tags - also spitzen Klammern die HTML-Sonderzeichen und "entschärft" somit Textketten, siehe später Formular-Behandlung
    rawurlencode - ersetzt in Strings für URLs die Leer- und Sonderzeichen
    get_meta_tags - liest META-Daten aus head von HTML-Dokumenten aus; das funktioniert auch mit kompletten URL zu Online-Resourcen
  • Formulare
    HTML-Tags: form (action, method), input (type, name), Methoden: POST vs. GET
    POST: Übergaben im Hintergrund (unsichtbar), kein Protokollieren im Webserver, größere Datenmengen (nur eigentliche beschränkt durch php-Konfiguration - siehe post_max_size)
    GET: Daten lassen sich als URL speichern (Bookmark, Link)
    seit PHP 5.3 keine übergebenen Variablen "wie selbstverständlich" (also global!) verfügbar
    es gibt bitte keine PHP-Konfiguration  register_globals = On  mehr!
    Übergabe der Variablen mittels $_GET['name'] bzw. $_POST['name'] (s.o. Superglobals)
    Speziell: Bereinigung von Eingaben mittels Funktion  htmlspecialchars; siehe auch Thema Captchas oben

 

  • SchleifenSchleifen
  • print_r und var_dumpprint_r und var_dump
  • htmlspecialcharshtmlspecialchars
  • Form action POSTForm action POST

Simple Image Gallery Extended

 

Mi., 05.06.13

  • if und Array $_POSTif und Array $_POST

Mittwoch, 05.06.2013, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
  • Wiederholende Übungen zu den folgenden Themen
    Arrays: verschachtelte Arrays definieren und auswerten; Ansprache der Werte über die Indizes: $staedte['Japan'][1] - auch an die Nutzung von print_r und var_dump zum analysieren denken     
    Formulare: sich selbst aufrufende Formulare; Nutzung von $PHP_SELF erzeugt Meldungen - also $_SERVER['PHP_SELF'] nutzen
  • Dateihandling
    File-Handle übernehmen mit fopen (Link php.net)und schließen mit fclose (zurückgeben/schließen bitte nicht vergessen!), Unterschiedliche Modi für den Dateizugriff (siehe fopen in Manual); weitere Funktionen:
    file (und wieder erhalten wir ein Array!), file_exists (prüft Existenz einer Datei - siehe auch unten Diashow)
    fgets (lässt sich automatisch mit while schleifen),
    dir (Nutzung einer Verzeichnisklasse in PHP - erster Hinweis auf OOP - Objektorientierte Programmierung mit Aufrufen wie $folder->read()  )
    Anm.: Dateibehandlung auf WAMP-System sehr wahrscheinlich abweichend von Hostern (Linux mit anderen Datei-/Ordnerberechtigungen und Benutzerkonzept)
  • Kontrollstrukturen (Link php.net)
    Nutzung von Verzweigungen mittels if (bzw. if ... then ... else), Schleifen mittels for und while
    Anm: Bedingungen mit > (größer), < (kleiner), <> (ungleich), == (gleich), === (identisch, gleiche Typen), ... (Link Vergleichsoperatoren php.net)
    Darstellung in Blockdiagramm nach Nassi-Shneiderman (Link Wikipedia); Verneinungen mit vorgestelltem Ausrufezeichen; Verknüpfung von mehreren Bedingungen mit && (beides muss gleichzeitig erfüllt sein - siehe Logische Operatoren Link php.net)
    Hinweis zu Seminar: wir nutzen die Strukturen ohne ausführliche Syntax und Detailerläuterungen - hierzu bitte selber jeweils experimentieren und die Darstellungen der Seminarwoche nachvollziehen. Das PHP-Manual bietet ebenfalls ausführliche Beispiele zu den weiteren wichtigen Kontrollstrukturen (Homework: switch - siehe meine Anmerkungen im Seminar zu tief verschachtelten if-Konstruktionen)
    Spezielles Konstrukt: die ('Es geht hier nicht weiter!'); // der Ausdruck beendet die Ausführung des Programms
  • Diashow I (dynamische Website  ohne DB-Anbindung)
    beispielhaftes Skript nach M. Lubkowitz aus der Internet Professional (2003)
    Grundidee: Skript diashow.php liest Steuerdatei (bayern.csv) und ein HTML-Template ein und berechnet und ersetzt Platzhalter im Template
    Übernahme der Steuerdaten für Diashow-Datei und Bildnummer mit GET-Technik: diashow.php?fn=bayern.csv&nr=3   
    genutzte Funktionen: file, implode, explode, list, str_replace
    Speziell: Kurzform für if-Struktur  $pic_nr = $_GET['nr'] ? $_GET['nr'] : 1;
    // Template laden
    $output_html = implode('',file('template.htm'));
        
    // CSV-Datei einlesen
    $pics = file($_GET['fn']);
        
    // Nummer des anzuzeigenden Bildes festlegen
    $pic_nr = $_GET['nr'] ? $_GET['nr'] : 1;
        
    // Bilddatensatz laden
    list($filename,$description) = explode(';',$pics[$pic_nr-1]);
    
    Codeschnippsel aus Diashow; der Skriptablauf wurde im Seminar ausgiebig analysiert
    diashow-analyse-600px
  • MySQL (Datenbankserver mysqld)
    SQL Structured Query Language (viele Dialekte aber gemeinsame Basis), Client-Server Prinzip; Client in Konsole (Eingabeaufforderung)  mysql  gezeigt, besser: Verwaltung mittels
    PhpMyAdmin - bereits in XAMPP unter localhost/phpmyadmin erreichbar (oder auch 127.0.0.1)
    Konfigurationsdatei MySQL Server: my.ini (bzw. my.conf)
    Hierarchie: Datenbankserver (localhost) - Datenbanken (cdcol) - Tabellen (cds) - Felder (titel, interpret, jahr, id - mit Datensätzen/Records)
    Verbindung zu Datenbankserver: Hostname, Benutzername, Passwort - dann Datenbank wählen
    Hinweis auf Anzeige von SQL-Kommandos in der Oberfläche für die ausgeführten Aktionen - so lässt sich viel Wissenswertes zur Abfragesprache SQL lernen und aufschnappen; Änderung des Anzeigedesigns; schnelle Navigation über Breadcrumb-Leiste oben

 

  • Modi für fopenModi für fopen
  • fopen - fclosefopen - fclose
  • $_SERVER['SELF_PHP']$_SERVER['SELF_PHP']
  • str_replacestr_replace

Simple Image Gallery Extended

 

Do., 06.06.13

  • phpMyAdminphpMyAdmin

Donnerstag, 06.06.2013 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
  • Praxis mit PhpMyAdmin (Online-Portal)
    Umsetzung der Diashow nach "Lubkowitz" in MySQL-Technik (Buch: Webseiten programmieren und gestalten - Das umfassende Handbuch - AmazonLink)
    Analyse der zwei Skripte: diashow.php, config.inc.php (Konfigurationsdaten passend setzen und DB-Name bestimmen)
    Datenbank diashow anlegen, Tabellen ds_pictures und ds_categories anlegen und Felder mit Eigenschaften ausstatten nach Vorgaben
    Nutzung von Prefix "ds_" (für Diashow) um bei weiteren Tabellen anderer DB-Projekte in derselben DB eine saubere Auflistung und Erkennung zu gewährleisten
    Datentypen (Link dev.mysql.com Online Handbuch zu 5.1): int (integer), varchar (variable Zeichen), longblob (Binäre Objekt - z.B. Bilder), text (wie memo bei Access), datetime (Datum/Uhrzeit) , Primary Key (PK - Primärschlüssel), AutoIncrement (AI - automatisch hochzählendes Feld)
    Indizes: ein Feld indizieren beauftragt die DB eine sortierten Zugriff auf die Tabelle vorzuhalten, damit geht das Suchen und sortierte Ausgeben schneller - ist aber auch immer ein Aufwand und benötigt Speicher
    Tabellenformate (Engines) von aktuellen MySQL-DB-Servern: MyISAM, InnoDB (letztere mit DB-Techniken wie Transactions oder Referentieller Integrität; Hinweis bei manchen CMS gezeigt)
    Dateien der MySQL-Datenbanken (bei XAMPP Windows): C:\xampp\mysql\data\diashow
  • Prinzip Dynamische Webseite
    nach Vorbild "Diashows" - Kurzform: dynamische Positionen berechnen und in HTML-Template ersetzen lassen
    Beispielprogrammierung verteilt; kleine Fingerübung (Programmierung) aber voll funktionsfähige Prinzipdarstellung einer Dynamischen Webseitenauslieferung (inklusive Navigation und Auswahl aus zwei HTML/CSS-Templates) mittels PHP und Beiträgen/Artikeln in Unterordnerstruktur
  • Diashow II (die mysql-Version)
    Umsetzung und Endung der Konfigurationsdatei als .php-Datei beachten, sonst rutschen die Zugangsdaten zum Server in den Browser (Body oder HTML-Code)
    Prozedurale Zugriffe auf die Datenbank, d.h. wir rufen für jede Aktion eine eigene PHP-MySQL-Funktion auf:
    mysql_connect($host, $uid, $pwd)  // Verbindung zum DB-Server
    mysql_select_db($db)  // Auswahl (use) Datenbank
    mysql_query($sql)  // Abfrage an DB senden
    
    Analyse der Skriptzeilen mit Break-Point (Unterbrechungen im Skriptablauf mittels einfacher echo/print_r/die PHP-Zeilen
    Im Diashow-Skript wird dann Funktion mysql_fetch_object genutzt - eine gute Darstellung mit prozeduraler MySQL Technik (ab morgen dann objektorientierte "verbesserte" MySQLI Technik) finden Sie in der PHP-Hilfe unter diesem Link
  • SQL (Structured Query Language - Online Dokumentation zu MySQL unter dev.mysql.com/doc)
    In unseren PHP Skripten erstellen wir meist dynamische Strings, die dann mittels geeigneter PHP-MySQL-Aufrufe oder PHP-MySQLI-Objekte (siehe morgen) mit der DB genutzt werden; die vier wichtigen Grundfähigkeiten: Datensätze lesen, ändern, löschen, erstellen
    verschiedene einfache Beispiele direkt in phpMyAdmin (über Schaltfläche SQL) direkt eingegeben und ausprobiert (Hinweis: bitte bei richtiger DB sein!)
    Analyse der wichtigsten SQL-Kommandos aus der Diashow (morgen dann mehr...)
    SELECT p.title, p.comment, c.name
        FROM ds_pictures p, ds_categories c
        WHERE (p.category = 1) and (p.category = c.id)
    
    Experimente ergeben wichtige Bedingung mit WHERE bestehend aus p.category=1 (bitte die Show mit der Nummer 1 auslesen) und gleichzeitig auch die Bedingung, dass die Ergebnisse in der Tabelle ds_categories im Feld "id" auch diese Nummer haben müssen; sonst ergeben sich  "mutierte" Ergebnisse (Beispiel: in ds_pictures entsprechen 2 Datensätze der Bedingung category=1; aber wir haben drei Kategorien in Tabelle ds_categories - dann hätten wir 2 mal 3 gleich 6 Datensätze in unserem Ergebnis -> wir brauchen die Verbindung mit der Bedingung p.category=c.id !
    diashow-600px
  • Cookies und Sessions (Link Cookies - Link Sessions auf php.net Online-Doku)
    Cookies: Server legen Text/Infoseiten auf Client-Seite ab; Einsatzbeispiel: Infos zu Warenkorb, Merkzettel & Co; ID einer Session hinterlegen, Verwaltung mittels Superglobal $_COOKIE, Befehl (Link php.net): setcookie(); jeder Browser legt eigene Cookie-Verwaltung an; Beim Firefox erhalten Sie aktuell über die Einstellungen - Register Datenschutz - Link Cookies eine Übersicht, beim MS Internet Explorer findet man die Cookie-Textdateien in der Ordnerstruktur c:\Users\username\AppData\Roaming\Microsoft\Windows\Cookies
    Sessions werden serverseitig verwaltet (siehe Infos bei phpinfo - session; Anmerkungen zu session.name - PHPSESSID bitte nicht verwechseln mit einer Session-ID), XAMPP--Session-Speicher-Pfad (session.save_path) auf C:\xampp\tmp, Verwaltung mittels Superglobal $_SESSION, Befehle: session_start(), session_destroy, $id = session_id()
  • Verteilung von Ausdrucken zu Übungen und Techniken

 

  • Firefox CookiesFirefox Cookies
  • mutierte Ergebnissemutierte Ergebnisse
  • SessionsSessions
  • SQL TestingSQL Testing

Simple Image Gallery Extended

Fr., 07.06.13

  • Kontakte verwaltenKontakte verwalten

Freitag, 07.06.2013, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
    Prüfung (Termin festgelegt: Mi., 26.06.2013, 17.00 Uhr Raum 2.03 - Musterprüfung s. u.)
  • Schwerpunkt: OOP (Objektorientierte Programmierung mit Anwendungsbeispiel "Kontakteverwaltung" nach C. Wenz)
    erste Hinführung mittels Grafikausgaben (Code-Änderungen für __contstruct)
    im Gegensatz zu prozeduralen Lösungen (einzelne Funktionen) hier effektivere Programmierungen und Nutzungen (z. B. Vererbungen) von Code, Eingeführt mit PHP 4 und verbessert/verändert mit PHP 5.x
    Begriffe: new, class, extends, static, public, private, protected, function
    Magische Methoden (Link php.net Hilfe - spezielle Bezeichner) __construct für Kontstruktor und __destruct für Destruktor)
    Vererbung von Eigenschaften (Variablen) und Methoden (s. Funktionen) mittels extends (Elternklasse parent), Direktaufrufe mit ::, Erzeugen neuer Instanzen mittels new, eigene Klasse mit $this, Aufruf von Eigenschaften/Methoden mit ->
    oop-600px
    Empfehlungen: Handbuch PHP Kapitel Sprachreferenz - Klassen und Objekte (Link php.net) und bei Online/Offline-Portal selfphp.de Praxisbuch Kap. OOP
  • Kontakteverwaltung (Dyn. Anbindung MySQL-DB mittels PHP-OOP-Technik mysqli; C. Wenz Artikel in Internet Magazin 2008)
    Einführung in ein Standard-Beispiel (Best Practise) einer PHP/OOP/mysqli-Lösung, Bereitstellung der Grundskripte und Erläuterung der Bereitstellung der notwendigen DB und Tabelle (SQL-Dump-Import der Tabelle kontakt)
    Daten auslesen: index.php (SQL: select)
    Daten ändern: bearbeiten.php (SQL: update)
    OOP/mysqli-Technik (prepared Statements): $sql=db->prepare, $sql->bind_param, $sql->execute
    Daten einfügen: neu.php (SQL: insert)
    Daten löschen: loeschen.php (SQL: delete); mit Abfrage zur Sicherung des Löschvorgangs
    Fehlerbehandlung/Ausgaben: $db->error, Ausnahmebahandlung mit try und catch (engl.: Exceptions)
    Import des Tabellen-Dumps kontakte.sql in die manuell erstellte DB kontakte
    Empfehlung: Analyse der Skripte und Verinnerlichung der "Best Practises" (php.net - Hilfe zu prepare und Co)
    Tipp: für das Verständnis erzeugter Objekte im Code einfach mal zwischendurch die Objekte mittels print_r (oder var_dump) in einem pre-Tag ausgeben und so analysieren, ggf. plus einem die("Testausgabe");
    Hinweis auf Online-Portal mit Einführungen und Infos (Selbstlernportal www.selfphp.de mit Praxisbuch)
    Programmierung der Beispielanwendung Kontakteverwaltung mit der API MySQLi stattMySQL; wichtig da ext/mysql ab PHP 5.5 deprecated; beachten das "i" macht den Unterschied (i wie improved - verbessert)
  • MySQL Dumps (Backups für Datenbanken / Tabellen - Importieren / Exportieren)
    mit PhpMyAdmin DBs /Tabellen per Exportieren und Importieren Dateien mit und ohne Kompression (sql, zip, bz2),
    Hierarchie beachten: Datenbankserver - Datenbank - Tabellen, Optionen beim Export, SQL-Export-Datei analysiert und SQL-Befehle analysiert: create database, create table, insert into ...
    Anm.: beachten Sie, dass die meisten Hoster nicht das Zurücksichern (importieren) ganzer Datenbanken erlauben, dann sollten Sie auf Tabellen-Ebene "dumpen"
    Probleme: Beschränkung der Dump-Größe (upload_max_size, post_max_size), Laufzeit der PHP-Skripte (max_execution_time) für das Komprimieren und Dumpen Lösung: z.B. Skriptsammlung von www.mysqldumper.de
  • Kalender (Übung)
    Datum- und Uhrzeitfunktionen: mktime, strftime, date
    Setzen der Länderumgebung mittels   setlocale(LC_ALL, "deu");  Alternativ: ita, fra, ... (Anm.: auf Windows anders als auf Linux-Systemen: Codes de_DE, en_US)
    Übung/Hausaufgab:  mit Schleife (Kontrollstruktur)  "for" die Wiederholungen der Ausgabenkonstrukte für Monate vereinfachen auf eine Schleife
  • AMP - der XAMPP mit Konfigurationsdateien und Technik (Ports)
    der Kreis der Seminarwoche schließt sich; Infosite auf Portal Apachefriends zu technischen Konfigurationen (Link); Erinnerung an wichtigste Konfigurationen in der php.ini; Tipp für Verbesserung bei Apache "Crashs" unter Windows: Eintrag der Zeile "ThreadStackSize 8388608" (Link)
  • Bereitstellung von umfangreichen Info-Materialien für TN (inklusive Musterprüfung),
    Hinweis auf Linksammlung zum CMSOD, "Bibliothek" des Trainers für Bücher, Zeitschriften und Selbstlernmaterialien wie Herdt-Skripte
  • Tools der Woche (Wiederholung und Zusammenstellung)
    Editor der Seminar-Woche: Notepad++ (als nicht installierbare Variante verfügbar, Hinweis auf PlugIns s. Emett/Zengarden, ...)
    Alternative Editoren: PsPad, Synwrite, UltraEdit ($);
    Alternative IDE (Integrated Development Envirenments - Entwicklungsumgebungen): Eclipse for PHP, Netbeans, Aptana Studio, Zend Studio ($)
    MySQL-Client der Seminar-Woche: phpMyAdmin (die verbreitete Lösung bei Webhostern)
    Alternative Clients: Heidmysql (nur für Windows); Oracle Workbench (Zusammenfassung vieler MySQL-Tools); mysql Befehlszeile (;-)
  • Prüfungsvorbereitung
    Musterprüfung durcharbeiten, Lernzielkatalog <- Roter Faden (siehe Downloads)
  • TN-Unterlagen und -Bescheinigungen, Feedbackbögen, letzte TN-Fragen
  • ToDo-Lists nach dem Seminar:
    für Teilnehmer an Prüfung: Coding trainieren / Musterprüfung / Websites studieren
    für Trainer: Beispiele der Woche als Downloads nachbereiten (erl.), OOP-Beispiel Kontakteverwaltung neu aufbereiten und ausführlich kommentieren

  • SQL-DumpSQL-Dump
  • SQL-ImportSQL-Import
  • mysql deprecatedmysql deprecated
  • mysqlimysqli

Simple Image Gallery Extended

 

Ihr Trainer Joe Brandes