An der VHS Braunschweig findet ein Seminar zum Thema "Dynamische Webseiten mit PHP & MySQL" statt. Der 5-tägige Bildungsurlaub soll eine praxisorientierte Einarbeitung in die Techniken der serverseitigen Skripte mit PHP und einer Datenbankanbindung am Beispiel der DB MySQL. Hier die Rahmendaten unseres Seminars:

Ort: VHS Braunschweig, Heydenstraße, Raum 2.01 (! - Raumwechsel)
Zeiten: Mo, 14.06. - Fr, 18.06.2010; von 08.30 - 16.00 Uhr

Wir wünschen - wie immer - viel Spaß und Erfolg bei unseren Seminaren. Die Inhalte des Seminars werden wir an dieser Stelle mit einem "Roten Faden" begleiten ...
Ihr Trainer Joe Brandes, Braunschweig, 2010-06-13

 

Montag, 14.06.2010, 08.30 - 16.00 Uhr

  • Orientierungsphase - Themen der TN mit "Rotem Faden" abgleichen
    TN-Thema: Web-Hosting erläutern (Techniken, Preise, Verwaltung)
  • Hinweis auf Cobra Shop - verbilligte Schüler-Studenten-Lehrer-Lizenzen
    von diversen SW-Herstellern
  • Diashow LAMP (Link pcsystembetreuer.de)
    L: Linux (Alternativ W: Windows) - Betriebssystem
    A: Apache - Webserver - www.apache.org
    M: MySQL - Datenbankserver - www.mysql.com
    P: PHP - serverseitige Skriptsprache - www.php.net
  • Serverseitige Skriptsprache für unser Seminar: PHP
    rekursives Akronym: PHP Hypertext Preprocessor (PHP Hypertext "Vorbearbeiter")
    PHP bei Wikipedia (gute Darstellung Client-/Server Prinzip Dienst WWW)
    Hilfedatei (CHM - Compressed Help Manual) über www.php.net - documentation - documentation download - hier verschiedene Formate immer aktualisiert für die jeweils aktuelle PHP Version
  • Entwicklungsumgebung für serverseitige Skripts:
    Apachefriends: alle Serverdienste und Zusatzfunktionen fix und fertig!
    Warnung: diese Umgebung nur für Testserver und Entwicklung nutzen,
    niemals als echten Server (Produktionsserver)
  • Apachefriends Xampp - X für L(inux), W(indows), M(acOS X), S(olaris)
    Standard-"Installation": einfach auf C:\ entpacken und automatisch durchlaufen lassen
    Steuerung über Xampp Control Center (siehe Hauptverzeichnis c:\xampp)
  • Test der Apachefriends Serverinstallation nach Starts von Apache und Co
    Adresse des Servers im Browser aufrufen:
    http://localhost (oder alternativ http://127.0.0.1)
  • Resourcen local und remote
    local: c:\xampp\htdocs\uebungen\info.php
    remote: http://localhost/uebungen/info.php
  • Beachten: Windows Explorer (Win-Taste + E) - Extras - Ordneroptionen - Ansicht
    Erweiterungen (Dateiendungen) müssen eingeblendet sein!
  • Datei- und Ordnerbezeichnungen: (WICHTIG)
    Groß- und Kleinschreibung - Empfehlung: alles klein
    keine Leerzeichen - Verbindungen mittels ..._... (Tiefer Strich, Unterstrich)
    keine Umlaute/ Sonderzeichen - also kein ä, ü , ö oder ß
  • Erster Editor der Woche: PSPad (Website: www.pspad.com/de)
    Alternativen: Installer für Windows oder CAB-Datei für USB-Stick und Co
    Syntax-Highlighting - siehe Symbol in Standard-Symbolleisten
    Code-Completion / Code-Komplettierung - Tastenkombi STRG + Leertaste
    Hilfe-Integration - über Einstellungen - Highlighter einstellen ... - PHP - (rechte Seite) Register Spezifikation - Sprachspezifische Hilfedatei (ALT + F1)
  • Erste Codes selbst getippt und der PHP-Hilfe entnommen
    insbesondere: Einsatz der Funktion phpinfo() um sich alle PHP/Apache-Konfigurationen auflisten zu lassen!
  • Ausgaben kontrolliert im Browser UND in Quellcodeansicht!
    Steuerung von Zeilenumbrüchen im Quellcode mittels \n
    Zeilenbrüche im Browser-Body: html-Tag <br /> (Empfehlung xhtml-Codierung)
  • Textübergaben PHP an Browser mittels echo
    Unterschiede bei einfachen und doppelten Anführungszeichen
    Ausgabe von Variableninhalten ($foo) bei doppelten Anführungszeichen, hier schaut PHP so zu sagen rein in die Strings
  • Arrays (Übung 007_)
    tbc Di...

