• 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

 

  Privates

... zu Joe Brandes

Sie finden auf dieser Seite - als auch auf meiner privaten Visitenkarte joe-brandes.de einige Hintergrundinformationen zu mir und meinem Background.
Natürlich stellt die IT einen Schwerpunkt in meinem Leben dar - aber eben nicht nur ...

joe brandes 600px

Private Visitenkarte / Technik: HTML & CSS /
  joe-brandes.de

  Jobs

... IT-Trainer & Dozent

Ich erarbeite und konzipiere seit über 20 Jahren IT-Seminare und -Konzepte. Hierfür stehen der "PC-Systembetreuer / FITSN" und der "CMS Online Designer / CMSOD". Ich stehe Ihnen gerne als Ansprechpartner für Ihre Fragen rund um diese und andere IT-Themen zur Verfügung!

becss 600px

BECSS Visitenkarte / Technik: HTML & CSS /
  becss.de

  Hobby

... Snooker & more

Wer einmal zum Snookerqueue gegriffen hat, der wird es wohl nicht wieder weglegen. Und ich spiele auch immer wieder gerne eine Partie Billard mit den Kumpels und Vereinskameraden. Der Verein freut sich über jeden, der einmal in unserem schicken Vereinsheim vorbeischauen möchte.

bsb 2011 600px

Billard Sport BS / Joomla 3.x /
  billard-bs.de

PC Systembetreuer ist J. Brandes - IT seit über 35 Jahren - Technik: Joomla 3.4+, Bootstrap 3.3.4 und "Knowledge"

© 2018 - Websitedesign und Layout seit 07/2015 - Impressum - Datenschutzerklärung
Nach oben