59
1 / 59 © Gerhard Breitenfellner 01.02.2018 - projekt-db-html-php-mysql.docx „UNTERRICHTSPAKET“ DATENBANK – HTML – PHP – MYSQL

UNTERRICHTSPAKET“ DATENBANK HTML PHP€¦ · 3 / 59 © Gerhard Breitenfellner 01.02.2018 - projekt-db-html-php-mysql.docx 1. DATENBANK Einfache Definition: Eine Datenbank verwaltet

Embed Size (px)

Citation preview

1 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

bdquo UN TER RI C HTS P A KE Tldquo DA TEN B A N K ndash H TM L ndash P HP ndash M Y S Q L

2 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

I N HA L T

1 Datenbank 3

Datenbankbegriffe 3

Normalisierung von Datenbanken 5

11 Microsoft ACCESS ndash Entwicklungsumgebung und Anwendungssoftware = Eine bdquografische Oberflaumlche fuumlr SQLldquo 9

111 Struktur einer Access ndash Tabelle 9

112 Entwurf eines Access ndash Formulars 10

113 Access ndash Abfrage 10

114 SQL ndash bdquoStruktured Query Languageldquo 11

2 Webseitenerstellung 13

21 Editor 13

211 Tabelle und Formular im HTML-Code 13

hellip22 Content Managemant Systems (CMS) 14

23 Cascading Style Sheets (CSS) 16

3 Einen PHP-faumlhigen Webserver installieren 18

4 Das PHP ndash HTML - Sprachkonzept 19

41 PHP ndash Programme am bdquolocalhostldquo starten 20

42 Variablen und Kontrollstrukturen in PHP 21

421 Rechenoperationen 23

422Vergleichsoperationen 24

423 Kontrollstrukturen 25

424 Formular und Programm 27

425 Formular und Programm in einer Datei 29

5 MySQL ndash die (Internet-)Datenbank 32

6 PHP und MySQL (httpwwwphp-kurscom) 36

611Webseiten mit Formular - Einleseformular 37

62 Uumlbersicht uumlber weitere ndash MySQL ndash PHP ndash Funktionen 40

7 ANHANG 41

71 Session 41

72 Array (aus httpwwwschattenbaumnet) 49

73 Php und csv-Dateizugriff (csvphp dateicsv) 52

74 Einbindung von bdquoJavascriptldquo 56

75 PDO ab PHP 51 58

3 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

1 DATENBANK

Einfache Definition

Eine Datenbank verwaltet sach- undoder personenbezogene Daten gleich einer bdquoKarteildquo auf elektronischer

Basis Das Programmsystem regelt die Beziehungen zwischen den Dateneintragungen es sortiert sucht und

filtert Daten und kann daruumlber hinaus komplexe Berechnungen durchfuumlhren Der Begriff bdquoRelationale

Datenbankldquo bezeichnet Datenbankmodelle die mehrere bdquoKarteienldquo welche in bestimmter Beziehung

(Relation) zu einander stehen

Definition aus httpwwwdatenbanken-verstehendedatenbank-grundlagendatenbank

Eine Datenbank ist ein elektronisches Verwaltungssystem das besonders mit groszligen Datenmengen effizient

widerspruchsfrei und dauerhaft umgehen muss und logische Zusammenhaumlnge digital abbilden kann

Es koumlnnen Datenbestaumlnde aus verschiedenen Teilmengen zusammengestellt und bedarfsgerecht fuumlr

Anwendungsprogramme und deren Benutzern angezeigt werden

DATENBANKBEGRIFFE

Datenbank (database) Das gesamte System Verwaltungsstruktur und Daten

Datensatz (record) Ein in sich zusammenhaumlngender Eintrag in der Datenbank (Zeile)

Datenfeld (field) Ein struktureller Teil eines Datensatzes (Spalte) bestehend aus

Feldname Felddatentyp und Feldinhalt

Tabelle (table) Das bdquoBasisobjektldquo und haumlufigste Darstellungsform der Datenbankeintraumlge

Abfrage (query) siehe SQL

Datenbank-Modellierung Form der strukturierten Datenspeicherung Es beschreibt die Art und die Struktur

der Daten und ihrer Beziehungen (damopdf)

4 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Relationales Datenbank - Modell (enthaumllt zumindest 2 Tabellen die in einer bdquoRelationldquo zueinander stehen

11 Beziehung = 1 DS der Haupttabelle steht genau zu einem DS der Nebentabelle in Beziehung

1n Beziehung = 1 Datensatz der Haupttabelle steht zu n DS der Nebentabelle in Beziehung

mn (ohne Normalisierung))

httppamdmssourceforgenetpamdmshtml

Primaumlrschluumlssel (Primary Key) Ein Primaumlrschluumlssel-Feld identifiziert den Datensatz bdquoeindeutigldquo Der Eintrag

kann und darf nur einmal in der Tabelle vorkommen

5 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG VON DATENBANKEN

httpsdewikipediaorgwikiNormalisierung_(Datenbank)

ERSTE NORMALFORM (1NF)

Die Erste Normalform (1NF) ist dann gegeben wenn alle Informationen in einer Tabelle atomar vorliegen

Es bedeutet dass jede Information innerhalb einer Tabelle eine eigene Tabellenspalte bekommt und

zusammenhaumlngende Informationen wie zum Beispiel die Postleitzahl (PLZ) und der Ort nicht in einer

Tabellenspalte vorliegen duumlrfen

(vgl httpwwwdatenbanken-verstehendedatenmodellierungnormalisierungerste-normalform)

6 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ZWEITE NORMALFORM (2NF)

Die zweite Normalform ist ein wichtiger Schritt zu einer voll normalisierten relationalen Datenbank Sie pruumlft ob eine vollstaumlndige funktionale oder nur eine funktionale Abhaumlngigkeit von Werten zu einer bestimmten Teilmenge existiert ( Es entsteht eine bdquoRelationale DBldquo)

7 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

BEISPIEL RELATIONALE DATENBANK hellip bdquoBIBLIOTHEKldquo

OHNE NO RM A LI S IERU NG

AutorNr AutorName BuchNr Buch

1 Theis Thomas 1555 PHP4 Webserverpr Verlag Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Verlag Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Verlag Dtv

4 Greene Graham 1600 Der dritte Mann Verlag Zsolnay

Nach 1 NF

AutorNr AutorNachname AutorVorname BuchNr BuchTitel BuchVerlag

1 Theis Thomas 1555 PHP4 Webserverpr Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Dtv

4 Greene Graham 1600 Der dritte Mann Zsolnay

NACH 2 NF

Autor ndash Tabelle

(Primary Key AutorNr)

AutorNachname AutorVorname AutorNr

Theis Thomas 1

Faschinger Lilian 17

Greene Graham 4

Buch ndash Tabelle

(Primary Key BuchNr Fremdschluumlssel AutorNr)

BuchNr AutorNr BuchTitel BuchVerlag

1479 4 Der stille

Amerikaner

Dtv

1555 1 PHP4

Webserverpr

Galileo

1600 4 Der dritte

Mann

Zsolnay

1888 17 Magdalena

Suumlnderin

Kiepenheuer

amp Witsch

1 n

8 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG EINER DATENBANK (UumlBUNG)

Gegeben ist folgende Tabelle

KategorieNr KategorieName ArtikelNr ArtikelBezeichnung

1 Schrauben 1555 Kreuzschrauben 30mm

4 Naumlgel 1479 Stahlnaumlgel 50mm

4 Naumlgel 1600 Holznaumlgel 50mm

Bringe die Tabelle vorerst in die 1 Normalform (Ergebnis ist nach wie vor nur eine Tabelle)

Bringe nun die Tabelle in die 2 Normalform (Ergebnis sind 2 Tabellen) ndash Kennzeichne die

Primaumlrschluumlsselfelder und das Fremdschluumlssel-Feld und stelle die Relation der Tabellen zueinander grafisch

dar

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

2 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

I N HA L T

1 Datenbank 3

Datenbankbegriffe 3

Normalisierung von Datenbanken 5

11 Microsoft ACCESS ndash Entwicklungsumgebung und Anwendungssoftware = Eine bdquografische Oberflaumlche fuumlr SQLldquo 9

111 Struktur einer Access ndash Tabelle 9

112 Entwurf eines Access ndash Formulars 10

113 Access ndash Abfrage 10

114 SQL ndash bdquoStruktured Query Languageldquo 11

2 Webseitenerstellung 13

21 Editor 13

211 Tabelle und Formular im HTML-Code 13

hellip22 Content Managemant Systems (CMS) 14

23 Cascading Style Sheets (CSS) 16

3 Einen PHP-faumlhigen Webserver installieren 18

4 Das PHP ndash HTML - Sprachkonzept 19

41 PHP ndash Programme am bdquolocalhostldquo starten 20

42 Variablen und Kontrollstrukturen in PHP 21

421 Rechenoperationen 23

422Vergleichsoperationen 24

423 Kontrollstrukturen 25

424 Formular und Programm 27

425 Formular und Programm in einer Datei 29

5 MySQL ndash die (Internet-)Datenbank 32

6 PHP und MySQL (httpwwwphp-kurscom) 36

611Webseiten mit Formular - Einleseformular 37

62 Uumlbersicht uumlber weitere ndash MySQL ndash PHP ndash Funktionen 40

7 ANHANG 41

71 Session 41

72 Array (aus httpwwwschattenbaumnet) 49

73 Php und csv-Dateizugriff (csvphp dateicsv) 52

74 Einbindung von bdquoJavascriptldquo 56

75 PDO ab PHP 51 58

3 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

1 DATENBANK

Einfache Definition

Eine Datenbank verwaltet sach- undoder personenbezogene Daten gleich einer bdquoKarteildquo auf elektronischer

Basis Das Programmsystem regelt die Beziehungen zwischen den Dateneintragungen es sortiert sucht und

filtert Daten und kann daruumlber hinaus komplexe Berechnungen durchfuumlhren Der Begriff bdquoRelationale

Datenbankldquo bezeichnet Datenbankmodelle die mehrere bdquoKarteienldquo welche in bestimmter Beziehung

(Relation) zu einander stehen

Definition aus httpwwwdatenbanken-verstehendedatenbank-grundlagendatenbank

Eine Datenbank ist ein elektronisches Verwaltungssystem das besonders mit groszligen Datenmengen effizient

widerspruchsfrei und dauerhaft umgehen muss und logische Zusammenhaumlnge digital abbilden kann

Es koumlnnen Datenbestaumlnde aus verschiedenen Teilmengen zusammengestellt und bedarfsgerecht fuumlr

