• XAMPP IDEXAMPP IDE

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

Ort: Heydenstraße 2, VHS Braunschweig, Raum 2.11 (geändert!)
Zeiten: Mo, 11.06. bis Fr, 15.06.12; jeweils von 08.30 - 16.00 Uhr
Prüfung: Mi, 20.06.2012, 17.00 Uhr, Raum 2.11 (aktuell 2 TN - AWP04)
Status Erstkorrektur: erledigt - 21.06.2012 - ich gratuliere zu den bestandenen Prüfungen

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


  • phpinfo()phpinfo()

Montag, 11.06.2012, 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 (Win + E): Dateiendungen, versteckte und Systemdateienen einblenden
  • Client-Server-Prinzip für WWW
    WWW - World Wide Web Internet "Dienstleistung"
    Web-Client: genannt Browser, die über ein Protokoll (http, https) vom Server Daten erfragen (request)
    Web-Server: "Dienstleister"-Software - Apache ("A Patchy Server" Wortspiel), IIS (Internet Information Server von Microsoft)
    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 (hier aktuell: Version 1.7.7 mit Apache 2.2.21, MySQL 5.5.16, PHP 5.3.8, phpMyAdmin 3.4.5)
  • Webserver Apache mit PHP
    1) als Apache-Modul - PHP wurde in Apache integriert
    2) als CGI (common gateway interface) - PHP Interpreter liegt als "Programm-Lösung" in extra Verzeichnis
  • XAMPP (Inbetriebnahme)
    landet XAMPP in C:\xampp\... 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\uebungen (entspricht http://localhost/uebungen/)
    Wichtig: keine Umlaute, keine Sonderzeichen, Groß- und Kleinschreibung beachten (also Empfehlung: alles klein), keine Leerzeichen
  • Kommentare in PHP
    Einzeilig mit //, mehrzeilig mit /* ... */
    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)
  • Intermezzo: Zen-Coding
    Installation von Plugin Zen-Coding für Notepad++
    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
  • echo
    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
  • vordefinierte PHP-Konstanten ("magische" PHP-Konstanten)
    __LINE__, __FILE__, PHP_VERSION, PHP_OS
  • Informationsportale
    Apache Webserver - Apache Software Foundation mit Projekt HTTP Webserver (httpd - d für daemon als Unix/Linux Fachbegriff für Hintergrunddienst/Service)
    PHP - serverseitige Skriptsprache
    Ü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 und PHP-FunktionenArrays und PHP-Funktionen

Dienstag, 12.06.2012, 08.30 - 16.00 Uhr

  • Rekapitulation, TN-Fragen,
    Interesse und Planung freiwillige Prüfung
  • PHP-Hilfe nutzen
    Aufruf der Online-Hilfe von php.net mittels Cursor in PHP-Wort und Alt + F1
    Hilfe für PHP in Notepad++ mittels PlugIn "Language Help" nachrüsten
    (Install-Problem für PlugIn nachrecherchieren
  • Übungen "Trainer"
    durchnummerierte Übungen über das Netz bereit gestellt, erste Probleme der "alten" Skripte unter der modernen PHP-Umgebung 5.3.8 analysiert
    Anm. Übungen 001 - 006:
    Datumsfunktion date(), Kommentare, Funktionen mit function, Klammern (Runde / Geschweifte), Präkrement, Postkrement, Zuweisung by value und by reference ($a = &$b), Datentypen (settype, gettype), NULL, S_SERVER[], __LINE__, __FILE__, PHP_VERSION, PHP_OS, TRUE, FALSE, $GLOBALS
  • Superglobale Arrays
    $_SERVER, S_COOKIE, $_GET, $_POST, S_SESSION, $GLOBALS
    früher: $SERVER_NAME oder Array HTTP_SERVER_VARS
    heute: $_SERVER['SERVER_NAME']
  • Notice:  (Anzeigen im Browser)
    Anmerkungen des PHP-Parsers gemäß eingestelltem Fehler/Nachrichten-Levels in der php.ini
    error_reporting = E_ALL | E_STRICT  (Development Value - gewechselt mit)
    error_reporting = E_ALL & ~E_NOTICE  (Default Value)
  • Gültigkeit / Sichtbarkeit von Variablen
    Tests mit Variablen innerhalb / außerhalb von Funktionen und dem Superglobalen Array $GLOBALS, Variablen-Deklarationen: public, private, global, protected
    Anm.: keine Vertiefung der technischen Backgrounds!
  • Arrays
    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")
    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, "<br>";
        }
        echo "<br>";
    }
    
  • String-Funktionen (012, 013)
    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
    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

 

  • Dynamische WebsiteDynamische Website

