• 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

 

  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