Anwendungsprogramme und deren Benutzern angezeigt werden

DATENBANKBEGRIFFE

Datenbank (database) Das gesamte System Verwaltungsstruktur und Daten

Datensatz (record) Ein in sich zusammenhaumlngender Eintrag in der Datenbank (Zeile)

Datenfeld (field) Ein struktureller Teil eines Datensatzes (Spalte) bestehend aus

Feldname Felddatentyp und Feldinhalt

Tabelle (table) Das bdquoBasisobjektldquo und haumlufigste Darstellungsform der Datenbankeintraumlge

Abfrage (query) siehe SQL

Datenbank-Modellierung Form der strukturierten Datenspeicherung Es beschreibt die Art und die Struktur

der Daten und ihrer Beziehungen (damopdf)

4 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Relationales Datenbank - Modell (enthaumllt zumindest 2 Tabellen die in einer bdquoRelationldquo zueinander stehen

11 Beziehung = 1 DS der Haupttabelle steht genau zu einem DS der Nebentabelle in Beziehung

1n Beziehung = 1 Datensatz der Haupttabelle steht zu n DS der Nebentabelle in Beziehung

mn (ohne Normalisierung))

httppamdmssourceforgenetpamdmshtml

Primaumlrschluumlssel (Primary Key) Ein Primaumlrschluumlssel-Feld identifiziert den Datensatz bdquoeindeutigldquo Der Eintrag

kann und darf nur einmal in der Tabelle vorkommen

5 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG VON DATENBANKEN

httpsdewikipediaorgwikiNormalisierung_(Datenbank)

ERSTE NORMALFORM (1NF)

Die Erste Normalform (1NF) ist dann gegeben wenn alle Informationen in einer Tabelle atomar vorliegen

Es bedeutet dass jede Information innerhalb einer Tabelle eine eigene Tabellenspalte bekommt und

zusammenhaumlngende Informationen wie zum Beispiel die Postleitzahl (PLZ) und der Ort nicht in einer

Tabellenspalte vorliegen duumlrfen

(vgl httpwwwdatenbanken-verstehendedatenmodellierungnormalisierungerste-normalform)

6 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ZWEITE NORMALFORM (2NF)

Die zweite Normalform ist ein wichtiger Schritt zu einer voll normalisierten relationalen Datenbank Sie pruumlft ob eine vollstaumlndige funktionale oder nur eine funktionale Abhaumlngigkeit von Werten zu einer bestimmten Teilmenge existiert ( Es entsteht eine bdquoRelationale DBldquo)

7 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

BEISPIEL RELATIONALE DATENBANK hellip bdquoBIBLIOTHEKldquo

OHNE NO RM A LI S IERU NG

AutorNr AutorName BuchNr Buch

1 Theis Thomas 1555 PHP4 Webserverpr Verlag Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Verlag Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Verlag Dtv

4 Greene Graham 1600 Der dritte Mann Verlag Zsolnay

Nach 1 NF

AutorNr AutorNachname AutorVorname BuchNr BuchTitel BuchVerlag

1 Theis Thomas 1555 PHP4 Webserverpr Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Dtv

4 Greene Graham 1600 Der dritte Mann Zsolnay

NACH 2 NF

Autor ndash Tabelle

(Primary Key AutorNr)

AutorNachname AutorVorname AutorNr

Theis Thomas 1

Faschinger Lilian 17

Greene Graham 4

Buch ndash Tabelle

(Primary Key BuchNr Fremdschluumlssel AutorNr)

BuchNr AutorNr BuchTitel BuchVerlag

1479 4 Der stille

Amerikaner

Dtv

1555 1 PHP4

Webserverpr

Galileo

1600 4 Der dritte

Mann

Zsolnay

1888 17 Magdalena

Suumlnderin

Kiepenheuer

amp Witsch

1 n

8 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG EINER DATENBANK (UumlBUNG)

Gegeben ist folgende Tabelle

KategorieNr KategorieName ArtikelNr ArtikelBezeichnung

1 Schrauben 1555 Kreuzschrauben 30mm

4 Naumlgel 1479 Stahlnaumlgel 50mm

4 Naumlgel 1600 Holznaumlgel 50mm

Bringe die Tabelle vorerst in die 1 Normalform (Ergebnis ist nach wie vor nur eine Tabelle)

Bringe nun die Tabelle in die 2 Normalform (Ergebnis sind 2 Tabellen) ndash Kennzeichne die

Primaumlrschluumlsselfelder und das Fremdschluumlssel-Feld und stelle die Relation der Tabellen zueinander grafisch

dar

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

3 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

1 DATENBANK

Einfache Definition

Eine Datenbank verwaltet sach- undoder personenbezogene Daten gleich einer bdquoKarteildquo auf elektronischer

Basis Das Programmsystem regelt die Beziehungen zwischen den Dateneintragungen es sortiert sucht und

filtert Daten und kann daruumlber hinaus komplexe Berechnungen durchfuumlhren Der Begriff bdquoRelationale

Datenbankldquo bezeichnet Datenbankmodelle die mehrere bdquoKarteienldquo welche in bestimmter Beziehung

(Relation) zu einander stehen

Definition aus httpwwwdatenbanken-verstehendedatenbank-grundlagendatenbank

Eine Datenbank ist ein elektronisches Verwaltungssystem das besonders mit groszligen Datenmengen effizient

widerspruchsfrei und dauerhaft umgehen muss und logische Zusammenhaumlnge digital abbilden kann

Es koumlnnen Datenbestaumlnde aus verschiedenen Teilmengen zusammengestellt und bedarfsgerecht fuumlr

Anwendungsprogramme und deren Benutzern angezeigt werden

DATENBANKBEGRIFFE

Datenbank (database) Das gesamte System Verwaltungsstruktur und Daten

Datensatz (record) Ein in sich zusammenhaumlngender Eintrag in der Datenbank (Zeile)

Datenfeld (field) Ein struktureller Teil eines Datensatzes (Spalte) bestehend aus

Feldname Felddatentyp und Feldinhalt

Tabelle (table) Das bdquoBasisobjektldquo und haumlufigste Darstellungsform der Datenbankeintraumlge

Abfrage (query) siehe SQL

Datenbank-Modellierung Form der strukturierten Datenspeicherung Es beschreibt die Art und die Struktur

der Daten und ihrer Beziehungen (damopdf)

4 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Relationales Datenbank - Modell (enthaumllt zumindest 2 Tabellen die in einer bdquoRelationldquo zueinander stehen

11 Beziehung = 1 DS der Haupttabelle steht genau zu einem DS der Nebentabelle in Beziehung

1n Beziehung = 1 Datensatz der Haupttabelle steht zu n DS der Nebentabelle in Beziehung

mn (ohne Normalisierung))

httppamdmssourceforgenetpamdmshtml

Primaumlrschluumlssel (Primary Key) Ein Primaumlrschluumlssel-Feld identifiziert den Datensatz bdquoeindeutigldquo Der Eintrag

kann und darf nur einmal in der Tabelle vorkommen

5 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG VON DATENBANKEN

httpsdewikipediaorgwikiNormalisierung_(Datenbank)

ERSTE NORMALFORM (1NF)

Die Erste Normalform (1NF) ist dann gegeben wenn alle Informationen in einer Tabelle atomar vorliegen

Es bedeutet dass jede Information innerhalb einer Tabelle eine eigene Tabellenspalte bekommt und

zusammenhaumlngende Informationen wie zum Beispiel die Postleitzahl (PLZ) und der Ort nicht in einer

Tabellenspalte vorliegen duumlrfen

(vgl httpwwwdatenbanken-verstehendedatenmodellierungnormalisierungerste-normalform)

6 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ZWEITE NORMALFORM (2NF)

Die zweite Normalform ist ein wichtiger Schritt zu einer voll normalisierten relationalen Datenbank Sie pruumlft ob eine vollstaumlndige funktionale oder nur eine funktionale Abhaumlngigkeit von Werten zu einer bestimmten Teilmenge existiert ( Es entsteht eine bdquoRelationale DBldquo)

7 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

BEISPIEL RELATIONALE DATENBANK hellip bdquoBIBLIOTHEKldquo

OHNE NO RM A LI S IERU NG

AutorNr AutorName BuchNr Buch

1 Theis Thomas 1555 PHP4 Webserverpr Verlag Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Verlag Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Verlag Dtv

4 Greene Graham 1600 Der dritte Mann Verlag Zsolnay

Nach 1 NF

AutorNr AutorNachname AutorVorname BuchNr BuchTitel BuchVerlag

1 Theis Thomas 1555 PHP4 Webserverpr Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Dtv

4 Greene Graham 1600 Der dritte Mann Zsolnay

NACH 2 NF

Autor ndash Tabelle

(Primary Key AutorNr)

AutorNachname AutorVorname AutorNr

Theis Thomas 1

Faschinger Lilian 17

Greene Graham 4

Buch ndash Tabelle

(Primary Key BuchNr Fremdschluumlssel AutorNr)

BuchNr AutorNr BuchTitel BuchVerlag

1479 4 Der stille

Amerikaner

Dtv

1555 1 PHP4

Webserverpr

Galileo

1600 4 Der dritte

Mann

Zsolnay

1888 17 Magdalena

Suumlnderin

Kiepenheuer

amp Witsch

1 n

8 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG EINER DATENBANK (UumlBUNG)

Gegeben ist folgende Tabelle

KategorieNr KategorieName ArtikelNr ArtikelBezeichnung

1 Schrauben 1555 Kreuzschrauben 30mm

4 Naumlgel 1479 Stahlnaumlgel 50mm

4 Naumlgel 1600 Holznaumlgel 50mm

Bringe die Tabelle vorerst in die 1 Normalform (Ergebnis ist nach wie vor nur eine Tabelle)

Bringe nun die Tabelle in die 2 Normalform (Ergebnis sind 2 Tabellen) ndash Kennzeichne die

Primaumlrschluumlsselfelder und das Fremdschluumlssel-Feld und stelle die Relation der Tabellen zueinander grafisch

dar

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

4 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Relationales Datenbank - Modell (enthaumllt zumindest 2 Tabellen die in einer bdquoRelationldquo zueinander stehen

11 Beziehung = 1 DS der Haupttabelle steht genau zu einem DS der Nebentabelle in Beziehung

1n Beziehung = 1 Datensatz der Haupttabelle steht zu n DS der Nebentabelle in Beziehung

mn (ohne Normalisierung))

httppamdmssourceforgenetpamdmshtml

Primaumlrschluumlssel (Primary Key) Ein Primaumlrschluumlssel-Feld identifiziert den Datensatz bdquoeindeutigldquo Der Eintrag

