Post on 03-Jun-2018
transcript
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 ---