• XAMPP IDEXAMPP IDE

An der VHS Braunschweig findet ab dem 02.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.11
Zeiten: Mo, 02.06. bis Fr, 06.06.14; jeweils von 08.30 - 16.00 Uhr
Prüfung: eine freiwillige Prüfung für das Modul II des "CMS Online Designer"-Zertifikats wird mit den TN absprochen
Termin: 09.07.2014, 18.00 Uhr, Raum 2.11 - 2 TN letztendlich mit Prüfungen - ich gratuliere beiden zu weiteren bestandenen Prüfungen im Rahmen unseres CMS Online Designer Zertifikats

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

  • xampp-cmsodxampp-cmsod

Montag, 02.06.2014, 08.30 - 16.00 Uhr

  • Orientierungsphase, Teilnehmer-Themen, Pausenregelung/Seminarablauf
    Cobra-Shop: gesponserte SW für IT-TN bei VHS; Buchempfehlung: Hinweis und ggf. Koordination von Buchbestellung
  • Software- und Grundeinrichtung PCs
    Reborn-Card der TN-PCs beachten: wir arbeiten in den BU-Profilen ohne Rücksetzung von Laufwerk C:
    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 nicht mehr Ausblenden lassen (gerne auch: 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: ich stelle meinen Teilnehmern (TN) eine aktuelle Version 1.8.3-4 mit Apache 2.4.9, MySQL 5.6.16, PHP 5.5.11, phpMyAdmin 4.1.12
    Anm.: die momentanen Prüfungsumgebungen des CMSOD laufen alle mit Version 1.7.4 (PHP 5.3)
  • XAMPP (Inbetriebnahme der Spezialedition für den CMSOD)
    Selbstentpackendes XAMPP-Archiv (.exe)  in C:\xampp-cmsod\... entpacken - so sind keinerlei Konfigurationen vorzunehmen
    bei abweichendem "Installationpfad" muss die setup_xampp.bat einmalig ausgeführt werden
    Start der Dienste Apache und MySQL über das XAMPP Control Center (xampp-control.exe in xampp-cmsod-Ordner)
    Meldungen der Windows 7 Firewall betreffen nur die Zugriffe vom Netz (außerhalb localhost)
  • Web-Dokumente-Ordner
    XAMPP-Verzeichnis: c:\xampp-cmsod\htdocs (entspricht der Request-URL: http://localhost/)
    Übungsordner: C:\xampp-cmsod\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
  • PHP-Hilfe nutzen
    Aufruf der Online-Hilfe von PHP-Webportal 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
  • 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
  • date (Datumsfunktion - Link php.net)
    Recherche mit PHP-Hilfe; Übung mit Augabe (echo) des aktuellen Datums in der Form "2014-06-02"
    $heute = date("Y-m-d"); // gibt das gewünschte Datum und Format aus
    Hinweis: DATETIME Formatierung mittels Formatierungsstring "Y-m-d H:i:s"; später für MySQL-Datenbank wichtig!
  • $_SERVER[] (Link php.net)
    Superglobales 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(...)

 

  • xampp-cmsodxampp-cmsod
  • CMSOD ServerCMSOD Server
  • AnsichtenAnsichten
  • XAMPPXAMPP
  • VariableVariable
  • ServervariablenServervariablen
 

Di., 03.06.14

  • ArraysArrays

Dienstag, 03.06.2014, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
  • AMP (eine Wiederholung und technische Vertiefung)
    Kombinationen mit L - Linux (klassisches LAMP-System), W - Windows oder M - MacOS
    Wichtig: im Internet (bei Ihrem Hoster) finden Sie "immer" LAMP-Systeme vor
    beim Begriff "Server" immer gleich auch an "Client" denken (siehe Client-/Server-Prinzip - eine Kopiermaschine)
    Infos zum XAMPP für Windows System: siehe Textdokumente im XAMPP-Hauptordner und auf www.apachefriends.org
    Empfehlung: für Textdokumente besser Notepad++ als Standardeditor einrichten (statt Windows Notepad - Editor)

AMP A - Apache M - MySQL P - PHP
Technik Web-Server Datenbank-Server serverseitige Skriptsprache
Web (URL) httpd.apache.org
(Projekt Apache Foundation)
www.mysql.com
(bzw. .de)
www.php.net
(bzw. de.php.net)
Konfigurationen httpd.conf my.ini
(bzw. my.cnf)
php.ini

  • Zeichencodierungen
    die IT-Systeme kennen nur 0 und 1, also verwendet man "Tabellen", die 0/1-Kombinationen dann Zeichen zuordnen
    Beispiele: ASCII, ANSI, ISO-8859, UTF-8 (und andere UTF-Varianten; auch als Unicode bezeichnet); nur in 7 Bit also den ersten 128 Zeichen sind diese "Nachschlagetabellen" gleich - dann gibt es Abweichungen; Beispiel unter Windows gezeigt: mit Windows Notepad (ANSI) Datei mit deutschen Umlauten erstellt und dann in der Eingabeaufforderung (cmd-Befehl type - ASCII) angezeigt
  • Emmet (Notepad++ aufrüsten; Website: www.emmet.io  ;früher: Zen Coding)
    die ultimative Unterstützung für das HTML-Editieren, Verfügbar für nahezu alle Editoren, Emmet-Syntax (Link)
    Notepad++: Plugin Emmet - inkl. Python (Erweiterung) installiert, erste Beispiele (ausführlichere ZenCoding-Beispiele: Link, Link)
    Tastenkombination für Emmet "Expand Abbreviation - Abkürzungen ausführen/expandieren" konfiguriert mittels Menü Ausführen - Shortcut ändern auf "Umschalten + Alt + Enter" (die Standardkombinatino erzeugt neue Zeile oberhalb)

Emmet Abkürzung Einsatz - Ergebniscode
html:5 erzeugt komplettes HTML5-Gerüst
inklusive richtigen Charactersettings "UTF-8" per meta-Tag
html:xt erzeugt XHTML 1.0 transitional
ul>li*5
ul>li.stil*5
ul>li.stil-$$*5
erzeugt verschiedene unsortierte Listen!
das funktioniert natürlich auch mit ol-Tags (sortierte Listen)
table>.row*3>.col*5 erzeugt Tabellengerüst mit 3 Zeilen und 5 Spalten
inklusive Klasse "row" für tr-Tags und Klasse "col" für td-Tags

  • Arrays (Praxis - Teil 02)
    Praktische Beispiel und Übungen:
    Beispiel (assoziatives Array):  $arr = array( "Nr" => 12345, "Name" => "Meier", ...)
    Beispiel (nummerisches Array):  $arr2 = array( "Auto", "Bahn", "Fahrrad")
    Definierten Wert mit Klammerschreibungen:   $arr['Nr']   bzw.    $arr2[2]
    Funktion count($arr) ergibt die Anzahl von Werten im Array
    Neuen Wert in nummerischem Array einfügen:  $arr[] = "Flugzeug"
    Ausgabe (zu Testzwecken) von Arrays mit Funktionen print_r und var_dump (Tipp: Einschachtelung in pre-Tags für formatierte Ausgabe)
    Automatische Schleifenfunktion für das Handling von Arrays: foreach
    Zuweisung von Werten aus Arrays zu eigenen Variablen: list ( $a, $b, $c) = $arr
    Mehrdimensioale Array mittels Verschachtelung von Array - dann mittels $laender ['Deutschland'] [0]
  • Escape-Sequenzen (Link php.net)
    Kennungen im PHP-Code für Spezialformate und Nutzung von sonst unerlaubten Zeichen
    \n  -  Zeilenumbruch (im Quellcode)
    \t  -  Tabulatorsprung (im Quellcode)
    \"  -  Nutzung von doppelten Anführungszeichen; z.B. für Zuweisungnen wie class = "styling"
  • Kontrollstrukturen (Link php.net)
    Nutzung von Verzweigungen mittels if (bzw. if ... then ... else) und switch,
    Schleifen mittels for und while bzw. do...while, Verschachtelungen von for-Schleifen
    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.

 

  • XAMPP readmeXAMPP readme
  • print_r var_dumpprint_r var_dump
  • foreach - listforeach - list
  • ArraysArrays
  • unendlich...unendlich...
  • for verschachteltfor verschachtelt
 

Mi., 04.06.14

  • SuperglobalsSuperglobals

Mittwoch, 04.06.2014, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
  • Browser-Analyse für HTML, CSS, JS
    beim Microsoft Internet Explorer mittels F12 Aufruf der Entwicklertool
    bei "fast" allen anderen Browsern mittels "Umschalten + Strg + I" den Code Inspektor aktivieren
    Tipp: beim Firefox das Add-On Firebug und dessen Techniken nutzen
  • include vs require
    Einfügen von externen PHP-Skripten (siehe auch Ordern wie /inc oder auch /lib) zum wiederholten Verwenden
    bei require ist ein erfolgreiches Einbinden zwingend nötig, sonst bricht das Skript ab!
    Anm.: von beiden gibt es auch die Varianten include_once bzw. require_once
  • 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: dort - also beim Hoste - Codes wie de_DE, en_US
    Übung:  mit Schleife (Kontrollstruktur)  "for" die Wiederholungen der Ausgabenkonstrukte für Monate vereinfachen auf eine Schleife
  • String-Funktionen (Link php.net)
    addslashes, stripslashes - Anführungszeichen sequenzieren (sonst DB-Probleme möglich)
    explode, implode - Auseinanderbauen und zusammensetzen von Zeichenketten
    substring, str_replace - Beispiele für Zeichenkettenmanipulierung (siehe auch str_replace für Diashow / dynamische Websites)
    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
    nl2br - gibt Texte inklusive Zeilenumbrüchen an Browser
    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
  • 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)
  • 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 keine PHP-Konfiguration  register_globals = On  mehr!
    Übergabe der Variablen mittels $_GET['name'] bzw. $_POST['name'] (s. Handbuch Superglobals)
    Speziell: Bereinigung von Eingaben mittels Funktion  htmlspecialchars;
    siehe auch Thema Captchas und Formular-Validierungen (haben hier keinen Platz)
    Wichtig: sich selbst aufrufende Formulare; Nutzung von PHP_SELF - also $_SERVER['PHP_SELF'] nutzen
  • 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]);
    
    C
    odeschnippsel aus Diashow; der Skriptablauf wird morgen ausgiebig analysiert
  • MySQL (Datenbankserver mysqld)
    SQL Structured Query Language (viele Dialekte aber gemeinsame Basis), Client-Server Prinzip; Client in Konsole (Eingabeaufforderung)  mysql  gezeigt (Kommandozeilentool in cmd; bei XAMPP in XAMPP-Ordner\mysql\bin), Beispielzeilen:
    SHOW DATABASES;
    USE cdcol;
    SHOW TABLES;
    SELECT * FROM cds;
    
    besser natürlich: 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

 

  • StringvariablenStringvariablen
  • KalenderKalender
  • SuperglobalsSuperglobals
  • DateioperationenDateioperationen
  • PlatzhalterPlatzhalter
  • mysql Clientmysql Client
 