kann und darf nur einmal in der Tabelle vorkommen

5 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG VON DATENBANKEN

httpsdewikipediaorgwikiNormalisierung_(Datenbank)

ERSTE NORMALFORM (1NF)

Die Erste Normalform (1NF) ist dann gegeben wenn alle Informationen in einer Tabelle atomar vorliegen

Es bedeutet dass jede Information innerhalb einer Tabelle eine eigene Tabellenspalte bekommt und

zusammenhaumlngende Informationen wie zum Beispiel die Postleitzahl (PLZ) und der Ort nicht in einer

Tabellenspalte vorliegen duumlrfen

(vgl httpwwwdatenbanken-verstehendedatenmodellierungnormalisierungerste-normalform)

6 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ZWEITE NORMALFORM (2NF)

Die zweite Normalform ist ein wichtiger Schritt zu einer voll normalisierten relationalen Datenbank Sie pruumlft ob eine vollstaumlndige funktionale oder nur eine funktionale Abhaumlngigkeit von Werten zu einer bestimmten Teilmenge existiert ( Es entsteht eine bdquoRelationale DBldquo)

7 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

BEISPIEL RELATIONALE DATENBANK hellip bdquoBIBLIOTHEKldquo

OHNE NO RM A LI S IERU NG

AutorNr AutorName BuchNr Buch

1 Theis Thomas 1555 PHP4 Webserverpr Verlag Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Verlag Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Verlag Dtv

4 Greene Graham 1600 Der dritte Mann Verlag Zsolnay

Nach 1 NF

AutorNr AutorNachname AutorVorname BuchNr BuchTitel BuchVerlag

1 Theis Thomas 1555 PHP4 Webserverpr Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Dtv

4 Greene Graham 1600 Der dritte Mann Zsolnay

NACH 2 NF

Autor ndash Tabelle

(Primary Key AutorNr)

AutorNachname AutorVorname AutorNr

Theis Thomas 1

Faschinger Lilian 17

Greene Graham 4

Buch ndash Tabelle

(Primary Key BuchNr Fremdschluumlssel AutorNr)

BuchNr AutorNr BuchTitel BuchVerlag

1479 4 Der stille

Amerikaner

Dtv

1555 1 PHP4

Webserverpr

Galileo

1600 4 Der dritte

Mann

Zsolnay

1888 17 Magdalena

Suumlnderin

Kiepenheuer

amp Witsch

1 n

8 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG EINER DATENBANK (UumlBUNG)

Gegeben ist folgende Tabelle

KategorieNr KategorieName ArtikelNr ArtikelBezeichnung

1 Schrauben 1555 Kreuzschrauben 30mm

4 Naumlgel 1479 Stahlnaumlgel 50mm

4 Naumlgel 1600 Holznaumlgel 50mm

Bringe die Tabelle vorerst in die 1 Normalform (Ergebnis ist nach wie vor nur eine Tabelle)

Bringe nun die Tabelle in die 2 Normalform (Ergebnis sind 2 Tabellen) ndash Kennzeichne die

Primaumlrschluumlsselfelder und das Fremdschluumlssel-Feld und stelle die Relation der Tabellen zueinander grafisch

dar

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

5 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG VON DATENBANKEN

httpsdewikipediaorgwikiNormalisierung_(Datenbank)

ERSTE NORMALFORM (1NF)

Die Erste Normalform (1NF) ist dann gegeben wenn alle Informationen in einer Tabelle atomar vorliegen

Es bedeutet dass jede Information innerhalb einer Tabelle eine eigene Tabellenspalte bekommt und

zusammenhaumlngende Informationen wie zum Beispiel die Postleitzahl (PLZ) und der Ort nicht in einer

Tabellenspalte vorliegen duumlrfen

(vgl httpwwwdatenbanken-verstehendedatenmodellierungnormalisierungerste-normalform)

6 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ZWEITE NORMALFORM (2NF)

Die zweite Normalform ist ein wichtiger Schritt zu einer voll normalisierten relationalen Datenbank Sie pruumlft ob eine vollstaumlndige funktionale oder nur eine funktionale Abhaumlngigkeit von Werten zu einer bestimmten Teilmenge existiert ( Es entsteht eine bdquoRelationale DBldquo)

7 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

BEISPIEL RELATIONALE DATENBANK hellip bdquoBIBLIOTHEKldquo

OHNE NO RM A LI S IERU NG

AutorNr AutorName BuchNr Buch

1 Theis Thomas 1555 PHP4 Webserverpr Verlag Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Verlag Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Verlag Dtv

4 Greene Graham 1600 Der dritte Mann Verlag Zsolnay

Nach 1 NF

AutorNr AutorNachname AutorVorname BuchNr BuchTitel BuchVerlag

1 Theis Thomas 1555 PHP4 Webserverpr Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Dtv

4 Greene Graham 1600 Der dritte Mann Zsolnay

NACH 2 NF

Autor ndash Tabelle

(Primary Key AutorNr)

AutorNachname AutorVorname AutorNr

Theis Thomas 1

Faschinger Lilian 17

Greene Graham 4

Buch ndash Tabelle

(Primary Key BuchNr Fremdschluumlssel AutorNr)

BuchNr AutorNr BuchTitel BuchVerlag

1479 4 Der stille

Amerikaner

Dtv

1555 1 PHP4

Webserverpr

Galileo

1600 4 Der dritte

Mann

Zsolnay

1888 17 Magdalena

Suumlnderin

Kiepenheuer

amp Witsch

1 n

8 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG EINER DATENBANK (UumlBUNG)

Gegeben ist folgende Tabelle

KategorieNr KategorieName ArtikelNr ArtikelBezeichnung

1 Schrauben 1555 Kreuzschrauben 30mm

4 Naumlgel 1479 Stahlnaumlgel 50mm

4 Naumlgel 1600 Holznaumlgel 50mm

Bringe die Tabelle vorerst in die 1 Normalform (Ergebnis ist nach wie vor nur eine Tabelle)

Bringe nun die Tabelle in die 2 Normalform (Ergebnis sind 2 Tabellen) ndash Kennzeichne die

Primaumlrschluumlsselfelder und das Fremdschluumlssel-Feld und stelle die Relation der Tabellen zueinander grafisch

dar

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

6 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ZWEITE NORMALFORM (2NF)

Die zweite Normalform ist ein wichtiger Schritt zu einer voll normalisierten relationalen Datenbank Sie pruumlft ob eine vollstaumlndige funktionale oder nur eine funktionale Abhaumlngigkeit von Werten zu einer bestimmten Teilmenge existiert ( Es entsteht eine bdquoRelationale DBldquo)

7 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

BEISPIEL RELATIONALE DATENBANK hellip bdquoBIBLIOTHEKldquo

OHNE NO RM A LI S IERU NG

AutorNr AutorName BuchNr Buch

1 Theis Thomas 1555 PHP4 Webserverpr Verlag Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Verlag Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Verlag Dtv

4 Greene Graham 1600 Der dritte Mann Verlag Zsolnay

Nach 1 NF

AutorNr AutorNachname AutorVorname BuchNr BuchTitel BuchVerlag

1 Theis Thomas 1555 PHP4 Webserverpr Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Dtv

4 Greene Graham 1600 Der dritte Mann Zsolnay

NACH 2 NF

Autor ndash Tabelle

(Primary Key AutorNr)

AutorNachname AutorVorname AutorNr

Theis Thomas 1

Faschinger Lilian 17

Greene Graham 4

Buch ndash Tabelle

(Primary Key BuchNr Fremdschluumlssel AutorNr)

BuchNr AutorNr BuchTitel BuchVerlag

1479 4 Der stille

Amerikaner

Dtv

1555 1 PHP4

Webserverpr

Galileo

1600 4 Der dritte

Mann

Zsolnay

1888 17 Magdalena

Suumlnderin

Kiepenheuer

amp Witsch

1 n

8 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG EINER DATENBANK (UumlBUNG)

Gegeben ist folgende Tabelle

KategorieNr KategorieName ArtikelNr ArtikelBezeichnung

1 Schrauben 1555 Kreuzschrauben 30mm

4 Naumlgel 1479 Stahlnaumlgel 50mm

4 Naumlgel 1600 Holznaumlgel 50mm

Bringe die Tabelle vorerst in die 1 Normalform (Ergebnis ist nach wie vor nur eine Tabelle)

Bringe nun die Tabelle in die 2 Normalform (Ergebnis sind 2 Tabellen) ndash Kennzeichne die

Primaumlrschluumlsselfelder und das Fremdschluumlssel-Feld und stelle die Relation der Tabellen zueinander grafisch

dar

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

7 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

BEISPIEL RELATIONALE DATENBANK hellip bdquoBIBLIOTHEKldquo

OHNE NO RM A LI S IERU NG

AutorNr AutorName BuchNr Buch

1 Theis Thomas 1555 PHP4 Webserverpr Verlag Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Verlag Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Verlag Dtv

4 Greene Graham 1600 Der dritte Mann Verlag Zsolnay

Nach 1 NF

AutorNr AutorNachname AutorVorname BuchNr BuchTitel BuchVerlag

1 Theis Thomas 1555 PHP4 Webserverpr Galileo

17 Faschinger Lilian 1888 Magdalena Suumlnderin Kiepenheuer amp Witsch

4 Greene Graham 1479 Der stille Amerikaner Dtv

4 Greene Graham 1600 Der dritte Mann Zsolnay

NACH 2 NF

Autor ndash Tabelle

(Primary Key AutorNr)

AutorNachname AutorVorname AutorNr

Theis Thomas 1

Faschinger Lilian 17

Greene Graham 4

Buch ndash Tabelle

(Primary Key BuchNr Fremdschluumlssel AutorNr)

BuchNr AutorNr BuchTitel BuchVerlag

1479 4 Der stille

Amerikaner

Dtv

1555 1 PHP4

Webserverpr

Galileo

1600 4 Der dritte

Mann

Zsolnay

1888 17 Magdalena

Suumlnderin

Kiepenheuer

amp Witsch

1 n

8 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG EINER DATENBANK (UumlBUNG)

Gegeben ist folgende Tabelle

KategorieNr KategorieName ArtikelNr ArtikelBezeichnung

1 Schrauben 1555 Kreuzschrauben 30mm

4 Naumlgel 1479 Stahlnaumlgel 50mm

4 Naumlgel 1600 Holznaumlgel 50mm

Bringe die Tabelle vorerst in die 1 Normalform (Ergebnis ist nach wie vor nur eine Tabelle)

Bringe nun die Tabelle in die 2 Normalform (Ergebnis sind 2 Tabellen) ndash Kennzeichne die