Hier ein paar Code-Beispiele, wie sie in der PHP-Hilfe zum Thema echo zu finden sind:

<?php 
echo '<p>Hallo Welt</p>';
echo "Diese Ausgabe geht über\nmehrere Zeilen. Die Zeilenumbrüche werden\nebenfalls ausgegeben.";
 

// Sie können Variablen innerhalb eines echo-Statements verwenden
$foo = "foobar";
$bar = "barbaz";
echo "foo ist $foo"; // foo ist foobar

// Sie können auch Arrays nutzen
$bar = array("wert" => "foo");
echo "Das ist {$bar['wert']} !"; // Das ist foo !

// Wenn Sie einfache Anführungszeichen verwenden, wird der Name der Variable
// anstelle ihres Inhalts ausgegeben
echo 'foo ist $foo'; // foo ist $foo

// Sie können auch ausschließlich Variablen ausgeben,
// sofern Sie keine weiteren Zeichen ausgeben wollen
echo $foo;          // foobar
echo $foo,$bar;     // foobarbarbaz

// Einige Programmierer bevorzugen es, mehrere Parameter
// mithilfe von Stringverkettung auszugeben
echo 'Dieser ', 'String ', 'besteht ', 'aus ', 'mehreren Parametern.', chr(10);
echo 'Dieser  ' . 'String ' . 'wurde ' . 'mit ' . 'Stringverkettung erzeugt.' . "\n";

?>

Dienstag, 15.06.2010, 08.30 - 16.00 Uhr

  • Rekapitulationen und Rückfragen TN - Fortsetzung/ Einführung Arrays
  • Arrays sind 2-spaltige Tabellen mit Index => Werte
    Indizes mit Zahlen 0, 1, ... sind nummerische Arrays
    Indizes mit beliebigen Datentype sind assoziative Arrays (Hash-Tabellen)
    wichtigste Array-Funktion: foreach ( $kontakt as $key => $elem) { ... }
  • Stichworte: vordefinierte Variablen, register_globals, Superglobale Arrays
    Übungen 001 bis 007 komplettiert
    insbesondere 005_konstanten_variablen.php: siehe $SERVER_NAME
    muss heute heißen: $_SERVER['SERVER_NAME']
  • Online-Quellen (Zeitschriften und Bücher) zum Selbststudium
    Stefan Münz, "Webseiten professionell erstellen" - Link - Ältere Auflage als PDF!
    Mark Lubkowitz, "Webseiten programmieren und gestalten" - Link Galileo Verlag
    Internet Magazin, Weka-Verlag / Magnus.de, monatliches Fachjournal - Link
    PHP Journal, 2-monatiges Fachjournal - Link
    Selfphp Projekt (Damir Enseleit, Matthias Kannengiesser) - Link - kompletter DL verfügbar!
  • Formulare: html-Tag <form> sorgt für komplette Zuweisung von Variablennamen
    Zuweisung des Skripts zum Auswerten über action="machmal.php"
    und Festlegung der Übertragungsmethodik mittels method="post" oder "get"
    Sauberes Verarbeiten mit den Arrays $_POST['name'] oder $_GET['name']
    Alte Notlösungen mit $name oder $HTTP_POST_VARS[] funktionieren mit
    register_globals=off (siehe phpinfo) und spätestens ab PHP Version 5.3.x nicht mehr!
  • wichtige String-Funktionen:
    print, printf, htmlspecialchars, rawurlencode, nl2br, get_meta_tags,
    addslashes, stripslashes, implode, explode, substr und str_replace
  • es wächst zusammen, was zusammen gehört: PHPDIA
    eine dynamische Website, die eine Bildergalerie aus einer CSV-Datei "liest" und dann basierend auf einem html-Template dynamisch die jeweilige Bildpräsentation generiert
    Copyright: Internet Professionell, Ausgabe 08/2003, Mark Lubkowitz