Do., 05.06.14

  • phpmyadminphpmyadmin

Donnerstag, 05.06.2014, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen
  • Diashow II (die mysql-Version)
    ausführliche (zeilenweise) Erläuterungen des Quellcodes und der genutzten PHP-Techniken (file, implode, list, explode, str_replace, Arraytechniken)
    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
    Analyse der Skriptzeilen mit Break-Point (Unterbrechungen im Skriptablauf mittels einfacher echo/print_r/die PHP-Zeilen
    Wichtig: in diesem in die Jahre gekommenen Skripte werden "Depracated"-Funktionen genutzt - besser die mysqli (mysql improved) benutzen
  • Fehleranzeigen (php.ini konfigurieren)
    Anzeige von Fehlern per php.ini (Zeile 552: display_errrors = Off) auf "Aus" stellen und nicht vergessen den Webserver neu zu starten, um die geänderte Konfiguration neu einlesen zu lassen
    Kontrolle mittels Anzeige einer phpinfo.php (XAMPP z.B.: localhost/phpinfo.php)
    weitere erwähnenswerte Konfigurationswerte:
    Server API: Apache Handler - alternativ Lösungen als Ausführungen von PHP in CGI-Schnittstellen (Programmverzeichniss - Common Gateway Interfaces bzw. FastCGI)
    Loaded Configuration File: Pfad und Name der PHP-Konfiguraitonsdatei (hier: C:\xampp-cmsod\php\php.ini)
    Loaded Modules: Module für den Apache - besonders erwähnt mod_rewrite (später für gute URLS: SEF)
    Core (PHP): max_execution_time
    allgemein: alle Rubriken zur Kontrolle nutzen - Beispiel: mysqli gecheckt; Session (siehe session.save_path s.u.)
  • Datenbankzugriff
    DB konnektieren; nötige Infos: Servername (hostname), Benutzer (username), Passwort; DB auswählen
    DB Hierarchien: DB Server - Datenbank - Tabellen - Felder/Spalten mit Inhalten
    meist: Bereistellung der Zugangsdaten mittels include-Datei (bitte immer als php-Datei speichern)
  • Operatoren
    Logische Operatoren (Link): and, or, && (beide müssen true sein), ! (nicht - bzw. verneinen)
    Vergleichsoperatoren (Link - für Bedingungen): == (oder sogar ===), <> (ungleich), <=, >= (kleiner/größer gleich)
  • 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
    Dateien der MySQL-Datenbanken (bei XAMPP Windows): C:\xampp\mysql\data\diashow
  • 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()
  • OOP (Objektorientierte Programmierung - Teil I)
    besser als prozedurale Techniken (Funktionen, Prozeduren), da man Code intelligent und effektiv weiter nutzen kann (Stichwort: Vererbungen)
    eine erste Heranführung mit  Beispiel-Skripts mit Grafiken (php GD Bibliotthek)
    Signalworte: class, new, __construct (Konstruktor), extends und Syntax mit "->" und "::"
    Hinweis: wieder dt. Handbuch (Manual) nutzen für Erläuterungen der OOP-Techniken (Klassen und Objekte)

 

  • mysql Funktionenmysql Funktionen
  • phpmyadminphpmyadmin
  • php.iniphp.ini
  • CookiesCookies
  • session.save_pathsession.save_path
  • SessionverwaltungSessionverwaltung
 

Fr., 06.06.14

  • OOPOOP

Freitag, 06.06.2014, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen (Hr. H.: Hosting - Datenbank?)
  • To-Do für Freitag (Tag 05):
    DBs sichern (Export / Import) per DB-Dumps,
    OOP erläutern (Beispieldoks - Grafik und Text basiert),
    Schwerpuntkt: vollständiges Skript "Kontaktverwaltung" mit moderner php/mysqli/OOP Technik,
    Musterprüfung, ...
  • PHP & MySQL Projekte
    Hosting Beispiele und Preise (1und1, Strato), Webspeicher (GB), Anzahl Datenbanken
    Projekte bestehen aus zwei technischen Bestandteilen:
    1) Webserver htdocs Verzeichnis(-struktur) - kann beim Hoster leicht per FTP genutzt werden
    2) Datenbank und deren Tabellen (Struktur + Daten) - hier helfen jetzt Dumps:
  • 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
  • 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 ->
    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)
  • ...tbc...
  • 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
  • To-Do nach Seminar:
    TN-Unterlagen als Download bereitstellen

 

  • mysql Dumpmysql Dump
  • SQL DateiSQL Datei
  • mysqldumper.demysqldumper.de
  • XAMPP Archiv.exeXAMPP Archiv.exe
  • OOPOOP
  • SQL - DeleteSQL - Delete
 

Vielen Dank für Ihr gutes Feedback und Ihr Interesse an unseren Prüfungen und weiteren Seminaren!
Ihr Trainer Joe Brandes