Primaumlrschluumlsselfelder und das Fremdschluumlssel-Feld und stelle die Relation der Tabellen zueinander grafisch

dar

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

8 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

NORMALISIERUNG EINER DATENBANK (UumlBUNG)

Gegeben ist folgende Tabelle

KategorieNr KategorieName ArtikelNr ArtikelBezeichnung

1 Schrauben 1555 Kreuzschrauben 30mm

4 Naumlgel 1479 Stahlnaumlgel 50mm

4 Naumlgel 1600 Holznaumlgel 50mm

Bringe die Tabelle vorerst in die 1 Normalform (Ergebnis ist nach wie vor nur eine Tabelle)

Bringe nun die Tabelle in die 2 Normalform (Ergebnis sind 2 Tabellen) ndash Kennzeichne die

Primaumlrschluumlsselfelder und das Fremdschluumlssel-Feld und stelle die Relation der Tabellen zueinander grafisch

dar

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

9 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

11 MICROSOFT ACCESS ndash ENTWICKLUNGSUMGEBUNG UND

ANWENDUNGSSOFTWARE = EINE bdquoGRAFISCHE OBERFLAumlCHE FUumlR SQLldquo

Tutorial httpwwwaccess-tutorialde

GRUNDLAGEN

Wichtige Objekte einer ACCESS ndash Datenbank

a) Tabelle (table) bdquoBasisobjekt(e)ldquo zur Speicherung aller Datensaumltze

b) Formular (form) Benutzeroberflaumlche zur Verwaltung der Datenbank

c) Abfrage (query) Automatisierte bdquoFragenldquo an die Datenbank mit Ergebnis (Dynaset)

d) Bericht (report) Zusammenstellung von einzelnen Daten zum uumlbersichtlichen Ausdrucken

e) Makros und Module bdquoProgrammeldquo zur Steuerung der Datenbankbedienung

111 STRUKTUR EINER ACCESS ndash TABELLE

Eine neue Datenbank wird uumlber die Vorlage bdquoLeere Datenbankldquo mit einem neuen Dateinamen und der

Extension sbquoaccdblsquo (ab Office 2007 vorher mdb) erstellt

Eine NEUE TABELLE wird im Entwurfsmodus erstellt in dem die bdquoStrukturldquo der Tabelle entwickelt wird

bdquoFeldnamen und Felddatentypen werden deklariert

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

10 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung fuumlr eine SchuumllerInnendatenbank bdquoklasseaccdbldquo - Tabelle bdquoschuelerInnenldquo

Entwurfsansicht

Feldname Felddatentyp

id Autowert ndash Long I

nachname Text - 50 Zeichen

vorname Text - 30 Zeichen

jahre Zahl - Byte

plz Text ndash 9 Zeichen

ort Text - 30 Zeichen

Kontostand Waumlhrung

Datenblattansicht

Name Vorname hellip id

Huber Karl hellip 56734

Mayr Gabi hellip 12110

Mayr Sepp hellip -6723

Huber Kathi hellip 71

Schwaiger Anna hellip 2

Houmlrl Josef hellip 99999

112 ENTWURF EINES ACCESS ndash FORMULARS

In der Entwurfsansicht werden die bdquoEigenschaftenldquo der Objekte (Auswahltyp) eines Formulares eingestellt

und somit Funktion und Layout des Formulares manipuliert Die wichtigste Eigenschaft des Auswahltyps

bdquoFormularldquo bdquoDatensatzquelleldquo

113 ACCESS ndash ABFRAGE

Abfrage ndash Entwurf

Abfrage ndash Ergebnis (dynaset)

SQL bdquoSELECT nachnameort kontostand FROM

adressen WHERE kontostand gt 1000

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

11 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

114 SQL ndash bdquoSTRUKTURED QUERY LANGUAGEldquo

Im Menuuml ndash bdquoAnsichtldquo kann man zur SQL ndash Ansicht wechseln

SQL ist eine bdquoDatenbankspracheldquo zur Formulierung von Abfragen (queries)

SELECT nachname ort kontostand FROM adressen WHERE kontostandgt1000

SELECT nachname ort kontostand FROM adressen WHERE nachname NOT LIKE H Beachte Als Stellvertreterzeichen wird in ACCESS ein fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

Standardmaumlszligig wird in SQL allerdings ein _ (Unterstrich) fuumlr ein einzelnes ein fuumlr mehrere Zeichen verwendet

INSERT INTO adressen(nachname kontostand) VALUES(Mayr 105040)

dieser SQL ndash Befehl erstellt in Access eine bdquoAnfuumlgeabfrageldquo

Die wichtigsten SQL-Befehle

CREATE TABLE - erzeugt eine neue leere Tabelle in der aktiven Datenbank deren Struktur hier beschrieben wird

CREATE TABLE Tabellenname ( Feldname Datentyp [ (Groumlszlige) ] Feldtyp [] [] )

CREATE TABLE kunden (id INTEGER PRIMARY KEY nachname VARCHAR eintrittsjahr INTEGER NOT NULL)

Auswahl

der Felder Auswahl der

Tabelle

Auswahl

des Filters

Anfuumlgen an

Tabelle

Auswahl der

Felder

Angabe der

Inhalte

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

12 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

DELETE FROM - Datensaumltze aus einer Datenbanktabelle loumlschen

DELETE FROM Tabellenname [ WHERE Bedingung ]

DELETE FROM artikel WHERE artikelname Like Hammer

DROP TABLE - leere Datentabellen loumlschen

DROP TABLE Tabellenname

DROP TABLE kunden

INSERT - Datensaumltze einfuumlgen

INSERT INTO Tabellenname [( Feldname [] )] VALUES ( Wertliste [] )

INSERT INTO kunden (nachname eintrittsjahr) VALUES (Muumlller2004)

REPLACE ndash Datensatz ersetzen (gesteuert uumlber Primary Key) bzw einfuumlgen wenn es ihn noch nicht gibt

REPLACE INTO Tabellenname VALUES (gesamte Wertliste)

REPLACE INTO kunden VALUES (5 Harald MuumlllerAlmerstr33 Saalfelden)

UPDATE ndash einen oder mehrere Datensaumltze Feldweise erneuern

UPDATE Tabellenname SET Feldname=Wert hellip WHERE Feldname=Wert

UPDATE kunden SET nachname=Muumlller WHERE Ort Like Salzburg

SELECT - Daten selektieren abfragen (hellip alle Spalten)

SELECT FROM tabellenname WHERE Bedingung

SELECT FROM kunden WHERE eintrittsjahrgt=2003

hellip ORDER BY sortiert die Datensaumltze der Ergebnismenge

SELECT helliphellip ORDER BY Feldname

SELECT FROM kunden WHERE eintrittsjahrgt=2003 ORDER BY eintrittsjahr

hellip alle Spalten aber nur jene Datensaumltze die juumlnger sin dals 2003 ndash nach dem eintrittsjahr sortiert

SQL- Uumlbersicht httpswwwphp-einfachdemysql-tutorialuebersicht-sql-befehle

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

13 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

2 WEBSEITENERSTELLUNG

21 EDITOR

httpnotepad-plus-plusorg

211 TABELLE UND FORMULAR IM HTML-CODE

Tabellen werden vor allem hinsichtlich einer geordneten Darstellung von Daten (z B Datenbank) verwendet

HTML ndash Code einer Tabelle

Text

lttable border=1gt lt-- Eroumlffnen einer Tabelle --gt

lttrgt lt-- Eroumlffnen einer neuen Zeile --gt

lttd width=50gtTextlttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten mit Inhalt--gt

lttd width=50gtampnbsplttdgt lt-- Eroumlffnen und Schlieszligen einer Spalten ohne Inhalt--gt

lttrgt lt-- Schlieszligen der Zeile --gt

lttablegt lt-- Schlieszligen der Tabelle --gt

Formulare werden haumlufig zum Austausch von Daten zwischen Webseiten bzw zur Dateneingabe fuumlr den

User verwendet

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

14 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

HTML ndash Code eines Formulars

ltform method=POST action=urlgt

ltinput type=text name=text1 size=20gt

ltinput type=submit value=Abschicken

name=button1gt

ltformgt

ltmdashmethod=rdquoPOSTrdquo bedeutet dass Parameter