Mittwoch, 13.06.2012, 08.30 - 16.00 Uhr

  • Rekap, TN-Fragen (s. nä. Punkt)
  • .htaccess und mod_rewrite
    Die Datei .htaccess als Apache "Steuer-/Konfigurationsdatei" (Alternativ:IIS mit web.config)
    Einsatzbeispiele:
    1) zusammen mit .htpasswd für "Geschützte Verzeichnisse"
    2) zusammen mit mod_rewrite (Apache-Modul) für Suchmaschinenfreundliche (SEF) bzw. Suchmaschinenoptimierte (SEO) URLs
    3) manuelle Änderung von PHP-Konfiguration (siehe Spalte Local Value von phpinfo), wird bei Hostern wenig und selten zugelassen
    Anm.: Dateien mit . (Punkt) am Anfang lassen sich mit Windows schwer erstellen - besser direkt per Editor erzeugen und speichern
  • Funktionen (prozedurale Lösungen)
    Beispiele mit Mittelwert und Fakultät (rekursive Funktion), Übergaben mittels Wert und mittels Referenz, Übung zeigt Anmerkungen für Var-Übergaben (PHP-Parameter: allow_call_time_pass_reference)
    Anm.: Umstellung der PHP-Umgebung auf "Produktions-Niveau" und PHP 5.3 Deklarationen (umfangreichere Beispiele!) gemäß aktueller Literatur und Help-Manual PHP (.chm-Datei)
  • Hosting
    Shared Hosting - Standard-Angebote der üblichen Hoster (1und1,  Strato, ...), ein Server wird vielen Kunden mit derselben Konfigurationsumgebung und Technik zur Verfügung gestellt! Meist Linux-Betriebssystem - vereinzelt auch Windows
    Server - als Virtual Server (also Virtuelle Machinen) oder Root-Server (auch Dedicated Server), Bereitstellung einer eigenen Maschine mit den verschiedenen Servern (Web-, DB-, ...), müssen vom Kunden eigenverantwortlich konfiguriert und aktualisiert werden!
  • Dateihandling
    File-Handle übernehmen mit fopen und schließen mit fclose (zurückgeben/schließen bitte nicht vergessen!), Unterschiedliche Modi für den Dateizugriff (siehe fopen in Manual)
    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
    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 
  • Diashow I (dynamische Website  ohne DB-Anbindung)
    beispielhaftes Skript nach M. Lubkowitz aus der Internet Professional
    Grundidee: Skript diashow.php liest Steuerdatei (bayern.csv) und ein HTML-Template ein und berechnet und ersetzt Platzhalter im Template
    genutzte Funktionen: file, implode, explode, list, str_replace
    Speziell: Kurzform für if-Struktur  $pic_nr = $_GET['nr'] ? $_GET['nr'] : 1;
  • Kalender (Übung)
    Datum- und Uhrzeitfunktionen: mktime, strftime, date
    Setzen der Länderumgebung mittels   setlocale(LC_ALL, "German_Germany"); 
    (Anm.: auf Windows anders als auf Linux-Systemen)
    Übung mit Schleife (Kontrollstruktur)  for

 

  • SQL mit PhpMyAdminSQL mit PhpMyAdmin

Donnerstag, 14.06.2012, 08.30 - 16.00 Uhr

  • Rekap, TN-Fragen, Prüfung (Anmeldung im Netz notwendig - Kursnummer AWP04)
  • MySQL (Datenbankserver mysqld)
    SQL Structured Query Language (viele Dialekte aber gemeinsame Basis), Client-Server Prinzip; Client in Konsole  mysql  gezeigt, besser: Verwaltung mittels PhpMyAdmin - bereits in XAMPP unter localhost/phpmyadmin erreichbar, Konfigurationsdatei: my.ini (bzw. my.conf)
    Hierarchie: Datenbankserver - Datenbanken - Tabellen - Felder
    Verbindung zu Datenbankserver: Hostname, Benutzername, Passwort - dann Datenbank wählen
    Integration in PHP mittels mysql-Bibliothek (siehe php.ini) bzw. mysqli (improved - verbesserte Zugriffstechnik: mehr Speed, Sicherheit, Fehlerbehandlungen und OOP-Techniken viel umfangreicher)
  • Praxis mit PhpMyAdmin
    Datenbank anlegen, Tabellen anlegen und Felder mit Eigenschaften ausstatten
    Datentypen: int (integer), varchar (variable Zeichen), longblob (Binäre Objekt - z.B. Bilder), text (wie memo bei Access), datetime (Datum/Uhrzeit), Import von SQL-Dump (SQL-Sicherungsdatei), Primary Key (PK - Primärschlüssel), AutoIncrement (AI - automatisch hochzählendes Feld)
  • Diashow II (jetzt: Dynamische Website mit MySQL-Anbindung)
    DB und Tabellen mit Feldern erstellt, Konfigurations-Include-Skript angepasst (wichtig: als PHP-Skript schreiben und mit .php auf Server legen!), alte Servervariable $SELF_PHP gegen $_SERVER['SELF_PHP'] getauscht
  • SQL-Query
    Tests direkt mit PhpMyAdmin möglich, dort werden die SQL-Codes direkt angegeben und sind auch dort einfügbar; Beispiel SQL-String aus Diashow mit MySQL:
    SELECT p.title, p.comment, c.name 
        FROM ds_pictures p, ds_categories c 
        WHERE (p.category = '.$show_nr.') AND (p.category = c.id) 
        ORDER BY p.id 
        ASC LIMIT '.($pic_nr-1).',1
    
  • Datenbanktheorie
    Normalisierung für Tabellen - Erstellung von Normalformen, Relationen zwischen Tabellen (RDBM - Relationales DB Management), Ziel: Vermeidung von Redundanzen bei der Eingabe und Inkonsistenzen im Datenbestand, Beispiel: Büchertabellen nach M. Kofler
  • OOP (Objekt Orientierte Programmierung)
    im Gegensatz zu prozeduralen Lösungen (einzelne Funktionen) hier effektivere Programmierungen und Nutzungen von Code, Eingeführt mit PHP 4 und verbessert/verändert mit PHP 5.x
    Begriffe: new, class, extends, var, static, public, protected, function
    spezielle Bezeichner __construct für Kontstruktor und __destruct für Destruktor)
    Vererbung von Eigenschaften und Methoden (s. Funktionen) mittels extends (Elternklasse parent), Direktaufrufe mit ::, Erzeugen neuer Instanzen mittels new, eigene Klasse mit $this, Aufruf von Eigenschaften/Methoden mit ->
    Empfehlung: Handbuch PHP Kapitel Sprachreferenz - Klassen und Objekte
  • Kontakverwaltung I (Dyn. Anbindung MySQL-DB mittels PHP-OOP-Technik mysqli)
    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)
    Ziel: Anlegen (insert), Ändern (update), Auslesen (select) und Löschen (delete) von Datensätzen

 

  • CookieCookie