Hier mal der Code der Diashow für die Analyse - hervorgehobene Zeilen werden unten erklärt:

 

<?php

if($_GET['fn'] && file_exists($_GET['fn']))
{
// 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]);

// Vorwärts - Rückwärts
$pprev = ($pic_nr <= 1) ? 1 : ($pic_nr - 1);
$pnext = ($pic_nr >= count($pics)) ? count($pics) : ($pic_nr + 1);

// Picturelist
$piclist = '';
for($i=0; $i<count($pics); $i++)
{
$piclist .= '<a href="'.$PHP_SELF.'?fn='.$_GET['fn'].'&nr='.($i+1).'">Bild '.($i+1).'</a>';
if(($i+1) <> count($pics))
{
$piclist .= '&nbsp;&middot;&nbsp;';
}
}

// Ausgabe
$output_html = str_replace('<@prevlink@>',$PHP_SELF.'?fn='.$_GET['fn'].'&nr='.$pprev,$output_html);
$output_html = str_replace('<@nextlink@>',$PHP_SELF.'?fn='.$_GET['fn'].'&nr='.$pnext,$output_html);
$output_html = str_replace('<@picture@>',$filename,$output_html);
$output_html = str_replace('<@number@>',$pic_nr,$output_html);
$output_html = str_replace('<@piccount@>',count($pics),$output_html);
$output_html = str_replace('<@description@>',$description,$output_html);
$output_html = str_replace('<@piclist@>',$piclist,$output_html);
echo $output_html;
}
else
{
die('Ungültige Diashow!');
}

?>

 