(zB Eingaben in ein Textfeld beim Aktivieren

des bdquosubmitldquo ndash Buttons mitgeschickt werden

bdquoactionldquo ruft eine Datei auf

input type=ldquotextldquo hellip Textfeld

input type=submit hellip

ldquoAktivierungsschaltflaumlche ldquovaluerdquo hellip Text auf

dem Button

Die Uumlbergabe von Parametern wie zB Eingaben im Textfeld kann in Datenbanken sowie in PHP ndash

Programm als Variablen verwendet werden

Weitere Formularfelder

ltinput type=checkbox value=checkbox checkedgt ldquoKontrollkaumlstchenrdquo

ltselect size=1 name=namegt

ltoption selectedgtAuswahl1ltoptiongt

ltoptiongtAuswahl2ltoptiongt

ltselectgt bdquoDropdownfeldldquo

input type=radio value=V1 checked name=R1gt bdquoOptionsfeldldquo

hellip

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

15 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

22 Content Managemant Systems (CMS)

Ein Content-Management-System (kurz CMS uumlbersetzt Inhaltsverwaltungssystem) ist eine Web-

Entwicklungsumgebung zur gemeinschaftlichen Erstellung Bearbeitung und Organisation von Webseiten

Man arbeitet im bdquoBackendldquo und sieht das Ergebnis im bdquoFrontendldquo Der darzustellende Informationsgehalt

wird in diesem Zusammenhang als Content (Inhalt) bezeichnet der in Datenbanken abgelegt wird

Eingebundene Templates sorgen fuumlr das Design In Typo3 bspw Werden somit alle Sprachelemente

(HTML-PHP-SQLhellip) in einer Entwicklungsumgebung automatisiert und daruumlber hinaus mit einer eigenen

Skriptsprache bdquoTypoScriptldquo bedient

httpbyteatglossarcontent-management-systemhtml httpdewikipediaorgwikiContent-Management-System

Typo3 Backend

Joomla Backend

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

16 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

23 CASCADING STYLE SHEETS (CSS)

bdquoTemplatesldquo Webseiten-Vorlagen httpdewikipediaorgwikiCascading_Style_Sheets

Der Source ndash Code einer Webseite besteht aus ASCII ndash Text und kann mit jedem einfachen Texteditor

erstellt werden Z B EDITOR aus dem bdquoZubehoumlrldquo

httpwwww3schoolscomcss

Beispiel in dem das Design ltstylegt (im Dokumentkopf) und Inhalt ltbodygt in einer Datei vereint sind

lthtmlgt

ltheadgt

ltstylegt

body

background-colord0e4fe

h1

colororange

text-aligncenter

p

font-familyTimes New Roman

font-size20px

ltstylegt

ltheadgt

ltbodygt

lth1gtCSS examplelth1gt

ltpgtThis is a paragraphltpgt

ltbodygt

lthtmlgt

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

17 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgelagertes Design

Inhaltsdatei

lthtmlgt

ltheadgt

ltlink rel=stylesheet type=textcss

href=formatcssgt

ltheadgt

ltbodygt

lth1gtHURRAlth1gt

ltpgtEinfacher Textltpgt

ltbodygt

lthtmlgt

CSS-Datei formatcss

h1

colorblue

text-aligncenter

body

background-colorb0c4de

p

font-familyTimes New Roman

font-size28px

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

18 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

3 EINEN PHP-FAumlHIGEN WEBSERVER INSTALLIEREN

PHP ist eine bdquoserverbasierteldquo Sprache (dh Programmausfuumlhrung am Server nur der HTML-Output wird

zum Client geschickt) Um in weiterer Folge PHP ndash Programme testen zu koumlnnen ist es noumltig die erstellten

Dateien auf einem PHPndashfaumlhigen Webserver zu veroumlffentlichen

Zum Testen waumlhrend der Entwicklungsphase empfiehlt sich die lokale Installation eines bdquoWebserversldquo auf

Ihrem Rechner

Ein sehr praktisches Beispiel ist der Apache-Server von XAMPP

httpwwwapachefriendsorgxampphtml

Diese Version enthaumllt unter anderem Apache MySQL PHP und vieles mehr

Nicht immer funktionieren Webserverinstallationen sofort einwandfrei Vor allem Firewall-Einstellungen

aber auch Programme wie bdquoSkypeldquo verhindern den Start eines lokalen Webservers (Port-Belegungs-

Fehler) Erfahrene User konfigurieren die Datei bdquohttpdconfldquo im Ordner apacheconf

httpwwwbreitenfellnerinfoklassenbereichdownloakPortbelegungpdf

Waumlhlen Sie im Browser die Adresse 127001 (httplocalhost)

Wichtig Wird ein Proxy-Server verwendet muss er eventuell fuumlr lokale Adressen umgangen werden

(Internetoptionen ndash LAN-Einstellungen)

Das Hauptverzeichnis Ihres Webservers ist auch mit der IP-Nr Ihres Rechners anwaumlhlbar (Tip bdquoipconfigldquo

im DOS-Fenster) Eine bdquoDomain ndash Simulationldquo unter Windows koumlnnen Sie in der Datei

bdquoCWINDOWSSYSTEM32DRIVERSETChostsldquo konfigurieren

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

19 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

4 DAS PHP ndash HTML - SPRACHKONZEPT

PHP (Hypertext Preprocessor) ist eine Skriptsprache die in den HTML - Code eingebettet ist und auf einem

WWW-Server abgelegte Webdokumente dynamisch aufbereitet Das bedeutet dass Fehler im Code in der

Regel erst dann festgestellt werden wenn die Seiten uumlber einen Browser aus dem Werbserver des

Providers abgerufen werden Das Oumlffnen der Webseite durch den Browser entspricht dem Programmstart

gemaumlszlig anderen Sprachen

Speicherung der Dateien

Fuumlr die Erfassung von PHP-Programmen reicht ein einfacher Text ndash Editor SQL - Befehle werden in den

PHP - Code integriert Beim Abspeichern ist die Erweiterung PHP3 (fuumlr die Version PHP3) PHP4 (fuumlr die

Version PHP4) oder PHP (fuumlr die Version PHP345) zu verwenden

Bei der Eingabe der Anweisungen sind einige Regeln zu beachten

Eine Anweisung kann in einer Zeile oder in mehreren Zeilen eingegeben werden

Die Anweisung wird mit (Semikolon) abgeschlossen

Groszlig- und Kleinschreibung ist in den Anweisungen in der Regel moumlglich

Dateinamen sind grundsaumltzlich mit Kleinbuchstaben zu benennen Werden Dateien auf einem UNIX-

System hinterlegt spielt der Unterschied zwischen Groszlig- und Kleinbuchstaben eine groszlige Rolle ndash bei den

Dateien bdquoTESTPHPldquo bdquotestphpldquo und bdquoTestphpldquo handelt es sich also um drei verschiedene Dateien

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

20 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

41 PHP ndash PROGRAMME AM bdquoLOCALHOSTldquo STARTEN

PHP - Programme also Webseiten mit der Extension php muumlssen mit FTP in das php ndash faumlhige

Veroumlffentlichungsverzeichnis des Providers transferiert werden bzw in das Hauptverzeichnis des lokal

installierten Webservers (oder in dessen Unterverzeichnisse)

xampphtdocs

Konfigurieren Sie am Webserver die Datei bdquohttpdconfldquo (xamppapacheconfig) um ihre Scripts in einem

beliebigen Ordner (auszligerhalb des Webservers) ablegen zu koumlnnen

zB Alias xyz Dmeinordner

ltDirectory Dmeinordnergt Options +Indexes ltDirectorygt

Aufruf der Dateiliste aus Dmeinordner (nur erlaubt wenn Indexes auf bdquo+ldquo) mit localhostxyz

Uumlbung 5

Uuml5-1 Erstellen Sie im Hauptverzeichnis ihres Webservers einen Ordner bdquophpldquo in denen Sie die folgenden

Uumlbungsprogramme speichern

Uuml5-2 Speichern Sie Ihre mit dem Texteditor erstellte Webseite in den Ordner bdquoxampphtdocsphpldquo und

testen Sie den Aufruf

a) Starten des Webservers

b) Aufruf der Datei mit dem Browser httplocalhostphpihredateihtm

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

21 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

42 VARIABLEN UND KONTROLLSTRUKTUREN IN PHP

Der PHP-Code wird unmittelbar in die HTML Seite geschrieben Dazu gibt es 4 Moumlglichkeiten

lt gt (nur bis php4)

ltphp gt

ltscript language=phpgt hellip ltscriptgt

lt gt

Statt der Dateierweiterung HTM oder HTML erhalten die Dateien die Erweiterung PHP Diese Erweiterung

hat zur Folge dass die jeweilige Datei nicht sofort zum Browser gesendet sondern erst dem PHP ndash

Prozessor uumlbergeben wird Dieser arbeitet die Datei ab Findet er PHP - Code wird der ausgewertet und

ausgefuumlhrt

Eine HTML-Seite kann beliebig viele solcher PHP - Bloumlcke enthalten Der Text zwischen den beiden Tags

muss guumlltiger PHP - Code sein

Kommentare beginnen in PHP mit (einzeilig) bzw mit helliphellip (mehrzeilig)

Bsp

lthtmlgt

ltheadgt

lttitlegt first program lttitlegt

ltheadgt

ltbodygt

ltphp echo Hallo gt

ltbodygt

lthtmlgt

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

22 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Auf der Bildschirmausgabeseite muumlsste nun folgender Text stehen Hallo

Der echo-Befehl wird immer dann eingesetzt wenn eine Ausgabe auf der Webseite erforderlich ist D h

auch fuumlr die Verwendung von HTML ndash Tags innerhalb des PHP ndash Blockes Die Textinformationen in diesem

Befehl gehoumlren in doppelte Anfuumlhrungszeichen eingebunden Benoumltigt ein HTML ndash Tag

Anfuumlhrungszeichen werden diese im PHP ndash Block entweder weggelassen durch einfache

Anfuumlhrungszeichen oder durch die Zeichen ersetzt (Der Backslash hindert PHP am interpretieren

der Sonderzeichen)

Variablen koumlnnen gemaumlszlig anderen Programmiersprachen verwendet werden Eine Variablendeklaration ist

nicht noumltig Jeder Variablenname beginnt mit dem Dollar-Zeichen sbquo$lsquo

HTML - Code

ltfont color=FF0000gt

Text in roter Farbe

ltfontgt

PHP ndash Code mit HTML - Tags

ltphp

echo(ltfont color=FF0000gt

Text in roter Farbe ltfontgt)

gt

Beispiele

ltphp datumphp

echo date(dmy)

$stunde = date(H)

Variablen werden mit einem $-Zeichen begonnen

echo ( ---- Die Stunde hat $stunde geschlagen)

gt

ltphp

variablephp

$e = 10 Variablenzuweisungen

$vorname = Max

$nachname = Muster

$faktor = 1376030

$a = $e $faktor

echo(Programm von $vorname $nachname

ltBRgt)

echo($e EURO sind $a OumlS)

gt

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

23 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

ifphp echo date(dmy)

$stunde = date(H) rdquosrdquo hellip Sekunde ldquoirdquo hellip Minute

date() ndash Fkt httpwwwphpnetmanualdefunctiondatephp

if ($stunde lt 10)

echo (guten Morgen)

else

echo (guten Tag)

gt

Uumlbung 6

Erstellen Sie ein PHP ndash Programm das je nach Sekunde der Systemzeit eine Textausgabe in einer anderen

Farbe ausgibt

421 RECHENOPERATIONEN

+ Addition $i+$j

- Subtraktion $i-$j

Multiplikation $i$j

Division $i$j

Reste-Bildung $i$j

Verknuumlpft Strings

$l = langer

$k = kurzer

echo $l$k

ergibt

langerkurzer

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

24 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

422VERGLEICHSOPERATIONEN

== gleich

gt groumlszliger

lt kleiner

gt= groumlszliger gleich

lt= kleiner gleich

= ungleich

Verknuumlpfungsoperatoren

ampamp (and) || (or) hellip

$i++ ++$i erhoumlht $i um 1

$i-- --$i erniedrigt $i um 1

$i=0

echo $i++

gibt 0 aus anschlieszligend wird $i auf den Wert 1 erhoumlht

$i=0

echo ++$i

erhoumlht zuerst $i auf 1 und gibt den Wert 1 aus

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

25 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

423 KONTROLLSTRUKTUREN

if (Bedingung)

Befehl

else

Befehl

switch (Ausdruck)

case 0 Befehl

case 1 Befehl

case $n Befehl

default Befehl

while (Ausdruck)

Befehl

do

Befehl

while(Ausdruck)

for ($i=start$ilt=end$i++)

Befehl

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

26 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 7

Uuml7-1 Erstellen Sie ein PHP ndash Programm das 10 zufaumlllige Zahlen zw 1 und 100 in einer Tabelle ausgibt