Freitag, 15.06.2012, 08.30 - 16.00 Uhr

  • Rekap, TN-Fragen
  • Kontaktverwaltung II (Forts. Übung und Vertiefung der Techniken mysqli/OOP)
    Daten auslesen: index.php (SQL: select
    Daten ändern: bearbeiten.php (SQL: update
    OOP/mysqli-Technik: $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: $db->error, Ausnahmebahandlung mit try und catch (engl.: Exceptions)
    Import des Tabellen-Dumps kontakte.sql in die manuell erstellte DB kontakte
    Verbesserung: Abfangen leerer Formularfelder mit Bedingung !empty($_POST['vorname'])
    Empfehlung: Analyse der Skripte und Verinnerlichung der "Best Pracitses"
    Tipp: für das Verständnis erzeugter Objekte im Code einfach mal zwischendurch die Objekte mittels print_r in einem pre-Tag ausgeben und so analysieren, ggf. plus einem die("Testausgabe");
  • Cookies und Sessions
    Server legen Text/Infoseiten auf Client-Seite ab; Einsatzbeispiel: Infos zu Warenkorb, Merkzettel & Co; ID einer Session hinterlegen, Verwaltung mittels Superglobal $_SESSION, Befehl: setcookie(); jeder Browser legt eigene Cookie-Verwaltung an
    Sessions werden serverseitig verwaltet (siehe Infos bei phpinfo - session), XAMPP--Session-Speicher-Pfad (session.save_path) auf C:\xampp\tmp, Verwaltung mittels Superglobal $_SESSION, Befehle: session_start(), session_destroy
  • MySQL Dumps (Backups für Datenbanken / Tabellen)
    mit PhpMyAdmin DBs /Tabellen per Exportieren und Importieren Dateien mit und ohne Kompression (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, Laufzeit der PHP-Skripte für das Komprimieren und Dumpen (max_execution_time) - Lösung: z.B. Skriptsammlung von www.mysqldumper.de
  • MySQL-Tool Workbench
    von MySQL/AB (heute Oracle): MySQL Workbench (vormals MySQL Administrator) für die Profi-Verwaltung von einem oder auch vielen MySQL-Servern; Anm: benötigt den MySQL-Server als Dienst und verlangt die Installation von MS Visual C und das aktuellste MS Dot.Net-Framework
  • Profesionelle Editoren
    die kostenlosen Varianten basieren meist auf Eclipse: Aptana Studio, NetBeans
    Kaufvariante: Zend Studio
    Debugging: XDebug, Zend Debugger (für professionelle Entwicklungen)
  • Prüfungsvorbereitung
    Musterprüfung, Lernzielkatalog <- Roter Faden
  • letzte TN-Fragen, Seminarunterlagen/BU-Sammlung für TN, Feedback-Bögen, TN-Unterlagen
  • Download für LZK/BWR und Musterprüfung bereitgestellt:

 

Vielen Dank für die positiven Feedbacks und Ihre Frage nach weitergehenden Folgeseminaren (bitte Mail an mich, damit wir das gut organisieren können - Danke)
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
Nach oben