Mittwoch, 16.06.2010, 08.30 - 16.00 Uhr

  • Rekapitulation und TN-Fragen
  • Ausführliche Analyse von PHPDIA in der CSV-Variante
    der Reihe nach (s.o.)
    line 03: Skript abarbeiten wenn sowohl per GET die Variable fn übergeben wird
    und gleichzeitig der übergebene Filename als Datei im gleichen Verzeichnis existiert
    line 06: Variable $output_html wird über die Kombination von Dateioperation file und dann ein implode erzeugt - bewirkt das Laden der Template-HTML-Datei template.htm in die String-Variable $output_html
    line 09: hier file alleine - file erzeugt ein numerisches Array namens $pics
    line 12: Festlegen der Bildnummer ($pic_nr) über eine einfache if-Verzweigung in Kurzschreibweise
    line 15: explode zerlegt für Bildnummer-Array-Eintrag beim ; (siehe CSV-Datei) den String und das linke implode weist dann beiden Teilen der Reihe nach die Variablen $filename und $description zu
    usw. ....
  • besondere Anmerkung: Skript funktioniert, obwohl die genutzte vordefinierte Variable $PHP_SELF hier nicht PHP 5.3 konform eingesetzt wird! Richtig ist: $_SERVER['PHP_SELF']
  • php-String-Funktion str_replace()
    ersetzt ab line 33 in der Variable $output_html alle Platzhalter (<@...@>) und sonstige Inhalte oder Linkbezeichungen und Anker bzw. Hypertextreferenzen
    in line 40: hier wird die "gesamte" Website an den Browser ausgegeben!
  • Einführung in MySQL / Datenbanksystem in Client-/Server-Technik
    MySQL-Server (mysqld - mysql daemon - Dienst/Service)
    MySQL-Client (mysql - in cmd gezeigt
  • Connection (Verbindung) zu einer Datenbank mittels Angabe von (hier XAMPP)
    host: localhost
    username: root
    passwort: NULL
    danach Auswahl einer Datenbank und Arbeit mit den Tabellen
  • DB-Theorie: Entwurf der ersten 3 Normalformen (nach Beispiel M. Kofler)
    für eine kleine Buch-Datenbank (4 Bücher, 3 Verlage, 7 Autoren) verlangt (!) 4 in Beziehung bestehende Tabellen
  • phpmyadmin (PHP-Skriptsammlung für MySQL Administration)
    Standard-URL auf Servern: http://localhost/phpmyadmin
    Oberfläche der Verwaltungsplattform erkundet
  • phpmyadmin-Praxis: das Beispiel PHPDIA (nach Lubkowitz) um die Diashow in MySQL-Technik erweitert
    insbesondere: Analyse der php-Codes in diashow.php (siehe include von config.inc.php)
    Wichtig: die Konfigurations-Include-Dateien müssen immer PHP-Dateien (Endungen) sein!
    Anlegen der Datenbank mark und der beiden Tabellen ds_categories und ds_pictures (ds_ ist ein Prefix/ Präfix)
    Navigation am oberen Rand von phymyadmin über Breadcrumb-Leiste ("Brotkrumen")
  • Erste Analyse des SQL-Kommando-Strings select ... in diashow.php der MySQL-Lösung

Donnerstag, 17.06.2010, 08.30 - 16.00 Uhr

  • Rekapitulation und TN-Fragen
  • SQL-Kommando-String in der diashow.php analysiert
    SELECT p.title, p.comment, c.name
    (wähle die Felder ds_pictures.title, ds_pictures.comment, ds_categories.name)
    FROM ds_pictures p, ds_categories c
    (aus den Tabellen ds_pictures mit Abkürzung p und ds_categories mit Abk. c)
    WHERE (p.category = $show_nr) and (p.category = c.id)
    (wo die p.category gleich $show_nr und auch p.category gleich c.id sind)
    SORT by p.id asc limit ($pic_nr - 1) , 1
    (sortiert nach p.id aufsteigend)
  • Praxis mit SQL in phpmyadmin: in SQL-Konsole von phpmyadmin lassen sich alle Aufrufe durchtesten!
  • Gegenüberstellung: prozedurale vs OOP Aufrufe
    z.B.: mysql_select vs. $db->select ; nach einem $db = new mysqli ()
    Ausführliche Erläuterung s.a. phpself-Kochbuch und PHP-Hilfe
    Beispieldateien: Grafiken mit php-GD-Bibliotheken ("Bälle durch Pfosten auf Wiese")
  • Grundbegriffe der OOP-Techniken
    Vererbung, Konstruktor (__construct), Dekonstruktor
  • Kontakte-Datenbank mit den Grundfunktionen
    INSERT, SELECT, UPDATE, DELETE
    moderne Vorgehensweise mit prepare und try/catch
    Bereitstellung der Tabelle kontakt über kontakt.sql - Import mit phpmyadmin
  • Backup-Techniken für PHP / MySQL Projekte
    Empfehlung: Testserver und Produktionsserver (ggf. noch Backupserver)
    1) Webserver-Verzeichnis per FTP (besser SFTP) übertragen und bedenken ggf. die config.inc.php und .htaccess anzupassen
    2) Datenbanktabellen (als DUMP) über Exportieren mit phpmyadmin speichern
  • Problem bei großen Datenbanken: Laufzeit von PHP-Skripten auf Servern beschränkt (siehe php.ini)
    Lösung: www.mysqldumper.de - Skriptsammlung für Sicherungen von größeren Projekten und Unterstützung von automatischen Sicherungen von Datenbanken
  • Konfigurationsdateien für die XAMPP-Umgebung:
    Apache: httpd.conf
    PHP: php.ini
    MySQL: my.cnf (oder auch my.ini)