Verwenden Sie eine while ndash Schleife Verwenden Sie srand() zum setzen des Zufallgenerators

verwenden Sie $zahl=rand(1100) zur Erzeugung der Zufallszahl

Uuml711 Modifizieren Sie das Programm indem sie eine zweite Tabellenspalte ausgeben Zahllt50 --gt

Ausgabe LO sonst Ausgabe HI

21 LO

97 HI

3 LO

3 LO

39 LO

47 LO

46 LO

59 HI

87 HI

81 HI

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

27 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

424 FORMULAR UND PROGRAMM

Im folgenden Beispiel wird in einer HTM ndash Datei ein Formular erzeugt Bei Betaumltigung des submit ndash

Buttons wird eine PHP ndash Datei aufgerufen die die Eingaben in die Formularfelder verarbeitet Dabei

werden die Namen der Formularfelder als Parameter mitgeschickt Im aufgerufenen Programm koumlnnen

diese als Variablen verwendet werden

Beachte PHP mit strenger Konfiguration (ab Version 41houmlher)

Alle Formular-Felder werden in assoziativen Arrays namens $_GET bzw $_POST gespeichert Wird zB ein

Eingabefeld namens nr mit der Methode POST an das PHP - Programm geschickt dann kann man

mit $x= $_POST[nr] die Daten aus dem Feld entgegennehmen und in einer einfachen Variable speichern

Datei 1 ndash zB eingabehtm

hellip

ltform action=ldquoprogrammphp method=ldquoGETldquoldquogt

ltinput name=z1 size=10gt Zahl-1ltpgt Eingabe wird im Parameter $_GET[z1] gespeichert

ltinput name=z2 size=10gt Zahl-2ltpgt

ltinput type=submitgt

ltinput type=resetgt

ltformgt

hellip

Datei 2 ndash programmphp

ltphp

$s=$_GET[z1]+$_GET[z2] z1 und z2 kommen aus der Datei eingabehtm

echo($_GET[z1] + $_GET[z2] ergeben $s)

gt

Beachte die Webadresse der Datei 2 (programmphp) im Browser

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

28 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

(Bsp Eingabe 3 und 6) httplocalhostphpprogrammphpz1=3ampz2=6

Beachte Fuumlr die versteckte Speicherung von Formularfeldinhalten verwendet man den input type =

hidden

echo(ltinput type=hidden name=x value=ygt)

Uumlbung 8

Erstellen Sie ein PHP-Programm (alternativ eine HTM-Datei) die eine Passwortabfrage taumltigt Nach

Bestaumltigung des Buttons ndash Abschicken soll das eingegebene Passwort in einer zweiten Datei (PHP-

Programm) auf seine Richtigkeit gepruumlft werden und dementsprechend zwei unterschiedliche Ausgaben

haben

1 Datei

2 Datei

Uumlbung 81

Reifepruumlfungszeugnisberechnung httpwwwbreitenfellnerinfoklassenbereichdownloakrdp

oder

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

29 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

425 FORMULAR UND PROGRAMM IN EINER DATEI

Ein Programm kann sich auf diese Weise selber Daten zusenden Zur Anwendung kommt diese Technik

meist bei Eingabemasken fuumlr eine Datenbank Der Datensatz wird eingelesen an die Datenbank gesendet

und eine Bestaumltigung des Eintrages mit dem Formular zur weiteren Eingabe wird ausgegeben

Bsp Dateiname eingabemaskephp

lthtmlgtltheadgtlttitlegtSelbstaufruflttitlegtltheadgtltbodygt

ltphp

if (isset($_POST[gesendet]))

echo (Sie haben folgenden Namen eingegeben )

echo ( $_POST[nachname] $_POST[vorname]ltpgt)

gt

Bitte geben Sie einen Namen ein und bestaetigen Sie ihn

ltform action=eingabemaskephp method=POSTgt

Vorname ltinput type=text name=vorname size=30gt

ltBRgt

Nachname ltinput type=text name=nachname size=30gt

ltBRgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygtlthtmlgt

Uumlbergebene Parameter nachname vorname gesendet

Zu Beginn des Programms wird mit if (isset($_POST[gesendet])) gepruumlft ob die Variable schon existiert

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

30 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beim ersten Aufruf der Datei trifft dies noch nicht zu da das zugehoumlrige Formularelement erst weiter

unten auftaucht

Beim wiederholten Aufruf durch den submit ndash Button existiert die Variable und die Ausgabe der Variablen

erfolgt Die Formulardarstellung sowieso

Online ndash Handbuch httpwwwphpnet

Weitere nuumltzliche Links unter anderen im Punkt 85

Beachte Wenn in der aufgerufenen Datei eine neuerliche Formular-action gestartet wird gehen die aus

der ersten Datei uumlbertragenen Parameter verloren Zur Weiterverwendung werden sie im Formular der

aufgerufenen Seite eingebunden

Bsp Zahlenraten

Datei 1 ndash eingabe2php

ltphp

srand()

$zahl=rand(15) ermitteln einer Zufallszahl

echo( ZAHLENRATEN (1-5)

ltform action=programm2php method=GETgt

ltinput type=hidden name=zufallszahl value=$zahlgt

ltinput type=submit value=losgt

ltformgt)

eine Zufallszahl zw 1 und 5 wird an programm2php uebermittelt

und zwar uumlber den Parameter $_GET[zufallszahl]

gt

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

31 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Aufgerufene Datei 2 ndash programm2php

ltphp

echo(Zufallszahl zw 1 und 5 raten)

echo(ltform action=programm2php method=POSTgt

ltinput type=hidden name=zufallszahl value=$_GET[zufallszahl]gt

lt-- nun kann die uebergebenen Variable in dieser Datei

auch beim Selbstaufruf weiter verwendet werden --gt

ltinput name=eingabegt

ltinput type=submit value=ratengt

ltformgt)

if ($_POST[eingabe]==$_POST[zufallszahl])

echo(RICHTIG -- die Zahl war $_POST[zufallszahl])

else if ($_POST[eingabe]) echo(falsch geraten)

gt

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

32 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

5 MYSQL ndash DIE (INTERNET-)DATENBANK

Grundsaumltzlich speichert eine Datenbank binaumlre Daten die meist in tabellarischer Form angezeigt werden

Die MySQL ndash Datenbank wird vom Providerbetreiber eingerichtet (create database db_name) Dh der

Webserver muss MySQL ndash faumlhig sein ein Datenbankname ein Benutzername und ein Passwort werden

festgelegt

Wichtige Daten im Voraus fuumlr den lokalen Server XAMPP der separat gestartet werden muss

(mysql_startbat oder uumlber ein controlpanel bei neueren Versionen)

Host localhost (127001)

Datenbank muss angelegt werden

Benutzername root

Passwort

Wenn Apache und MySQL laufen gibt es zwei Moumlglichkeiten eine MySQL ndash Datenbank zu bedienen

MySQL ndash Monitor (Kommandozeilen - Programm

Eingabeaufforderung Start durch die Datei hellipxamppmysqlbinmysqlexe

Nun ist es moumlglich eine Verbindung zu jeder MySQL ndash Datenbank aufzubauen

Bsp mysql ndashD adressen ndashh 17227222 ndashu harald ndashp

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

33 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

verbindet den Monitor mit der Datenbank adressen am Host 17227222 mit Benutzernamen harald

und fordert zur Passworteingabe auf [optional -pPasswort]

Auf der lokalen Version von XAMPP ist man mit dem Servert am localhost mit Benutzer root ohne Passwort

verbunden (Zum Aumlndern der Passwortes lesen Sie xampp_manualtxt)

MySQL ndash Kommando Funktion

create database [if not exist] db_name erstellt eine Datenbank

drop database db_name loumlscht die Datenbank

show databases zeigt die vorhandenen Datenbanken

use test verwendet die Datenbank mit dem Namen test

show tables zeigt alle erzeugten Tabellen der aktuellen Datenbank

quit oder exit beendet den MySQL - Monitor

PHPMYADMIN

Es handelt sich hierbei um ein Programmpaket geschrieben mit PHP das eine grafische menuumlgesteuerte

Web-Oberflaumlche zur Verfuumlgung stellt um die Datenbank zu bedienen

Meist stellt der Provider nach dem Einloggen in die Datenbank diese Oberflaumlche online zur Verfuumlgung

Im XAMPP ndash Paket ist dieses Programm eingebunden Konfiguriert wird das Programm in der Datei

xamppphpmyadminconfigincphp eingestellt auf localhost - root - kein Passwort

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

34 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 9

Uuml9-1 Starten Sie den Apache-Server

Uuml9-2 Starten sie MySQL

Uuml9-3 Waumlhlen Sie den localhost uumlber den Browser

Uuml9-4 Starten Sie phpMyAdmin

Uumlbung 10 Verwenden Sie entweder den MySQL ndash Monitor oder phpMyAdmin

Uuml10-1 Verwenden Sie die Datenbank test

Uuml10-2 Legen Sie eine neue Tabelle buchan Auch in phpMyAdmin kann man SQL ndash Befehle eingeben

CREATE TABLE buch

( id INT( 10 ) NOT NULL AUTO_INCREMENT titel VARCHAR( 50 )

autor VARCHAR( 50 ) preis DOUBLE

PRIMARY KEY ( id ) )

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

35 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uuml10-3 Legen Sie folgende Datensaumltze an (Komma als Punkt)

id titel autor preis

1 MySQL amp PHP Sven Letzel 1500

2 PHP amp MySQL KnowWare 400

3 PHP 4 Thomas Theis 3990

Uuml10-4 Taumltigen Sie 2 Abfragen

Alle Buumlcher SELECT FROM buch

Alle Buumlcher unter 3000 euro SELECT FROM buch WHERE preis lt 30

Uuml10-5 Taumltigen Sie weitere Abfragen indem Sie sich an die Uumlbung in MS ACCESS erinnern

Achtung

SQL in PHPMyAdmin als Stellvertreterzeichen Zeichen statt (hellip Like Aldquo)

Uuml10-6 Versuchen Sie Abfragen uumlber den MySQL ndash Monitor einzugeben

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

36 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

6 PHP UND MYSQL (HTTPWWWPHP-KURSCOM)

Hier wird die aumlltere Schreibweise mit bdquomysql_ldquo verwendet Seit PHP 51 wird die objektorientierte

Schreibweise mit der Klasse PDO (PhpDataObjects) verwendet Eine Anleitung dazu im Internet httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo bzw hier

Um eine SQL ndash Abfrage in PHP durchfuumlhren zu koumlnnen muss die Datenbank geoumlffnet sein

ltphp

mysql_connect (localhost root ) or die (Kein Zugriff auf die Datenbank)

echo (Zugriff zur Datenbank OK ltpgt)

Um einen SQL ndash Befehl innerhalb PHP auszufuumlhren verwendet man zB mysql_query()

mysql_query (use test)

Um Datensaumltze zu ermitteln hellip

$ergebnis = mysql_query (select from buch)

hellip dabei werden tabellarische Daten an einen Array geliefert

Um die Datensaumltze im Browser anzuzeigen verwenden Sie mysql_fetch_array()

while ($zeile = mysql_fetch_array($ergebnis))

echo (ltpgt $zeile[titel])

Zum Schlieszligen der Datenbank

mysql_close()

gt

Uumlbung 11

Fragen Sie mit einem PHP ndash Programm alle Daten aus der Datenbank ab und zeigen Sie das Ergebnis in

einer Tabelle an

Uumlbung 12

Fuumlgen Sie uumlber ein PHP ndash Programm einen Datensatz hinzu

INSERT INTO buch (titel autor preis) VALUES (Access Said Baloui 47)

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

37 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

611WEBSEITEN MIT FORMULAR - EINLESEFORMULAR

Folgendes Programm laumlsst Daten einlesen und uumlbergibt diese an die Datenbank test Tabelle buch ndash

Bitte um Kontrolle durch php-MyAdmin

lthtmlgtltheadgtlttitlegtEingabe in Buch DBlttitlegtltheadgt

ltbodygt

ltphp

mysql_connect(localhostroot)

or die (Derzeit kein Zugriff auf die Datenbank)

mysql_query(use test)

if (isset($_POST[gesendet]))

echo (Sie haben folgendes Buch eingegeben )

echo ( $_POST[t] $_POST[a] $_POST[p]ltpgt)

$titel=$_POST[t]

$autor=$_POST[a]

$preis=$_POST[p]

mysql_query(insert into buch(titelautorpreis) values($titel $autor $preis))

echo(Daten wurden in die Datenbank test Tabelle buch aufgenommenltpgt)

mysql_close()

gt

Bitte Buch eingeben und bestampaumltigen

ltform action=buch-firstphp method=POSTgt

Titel ltinput type=text name=t size=50gt ltbrgt

Autor ltinput type=text name=a size=50gt ltbrgt

Preis (Komma als Punkt) ltinput type=text name=p size=30gt ltbrgt

ltinput type=submit name=gesendet value=bestampaumltigengt

ltformgt

ltbodygt

lthtmlgt

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

38 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Im folgenden Beispiel wird eine Datenbank abgefragt und um eine Loumlschfunktion und eine

Aumlnderungsfunktion erweitert

Erweitern Sie in der Schleife die Ausgabe um eine Spalte mehr in der ein Bild eines Papierkorbs aufscheint

ltimg src=pkjpggt

Machen Sie aus dem Bild einen Link der die Seite neu startet und als Parameter die id des jeweiligen

Datensatzes mitschickt

lta href=dbphpx=$zeile[id]gt

ltimg src= pkjpggt

ltagt

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

39 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Fuumlgen Sie in das Skript eine Verzweigung ein die pruumlft ob ein entsprechender Paramater gesendet wurde

und wenn ja wird aus der Datenbank der entsprechende Datensatz geloumlscht

if (isset($_GET[x]))

$del=$_GET[x]

mysql_query(DELETE FROM franz WHERE id=$del)

Erweitern Sie das Skript um eine bdquoUPDATEldquo-Funktion

Ziel

Klickt man auf erscheint ein Formular (anstelle des Eingabeformulars oder zusaumltzlich) mit dem

entsprechenden Datensatz

Klickt man nach Aumlnderung des Inhalts auf wird der Datensatz in der Datenbank geaumlndert

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

40 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Uumlbung 12

Uuml13-1 Erstellen Sie eine beliebige Datenbank mit einer Tabelle am localhost

Uuml13-2 Erstellen Sie eine Webseite die ein Passwort zur Datenbank abfragt

Uuml13-3 Erstellen Sie ein passwortgesichtertes PHP ndash Programm das in Ihre Datenbank Daten einlesen laumlsst

Daten auf Wunsch ausgibt und einzelne Datensaumltze loumlschen kann

62 UumlBERSICHT UumlBER WEITERE ndash MYSQL ndash PHP ndash FUNKTIONEN

httpphpnetmanualde

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

41 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

7 ANHANG

71 SESSION

Das http-Protokoll bietet keine Moumlglichkeit verschiedene Anfragen vom gleichen Browser zu verbinden

Bei einer bdquoMehrseiten-Homepageldquo ist es aber oft notwendig dass der Server den Client von dem eine

neue Seite angefordert wird wiedererkennt

Mittels Session kann nun der Webserver verschiedene Anfragen von einem User in Beziehung zueinander

setzen Um den Client wiederzuerkennen weist PHP diesem eine eindeutige Session-ID zu mit der sich der

Client am Server ausweisen kann

Genau wie beim Cookie stehen auch bei der Session alle in ihr registrierten Variablen jedem Script also

weiteren Seiten zu Verfuumlgung

Sessions mit PHP

Mit bdquosession_start()ldquo wird eine Session begonnen (muss am Anfang jeder Seite die die Session verwendet

stehen auch vor jedem HTML-Tag ) - mittels session_register(variablenname) (alternativ

$_SESSION[variablenname]=$variablenname) werden Variablen in dieser Session registriert und sind dann

fuumlr alle Scripts und Folgeseiten aufrufbar bis zum bdquosession_destroy()ldquo

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

42 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Funktionen fuumlr die Session-Verwaltung

Funktion Beschreibung

session_start() startet eine Session im Skript

session_destroy() loumlscht aktuelle Session und alle Daten

session_name() gibt den Namen der Session zuruumlck

session_id() gibt die Session-ID zuruumlck

session_register() registriert eine Variable in der Session ndash alt $_SESSION[]=

session_unregister() loumlscht eine Variable aus der Session

session_is_registered() uumlberpruumlft eine Variable ob sie in der Session gespeichert ist Gibt TRUE oder

FALSE zuruumlck

session_unset() loumlscht alle Variablen aus der Session

isset($variable) Testet ob eine Variable registriert ist - alt session_is_registered()

Achtung Bei den Funktionen session_register() session_unregister() und session_is_registered() darf nur

der Name als Argument uumlbergeben werden (Dollarzeichen wird weggelassen)

session_start()

$name = Susildquo

$_SESSION[name]=$name

if (isset($name))

echo $name

session_destroy()

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

43 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ein Beispiel (scriptssessionsession_a bis dphp hellip leicht abgeaumlndert)

Um die Session-Verwaltung ausprobieren zu koumlnnen benoumltigen wir mehrere Dateien die immer wieder

auf die aktuelle Session zugreifen

Das Beispiel ist aus dem Buch Dirk Ammelburger Goto PHP4 2002

Die erste Datei dient dazu dass der User seinen Namen eingeben kann die Session gestartet wird und die

Startzeit in der Session registriert wird

session_aphp

ltphp

Session wird gestartet

session_start()

Ausgabe der Daten

echo Sie haben die Session-ID session_id()

echo ltbrgt

echo Ihr Sessionname lautet session_name()

echo ltbrgt

Startzeitpunkt wird festgestellt und registriert

$startzeit = time()

session_register(startzeit)

$_SESSION[startzeit]=$startzeit

echoltpgt $_SESSION[startzeit] ltpgt

in PHP 4 auch noch die einfachere Schreibweise moumlglich echoltpgt $startzeit ltpgt

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

44 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

gt

lt-- HTML-Formular fuumlr den Usernamen --gt

Willkommenltbrgt

ltform action=session_bphp method=postgt

Bitte Namen eingebenltbrgt

ltinput name=namegt

ltimput type=submit value=anmeldengt

ltformgt

ltphp

Sessiondaten werden uumlberpruumlft

if (session_is_registered(startzeit))

if (isset($_SESSION[startzeit])) PHP 4 if (isset($startzeit))

echo Ihre Startzeit wurde erfolgreich registriert und laumluft seit Aufruf dieser Seite

else echo Fehler kontrollieren Sie das script

gt

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

45 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_bphp

ltphp

Session wird gestartet

session_start()

Formulardaten werden uumlberpuumlft

if($_POST[name] == ) $name = nobody

echo Hallo $nameltbrgt

Zeit auf der Seite wird berechnet und ausgegeben

$dzeit = time() - $startzeit

echo Du bist seit $dzeit Sekunden angemeldetltbrgt

Daten werden in der Session registriert wenn noumltig

if((session_is_registered(name)))

session_register(name)

if (isset($_SESSION[name]))

$_SESSION[name]=$name

Ausgabe weiterer Sessiondaten

if(session_is_registered(lang))

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

46 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

if (isset($_SESSION[lang]))

echo Du moumlchtest die Sprache $_SESSION[lang] lernenltbrgtltbrgt

gt

lt-- HTML-Linkliste --gt

lta href=session_cphpmylang=CgtIch will C lernenltagtltbrgt

lta href=session_cphpmylang=PHPgtIch will PHP lernenltagtltbrgt

lta href=session_cphpmylang=JavagtIch will Java lernenltagtltbrgt

lta href=session_dphpgtSession verlassenltagtltbrgt

Mittels session_start() wird nun die vorher angelegte Session wieder angesprochen Nun steht die Startzeit

wieder zur Verfuumlgung und wir berechnen die Aufenthaltsdauer unseres Users Auszligerdem pruumlfen wir den

eingegebenen Namen

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

47 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

session_cphp

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Variablen werden gesetzt

$lang = $mylang

Die Session wird uumlberpruumlft und bei Bedarf aktualisiert

if (isset($_SESSION[lang])) $_SESSION[lang]=$lang

echo Sie haben die Sprache $_SESSION[lang] gewaumlhltltbrgtltbrgt

gt

lt-- HTML-Link --gt

lta href=session_bphpgtweiterltagt

Wir registrieren die Variable $lang In diese wird je nach angeklicktem Link eine Programmiersprache

geschrieben Die bei bereits erfolgter Registrierung auch gleich ausgegeben wird

Um die Session wieder zu verlassen zu zerstoumlren klickt man auf den letzten Link

session_dphp

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

48 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

ltphp

Session wird gestartet Alle Daten sind wieder vorhanden

session_start()

echo Hallo $_SESSION[name]ltbrgt

$dzeit = time() - $_SESSION[startzeit]

echo Du bist sei $dzeit Sekunden angemeldetltbrgtltbrgt

Session wird beendet

session_destroy()

echo Ihre Session wurde beendetltbrgt

gt

lt-- HTML-Link --gt

lta href=session_aphpgtwieder anmeldenltagt

In diesem Skript wird die Session zerstoumlrt das heiszligt die Session-ID und alle registrierten Variablen werden

wieder geloumlscht

Infos httpwwwdevelnetorg26html und httpwwwphpnet ua

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

49 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

72 ARRAY (AUS HTTPWWWSCHATTENBAUMNET)

Ein Array bekommt wie jede normale Variable einen Namen zugeordnet jedoch erfolgt die Zuweisung

der Inhalte nicht uumlber ein einfaches Ist-Gleich sondern uumlber die Funktion array

lt

$blumen = array(Rose Tulpe Nelke Sonnenblume)

gt

Die Indizierung der Array-Teile beginnt mit 0 (Rose hat den Wert 0 Tulpe hellip 1 usw)

Der Zugriff erfolgt uumlber den Index in eckigen Klammern

lt

echo $blumen[3]

gt

Selbst einen eindeutigen Namen (oder eine Nummer) fuumlr jeden Eintrag festlegen

Namen =gt Wert

lt

$blumen = array(rot=gtRoserosa=gtTulpe

weiss=gtNelke

gelb=gtSonnenblume)

gt

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

50 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Zugriff

lt

echo $blumen[rosa] Ausgabe hellip Tulpe

gt

Verwendet man Worte so muss man diese unter Anfuumlhrungszeichen setzen

Die Funktion count() uumlberpruumlft wieviele Werte sich im Array befinden Das kann zB dann genutzt werden

wenn man in das Array nur eine bestimmte Anzahl von Werten schreiben moumlchte Vgl sizeof() hellip

array_shift() entfernt das 1 Element und gibt es zuruumlck

lt

$anzahl = count($blumen) Ruumlckgabewert in unserem Fall 4

gt

Uumlberpruumlfung ob sich ein bestimmter Wert bereits im Array befindet in_array()

lt

if(in_array(Tulpe$blumen))

echo Tulpe ist im Array enthalten

gt

array_push()erweitert das Array um einen (oder mehrere) Wert(e) - (Komma als Trennzeichen)

lt

array_push($blumenEfeuKornblume)

gt

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

51 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Beachte dass hierbei kein Name fuumlr einen Wert zugewiesen werden kann Wenn diese Funktion in

Verbindung mit einem Array benutzt wird in dem Namen zugewiesen wurden wird das Array nicht

erweitert

Sortierung der darin enthaltenen Werte

Wichtig Die Ansprache uumlber die zugewiesenen Namen bleiben beim Wert erhalten Wurden keine Namen

zugewiesen bleibt die Standardindizierung auch nach der Sortierung (0 hellip 1 Element 1 hellip 2 Element hellip)

Feldnamen sortieren ksort() hellip aufsteigend - krsort() hellip absteigend

lt

ksort($blumen) hellip gelb (Sonnenblume) rosa (Tulpe) rot (Rose) weiss (Nelke)

gt

Werte sortieren asort() - arsort()

lt

asort($blumen) Nelke Rose Sonnenblume Tulpe

gt

foreach() hellip zB zur Ausgabe des Arrayinhaltes

Jeder Wert des Arrays wird vorruumlbergehend einer Variable zugeordnet Der Name der Variable wird durch

den Befehl as angegeben

lt

foreach($blumen as $meine_blume)

echo $meine_blume ltbrgt

gt

hellip ergibt

Rose

Tulpe

Nelke

Sonnenblume

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

52 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

73 PHP UND CSV-DATEIZUGRIFF (CSVPHP DATEICSV)

Das Beispielprogramm csvphp inklusiv der eingefuumlgten Kommentare arbeitet mit der Datei dateicsv einer

komma-separierten Textdatei mit Zeilenvorschub die in Exceltabellen interpretiert und bearbeitet werden

koumlnnen

lthtmlgtltheadgtlttitlegtcsv-Dateizugriff mit phplttitlegtltheadgtltbodygt

lt

$fp=fopen(dateicsvw+)

Datei zum (w+) Lesen und Schreiben oumlffnen

Achtung loumlscht vorhandenen Inhalt dieser Datei erstellt diese falls noch nicht vorhanden

$fp=fopen(dateicsva)

Datei nur zum Schreiben Anfuumlgen von Inhalt

fwrite($fpaaabbbccc n aaa2bbb2ccc2 n aaa3 n )

fclose($fp)

Dateikanal schlieszligen

Liste von moumlglichen Modi fuumlr fopen()

r Oumlffnen nur zum Lesen - Dateizeiger auf den Anfang der Datei

r+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei

w Oumlffnen nur zum Schreiben - Dateizeiger auf den Anfang - Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

w+ Oumlffne zum Lesen und Schreiben - Dateizeiger auf den Anfang der Datei -

Laumlnge der Datei auf 0 Byte

Wenn die Datei nicht existiert wird versucht sie anzulegen

a Oumlffne nur zum Schreiben - Dateizeiger auf das Ende der Datei

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

53 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Wenn die Datei nicht existiert wird versucht sie anzulegen

a+ Oumlffnen zum Lesen und Schreiben - Dateizeiger auf das Ende der Datei

Wenn die Datei nicht existiert wird versucht sie anzulegen

Beispiel zum Auslesen von Daten

$filename = dateicsv

$fp = fopen($filename r) Nur lesen Zeiger am Anfang

while ($data = fgetcsv($fp filesize($filename)))

Solange aus der csv Datei Daten ausgelesen werden koumlnnen

fgetcsv -- Liest eine Zeile von der Position des Dateizeigers

(filesize() liefert die Dateigroumlszlige als ganzzahligen Wert)

und gibt ein Array einer gelesenen Zeile (Arrayteile durch getrennt) zuruumlck

$aktuelle_zeile_erstes_feld=$data[0]

$table[] = $data jede Zeile in einen Teil des $table Array

Bsp $table[0]=$data[HaraldHuberSaalfelden]

$table[1]=$data[SusiSorglosZell]

fclose($fp)

Ausgabe der letzten Zeile erster String bis zum

echoLetzte Zeile 1 Spalte $aktuelle_zeile_erstes_feld ltbrgtltbrgt

weiter----gt

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

54 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Ausgabe aller Felder in einer Tabelle

echo lttable border=1gt

foreach($table as $row)

Schleife - jeder Arrayteil (jede Zeile) wird voruumlbergehend in eine Variable gelegt

($row=$table[0] bspw [HaraldHuberSaalfelden])

$row=$table[1] bspw [SusiSorglosZell])