Freitag, 18.06.2010, 08.30 - 16.00 Uhr

  • Rekapitulation und TN-Fragen
  • Analyse der Grundskripte zur Kontakteverwaltung (Jahrgang 2006)
    insbesondere die grafische Darstellung (Nassi-Shneiderman Diagramm - Wikipedia) für loeschen.php
    Trick hier: im <form> für den Löschen-Button verbirgt sich eine verborgenes <input name="ok"> und die Methode POST, dadurch kann das Skript erst einmal die Daten darstellen und nachfragen  - und in einem rechten Abarbeitungsweg mit demselben Skript dann das tatsächliche Löschen durchführen!

loeschen-ns-diagramm

  • Ausführliche Analyse der überarbeiteten Kontakteverwaltung (Jahrgang 2008)
    besondere db.inc.php per require integriert (class Singleton)
    Aufruf in index.php: Singleton::holeVerbindung()
    Fehleranalyse für den aktuellen Xampp (mit PHP 5.3.1): siehe PHP-chm-Handbuch - Sprachreferenz - Klassen und Objekte (PHP 5) - Static Schlüsselwort
  • require() vs. include()
    bei Nutzung von require muss die Einbindung des Codes funktionieren, sonst ist das Skript zu Ende, bei include würde es weitergehen (engl. required  - wird benötigt)
    bei der Verwendung in Schleifen sollte include genutzt werden
  • Ein neuer "Server": ein Ubuntu 10.04 Desktop LTS (Long Term Support)
    als Virtuelle Maschine mit der Software VirtualBox
    (Anm.: früher Innotek - dann SUN - heute ORACLE !)
    Empfehlung für professionelle Testumgebung: Debian Server (ohne grafischen Desktop!) und eine passende PHP-Version passend zu Ihrem Produktionsserver
  • Tools für Server-Fernwartung und Datei-Operationen:
    FTP-Programm: Filezilla, WinSCP
    SSH-Client: PuTTY (bitte unbedingt SSH im Webhosting-Paket haben!)
    Editoren/IDE (Entwicklungsumgebungen): Netbeans (auch dt., viele Programmiersprachen, Community mit Beispielen, Videos, Debugging mit XDebug siehe Kopien), Ecplipse PDT (nur engl., ohne Installation lauffähig)
  • Cookies
    Client-seitige Text-Info-Dateien von Servern dort hinterlegt
    Windows XP - IE Browser: z.B. C:\Dokumente und Einstellungen\benutzername\cookies
    Windows XP - Moz FF: in der FF-Profilverwaltung des Users (siehe Extras - Einstellungen - Datenschutz - ...)
    nicht in Notepad (Editor) von Windows öffnen, da Umbrüche "fehlen"
    Befehl: set_cookie(), Array $_COOKIE[]
  • Sessions
    Server-seitige Speicherungen von Infos eines Besuchers
    session.save_path Variable bitte mit phpinfo() checken (Xampp: c:\xampp\tmp)
    Befehle: session_start(), session_destroy(), Array $_SESSION[]
  • Übungsempfehlung zur Wiederholung und Fortsetzung der gelernten Techniken:
    mit Netbeans ein neues PHP-Beispiel-Projekt "Air Alliance" umsetzen, besonders gut hier, dass das Projekt Hilfe-html-Seiten mitbringt, um das Projekt zu implementieren
  • Feedback und letzte Fragen und Anmerkungen

Vielen Dank für Ihr positives Feedback und Ihre Anregungen - insbesondere für Ihr gezeigtes Interesse an den weiteren Seminaren unserer Online Design Seminarreihe.
Ihr Trainer Joe Brandes, Braunschweig, 2010-06-18

 

  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