echo lttrgt

foreach($row as $datenfeld) echo lttdgt$datenfeldlttdgt

jeder Teil des Arrays $row wird in $datenfeld ausgelesen

$datenfeld=$(row[0] Harald)

$datenfeld=$(row[1] Huber)

echo lttrgt

echo lttablegt

Weitere File-Funktionen

feof -- Pruumlft ob der Dateizeiger am Ende der Datei steht

fgetc -- Liest das Zeichen auf welches der Dateizeiger zeigt

fgets -- Liest eine Zeile (Zeichenkette) von der Position des Dateizeigers

fgetss -- Liest eine Zeile von der Position des Dateizeigers und entfernt HTML Tags

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

55 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

file_exists -- Pruumlft ob eine Datei oder ein Verzeichnis existiert

file_get_contents -- Liest die gesamte Datei in einen String

file_put_contents -- Write a string to a file

file -- Liest eine Datei komplett in ein Array

filemtime -- Liefert Datum und Uhrzeit der letzten Dateiaumlnderungltbrgt

weitere httpwwwdynamicwebpagesdephpfunctionfilemtimephp

rewind -- Setzt den Dateizeiger auf das erste Byte der Datei

unlink -- Loumlscht eine Datei

tmpfile -- Legt eine temporaumlre Datei an

ftruncate -- Kuumlrzt eine Datei auf die angegebene Laumlnge

Beispiel um zB die ersten 4 Zeilen einer Datei zu loumlschen

$array = file(dateidat) Datei in Array speichern jede Zeile ein Feld

if (sizeof($array) gt 120) Wenn Datei gt 120 Zeilen

array_shift($array) Entfernt 1 Element (Zeile) aus Array

array_shift($array) array_shift($array) array_shift($array)

$fp = fopen(dateidatw) Datei zum Uumlberschreiben oumlffnen

fwrite($fp$array) Daten in Datei schreiben

fclose($fp)

uvm

gt ltbodygtlthtmlgt

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

56 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

74 EINBINDUNG VON bdquoJAVASCRIPTldquo

httpwwwjgiesendejavascriptJavaScriptJSBeispielestarthtm

httpwwwhtml-worlddeprogramjs_e_ovphp

Beispiel-1

Folgende Zeile in der Datei bdquobuch_change_deletephpldquo anstelle des Formular-Buttons zum loumlschen eines

Buches aus der bdquotestldquo-Datenbank eintragen ---gt geh zu

Es wird eine Javascript-Bestaumltigungsmeldung geoumlffnet Mit bdquoOKldquo ruft sich die Datei selbst und loumlscht den

Datensatz

echo(

lta href=buch_change_deletephpid=$idampdelete=1

onclick=return confirm($zeile[titel] von $zeile[autor]nloumlschen)gt

loeschenltagt

)

Beispiel-2 Infofenster oumlffnen

In dem Bereich zwischen den beiden Tags ltheadgt und lthead

ltscript language=JavaScriptgt

function Neues_Fenster()

windowopen(infohtm neuwidth=400 height=400resizable=no)

ltscriptgt

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

57 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

Der Link dazu

lta href=javascriptNeues_Fenster()gtINFOltagt

Beispiel-3 Fenster schlieszligen

lta href=javascriptwindowclose()gtcloseltagt

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

58 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

75 PDO AB PHP 51

Vgl httpswwwphp-einfachdemysql-tutorialcrashkurs-pdo

Verbindung zur MySQL-Datenbank mittels PDO

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

Datenabfragen koumlnnen mittels $pdo-gtquery($sql) an die Datenbank gesendet werden

$pdo = new PDO(mysqlhost=localhostdbname=databasename username password)

$sql = SELECT FROM [tabelle]

foreach ($pdo-gtquery($sql) as $row)

echo $row[email]ltbr gt

echo $row[vorname]ltbr gt

echo $row[nachname]ltbr gtltbr gt

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---

59 59

copy Gerhard Breitenfellner 01022018 - projekt-db-html-php-mysqldocx

76 Quellen (Auszug)

httpwwwphp-kurscom

httpwwwphpnet

httpwwwmysqlde

httpswwwphp-einfachde

--- Skriptum - Ende ---