35
Kurzreferenz PHP Autor: Michael Puff Erstellt: 2011-02-25 http://www.michael-puff.de [email protected]

Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

Kurzreferenz

PHP

Autor: Michael Puff

Erstellt: 2011-02-25

http://[email protected]

Page 2: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

Inhaltsverzeichnis

Inhaltsverzeichnis

1 Grundlagen 11.1 Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 PHP und HTML 2

3 Variablen und Datentypen 33.1 Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.2 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33.3 Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43.4 Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4 Operatoren 6

5 Kontrollstrukturen 85.1 Verzweigungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 85.2 Schleifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

6 Wichtige Funktionen 11

7 Klassen 167.1 Grundstruktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167.2 Instantiieren einer Klasse . . . . . . . . . . . . . . . . . . . . . 167.3 Sichtbarkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

8 Datenbankanbindung (MySQL) 188.1 Wichtige Funktionen . . . . . . . . . . . . . . . . . . . . . . . . 188.2 Kurzeinführung in SQL . . . . . . . . . . . . . . . . . . . . . . . 20

9 Ausnahmebehandlung 25

10 Formulare 26

11 Arbeiten mit Dateien 29

i

Page 3: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

Inhaltsverzeichnis

Literaturverzeichnis 31

ii

Page 4: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

Tabellenverzeichnis

Tabellenverzeichnis

3.1 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4.1 Rechenoperatoren . . . . . . . . . . . . . . . . . . . . . . . . . 64.2 Logische Operatoren . . . . . . . . . . . . . . . . . . . . . . . . 64.3 Vergleichsoperatoren . . . . . . . . . . . . . . . . . . . . . . . . 7

6.1 Sortierfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 116.2 Datumsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . 116.3 Datumsformatbeschreiber . . . . . . . . . . . . . . . . . . . . . 126.4 Zeichenkettenfunktionen . . . . . . . . . . . . . . . . . . . . . . 136.5 Arrayfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 146.6 Sonderfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . 15

8.1 MySQL mit PHP . . . . . . . . . . . . . . . . . . . . . . . . . . 19

11.1 Dateifunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

iii

Page 5: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

1 Grundlagen

1 Grundlagen

1.1 Syntax

• Ein PHP-Skript wird in<?php ... ?>

eingeschlossen.• Jede Zeile endet mit einem Semikolon.• PHP unterscheidet zwischen Groß- und Kleinschreibung.

1.2 Kommentare

• Einzeilige Kommentare werden mit//

oder#

eingeleitet.• Blockkommentare bestehen aus

/*... */

1.3 Funktionen

function name($param1, $param2, $optparam = 5){anweisungenreturn rückgabewert;

}

• Optionale Parameter werden mit einem Wert vorbelegt.• Sie sind beim Funktionsaufruf nicht erforderlich.• Rückgabewerte werden mit return zurückgegeben.• Code nach return wird nicht mehr ausgeführt. Die Funktion wird been-

det und verlassen.

1

Page 6: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

2 PHP und HTML

2 PHP und HTML

• PHP Code wird mit <?php ... ?> in HTML-Dateien eingebunden.• HTML-Dateien mit PHP Code müssen die Endung php tragen.• Die Textausgabe erfolgt mit dem Befehl echo:

echo "Dies ist ein Text.";.• Zeichenketten können sowohl in Anführungszeichen als auch in einfa-

che Hochkommas gesetzt werden.• Wird mit echo eine Zeichenkette ausgegeben, die wiederum Anfüh-

rungszeichen enthält, müssen diese mitmaskiert werden:echo "Dies ist ein Zitat: \"Hello world.\"";

• Einfache Hochkommas können ohne sie zu maskieren ausgegebenwerden, wenn die Zeichenkette von Anführungszeichen umschlossenist:echo "Dies ist ein Zitat: ’Hello world.’\n";.

2

Page 7: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

3 Variablen und Datentypen

3 Variablen und Datentypen

3.1 Variablen

• Deklaration durch vorangestelltes Dollarzeichen ($)• Zulässige Zeichen: Zeichen, Ziffer und Unterstrich• Variablen sind case sensitive• Variablen werden nicht deklariert• Erstellung erfolgt durch Wertzuweisung:

$text = "Dies ist ein Text";

3.2 Datentypen

Datentyp BeschreibungInteger Ganzzahlen. $zahl = 5;

Oktalzahl Oktalzahl. Bildschirmausgabe erfolgt dezimal.Oktalzahlen beginnen mit einem O. $ok_zahl= O123;

Hexadezimalzahl Hexadezimalzahl. Bildschirmausgabe erfolgtdezimal. Hexadezimalzahlen beginnen mit 0x.$hex_zahl = 0x123;

Double Fließkommazahl. $zahl = 4.5;

String Zeichenkette. $text = "Dies ist ein Text";

Boolean Wahrheitswert. true/false. $wert = true;

Tab. 3.1: Datentypen

3

Page 8: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

3 Variablen und Datentypen

3.3 Arrays

3.3.1 Einfache Arrays

$arrayname[index] = "Wert1";

<?php$vorname[0] = "Peter";$vorname[1] = "Hans";$vorname[2] = "Robert";// Ausgabeecho($vorname[0]);echo($vorname[1]);echo($vorname[2]);

?>

Mit der Funktion print_r werden Informationen über eine Variable in leichterlesbarer Form ausgegeben. Einzelne Werte werden lediglich ausgegeben,bei Arrays und Objekten werden Schlüssel/Wert-Paare ausgegeben.

3.3.2 Assoziative Arrays

$arrayname["Schlüssel"] = "Wert1";

<?php$kfz["GS"] = "Goslar";$kfz["KS"] = "Kassel";$kfz["HH"] = "Hamburg";// Ausgabe Element Hamburgecho $kfz["HH"];

?>

Syntax der Kurzschreibweise:

$arrayname = array("Schlüssel1" => "Wert1","Schlüssel2" => "Wert2");

4

Page 9: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

3 Variablen und Datentypen

3.4 Konstanten

define("NAME", Wert);

<?ppdefine("ZAHL", 2);// Ausgabeecho ZAHL;

?>

Es gibt von PHP reservierte Konstanten. So gibt die Konstante __FILE__ denPfad der aktuellen Datei zurück.

5

Page 10: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

4 Operatoren

4 Operatoren

Zuweisungsoperator ist das Gleichheitszeichen: =.

Mit dem Punktoperator . werden Zeichenketten miteinander verbunden.

Operator Bedeutung Syntax Kurzform+ Addition $x = $x + $y; $x += $y;

- Subtraktion $x = $x - $y; $x -= $y;

* Multiplikation $x = $x * $y; $x *= $y;

/ Division $x = $x / $y; $x /= $y;

+1 Inkrement $x = $x + 1; $x++;

-1 Dekrement $x = $x - 1; $x--;

% Modulo $x = $x % $y; $x %= $y;

Tab. 4.1: Rechenoperatoren

Operator Bedeutung&& bzw. and und|| bzw. or oderXor entweder-oder! Negation

Tab. 4.2: Logische Operatoren

6

Page 11: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

4 Operatoren

Operator Bedeutung== gleich=== gleicher Wert und gleicher Typ!= bzw. <> ungleich!== Wert und Typ nicht gleich> größer als< kleiner als>= größer gleich<= kleiner gleich

Tab. 4.3: Vergleichsoperatoren

7

Page 12: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

5 Kontrollstrukturen

5 Kontrollstrukturen

5.1 Verzweigungen

5.1.1 if-else

if (Bedingung){Anweisung1;

}else{Anweisung2;

}

$variable = (Bedingung)? $variable1 : $variable2;

Ist die Bedingung wahr, wird der linken Seite der Wert der Variablen links vomDoppelpunkt zugewiesen, ansonsten der Wert rechts vom Doppelpunkt.

5.1.2 elseif

if (Bedingung1){Anweisung1;

}elseif (Bedingung2){Anweisung2;

}// weiter elsif-Blöckeelse{AnweisungN;

}

8

Page 13: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

5 Kontrollstrukturen

5.1.3 switch

switch($variable){case Wert1:

Anweisung1;break;case Wert2:Anweisung2;break;

default:Anweisung3;

}

• Im Unterschied zu den meisten anderen Programmiersprachen könnenauch Zeichenketten zur Fallunterscheidung genommen werden.

• Wichtig: Wird das break am Ende eines Anweisungsblocks weggelas-sen, wird auch der nachfolgende Anweisungsblock abgearbeitet!

5.2 Schleifen

5.2.1 for-Schleife

for(Start; Bedingung; In- bzw. Dekrement){Anweisung;

}

An Stelle des In- bzw. Dekrements kann auch eine beliebige Anweisung ste-hen, die nach jedem Schleifendurchlauf ausgeführt wird.

for($i = 0; $i < 5; $i++){echo $i;

}

9

Page 14: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

5 Kontrollstrukturen

5.2.2 while-Schleife

while(Bedingung){Anweisung;

}

5.2.3 do-while-Schleife

do{Anweisung;

}while(Bedingung);

5.2.4 foreach-Schleife

foreach($array as $value){echo $value;

}

10

Page 15: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

6 Wichtige Funktionen

6 Wichtige Funktionen

Funktion Beschreibungsort() Sortiert ein Array aufsteigend.rsort() Sortiert ein Array absteigend.asort() Sortiert ein assoziatives Array aufsteigen. Die Bezie-

hung zwischen Element und Index bleibt erhalten.arsort() Wie asort() nur absteigend.ksort() Sortiert ein assoziatives Array nach dem Index.

Tab. 6.1: Sortierfunktionen

Funktion Beschreibungdate(format) Aktuelle Zeit und Datum ausgeben.

Wobei format aus Formatbeschrei-bern als Zeichenkette aus Tabel-le 6.3 (Seite: 12) zusammengesetztsein kann.

checkdate(monat, tag, jahr) Überprüft Datum auf Gültigkeit.Rückgabe true oder false.

strtotime(string datum) Umrechnung eines Datums in eng-lischer Schreibweise in einen UN-IX Zeitstempel. Bei ungültigen An-gaben ist der Rückgabewert -1.

Tab. 6.2: Datumsfunktionen

11

Page 16: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

6 Wichtige Funktionen

Format Beschreibunga “am“ oer „pm“A „AM“ oder „PM“d Zweistelliger Tag des MonatsD Wochentag, kurz , englischF Monatsname, englischg Stunde zwischen 1 und 12G Stunde zwischen 0 und 23h Stunde zwischen 1 und 12, zweistelligH Stunde zwischen 0 und 23, zweistelligi Minuten von 0 - 59I Sommer- und Winterzeit. 1 = Sommerzeit, 0 = Winterzeitj Tag von 1 bis 31l Tag der Woche, englischL Schaltjahr. 1 = Schaltjahr, 0 = kein Scahltjahrm Monat von 01 bis 12M Monat, kurz, englischn Monat von 1 bis 12s Sekunde von 00 bis 59t Anzahl der Tage des aktuellen MonatsT Zeitzone des RechnersU Sekunden seit 1970-01-01 (UNIX Zeitstempel)w Wochentag von 0 bis 6, 0 = Sonntagy Jahr, zweistelligY Jahr, vierstelligz Tag des Jahres von 0 bis 365

Tab. 6.3: Datumsformatbeschreiber

12

Page 17: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

6 Wichtige FunktionenFu

nktio

nB

esch

reib

ung

strc

hr(z

eich

enke

tte,z

eich

en)

Suc

htna

chze

iche

nin

zeic

henk

ette

.R

ückg

abew

ert

ist

derR

estd

erZe

iche

nket

te.

strr

chr(

zeic

henk

ette

,zei

chen

)W

iest

rchr

()nu

rvon

hint

en.

strs

tr(ze

iche

nket

te,t

eilz

eich

enke

tte)

Suc

htna

chte

ilzei

chen

kette

inze

iche

nket

te.R

ückg

abe-

wer

tist

der

Res

tder

Zeic

henk

ette

inkl

usiv

ede

rTe

ilzei

-ch

enke

tte.

strt

r(ze

iche

nket

te,a

lt,ne

u)E

rset

ztal

tedu

rch

neu

inze

iche

nket

te.

strp

os(z

eich

enke

tte,z

eich

en[,

offs

et])

Gib

tdi

enu

mer

isch

ePo

sitio

nde

ser

sten

Vork

omm

ens

von

zeic

hen

inne

rhal

bvo

nze

iche

nket

tezu

rück

.of

fset

beze

ichn

etdi

eS

tart

posi

tion

der

Suc

he.

Als

zeic

hen

wer

den

auch

Zeic

henk

ette

nak

zept

iert

.st

r_re

plac

e(te

ilzei

chen

kette

,ers

atz,

zeic

henk

ette

)E

rset

ztte

ilzei

chen

kette

durc

her

satz

inze

iche

nket

te.

subs

tr_co

unt(z

eich

enke

tte,s

ubst

r)Zä

hlts

ubst

rin

zeic

henk

ette

.st

rlen(

zeic

henk

ette

)E

rmitt

eltd

ieA

nzah

lder

inze

iche

nket

teen

thal

tene

nZe

i-ch

en.

expl

ode(

trenn

zeic

hen,

zeic

henk

ette

)ze

rlegt

eine

Zeic

henk

ette

nan

hand

des

Tren

nzei

chen

sin

ein

Arr

ay.

strc

omp(

zeic

henk

ette

1,ze

iche

nket

t2)

Verg

leic

htzw

eiZe

iche

nket

ten.

0=

Zeic

henk

ette

nsi

ndgl

eich

,1=

Zeic

henk

ette

1is

tgrö

ßer,

-1=

Zeic

henk

ette

2is

tgrö

ßer.

Gro

ß-un

dK

lein

schr

eibu

ngw

irdbe

rück

sich

-tig

t.st

rtou

pper

(zei

chen

kette

)W

ande

ltal

leZe

iche

nin

zeic

henk

ette

inG

roßb

uchs

ta-

ben

um.

strt

olow

er(z

eich

enke

tte)

Wan

delt

alle

Zeic

hen

inze

iche

nket

tein

Kle

inbu

chst

a-be

num

.uc

first

(zei

chen

kette

)W

ande

ltda

ser

ste

Zeic

hen

von

zeic

henk

ette

inG

roß-

buch

stab

enum

.uc

wor

ds(z

eich

enke

tte)

Wan

delt

das

erst

eZe

iche

nal

lerW

örte

rin

Gro

ßbuc

hsta

-be

num

.st

ripsl

ashe

s(ze

iche

nket

te)

Ent

fern

taus

zeic

henk

ette

alle

Quo

tes.

strip

_tag

s(ze

iche

nket

te)

Ent

fern

tHTM

L-un

dP

HP

-Tag

sau

sze

iche

nket

te.

Tab.

6.4:

Zeic

henk

ette

nfun

ktio

nen

13

Page 18: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

6 Wichtige FunktionenFu

nktio

nB

esch

reib

ung

arra

y_un

shift

(arr

ay,e

lem

ent1

,...)

Fügt

Ele

men

team

Anf

ang

eine

sA

rray

shi

nzu.

arra

y_sh

ift(a

rray

)E

ntfe

rnen

des

erst

enE

lem

ente

sau

sde

mA

rray

.ar

ray_

push

(arr

ay,e

lem

ent1

,...)

Fügt

Ele

men

team

End

eei

nes

Arr

ays

hinz

u.ar

ray_

pop(

arra

y)E

ntfe

rntd

asle

tzte

Ele

men

taus

dem

Arr

ay.

arra

y_pa

d(ar

ray,

anza

hl,e

lem

ent)

elem

ent

wird

anda

sso

lang

ear

ray

ange

fügt

bis

anza

hlE

le-

men

teer

reic

htis

t.an

zahl

>0

=A

nfüg

enan

End

e,an

zahl

<0

=A

nfüg

enan

Anf

ang.

arra

y_sl

ice(

arra

y,po

sitio

n,an

zahl

)S

chne

idet

abpo

sitio

ndi

ean

zahl

Ele

men

teau

s.R

ückg

abe-

wer

tis

tei

nne

ues

Arr

ay.

Ist

anza

hlne

gativ

wird

von

hint

enau

sges

chni

tten.

arra

y_sp

lice(

arra

y,po

sitio

n,an

zahl

,ele

men

t)E

rset

ztal

lean

zahl

Ele

men

teab

posi

tion

durc

hel

emen

t.W

irdde

rle

tzte

Par

amet

erw

egeg

lass

enw

erde

ndi

ean

zahl

Ele

men

teab

posi

tion

gelö

scht

.ar

ray_

valu

e(ar

ray)

Lies

talle

Ele

men

teei

neas

sozi

ativ

enA

rray

sau

s.R

ückg

abe-

wer

tist

ein

neue

sA

rray

.ar

ray_

keys

(arr

ay)

Lies

talle

Sch

lüss

elei

neas

sozi

ativ

enA

rray

sau

s.R

ückg

abe-

wer

tist

ein

neue

sA

rray

.ar

ray_

flip(

arra

y)Ve

rtau

scht

Wer

teun

dS

chlü

ssel

bzw

.Ind

izes

eine

s(a

ssoz

ia-

tiven

(Arr

ays.

Rüc

kgab

ewer

tist

ein

neue

sA

rray

.ar

ray_

reve

rse(

arra

y)D

reht

die

Rei

henf

olge

der

Ele

men

teei

nes

Arr

ays

um.R

ück-

gabe

wer

tist

ein

neue

sA

rray

.ar

ray_

mer

ge(a

rray

1,ar

ray2

,n)

Fass

tdie

Arr

ays

1bi

sn

inei

nem

neue

nA

rray

zusa

mm

en.

arra

y_di

ff(ar

ray1

,arr

ay2[

,arr

ay])

Erm

ittel

tdi

eU

nter

schi

ede

zwis

chen

Arr

ays.

Verg

leic

htar

-ra

y1m

itar

ray2

und

gibt

die

Unt

ersc

hied

ezu

rück

.G

ibt

ein

Arr

aym

ital

len

Wer

ten

von

arra

y1zu

rück

,die

inke

inem

der

ande

ren

Arr

ays

vorh

ande

nsi

nd.

in_a

rray

(nee

dle,

hays

tack

[,bo

olst

rict])

Prü

ft,ob

ein

Wer

tin

eine

mA

rray

exis

tiert

.W

enn

der

dritt

eP

aram

eter

aufT

RU

Ege

setz

twird

verg

leic

htin

_arr

ay()

nich

tnu

rde

nW

erts

onde

rnau

chde

nTy

pde

sge

such

ten

Wer

tes

need

lem

itde

nE

lem

ente

nde

sA

rray

s.un

set(a

rray

[i])

Lösc

htE

lem

enti

aus

arra

y.

Tab.

6.5:

Arr

ayfu

nktio

nen

14

Page 19: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

6 Wichtige Funktionen

Funktion Beschreibungdie(meldung) Gibt eine Meldung aus und beendet das

aktuelle Skript.list(...) list() wird verwendet, um eine Liste von

Variablen innerhalb einer Operation zu-zuweisen.

error_log(meldung, typ[, ziel]) Sendet eine Fehlermeldung an das Log-File des Webservers, einen TCP Portoder eine Datei. Der erste Parameter,message, ist die Fehlermeldung, die mit-geschrieben werden soll. Type gibt an,wo die Meldung abgelegt werden soll.0: Log-Systems Betriebssystem, 1: mel-dung wird via Email an ziel gesendet, 2:meldung wird über den PHP-Debuggergesendet, 3: meldung wird an die Dateiangefügt, die mit ziel angegeben wurde.

print_r(array) Gibt Variablen-Informationen in lesbarerForm aus.

Tab. 6.6: Sonderfunktionen

<?php

$info = array(’Kaffee’, ’braun’, ’Koffein’);

// Auflisten aller Variablenlist($drink, $color, $power) = $info;echo "$drink ist $color und $power macht es zu etwas besonderem.\n";

// Ein paar davon auflistenlist($drink, , $power) = $info;echo "$drink hat $power.\n";

// Oder nur die dritte ausgebenlist( , , $power) = $info;echo "Ich brauche $power!\n";

?>

15

Page 20: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

7 Klassen

7 Klassen

7.1 Grundstruktur

class klassenname{[variablendeklaration}[variablendeklaration]

function methode1(){

}

function methode2(){

}}

• Der Konstruktor hat die gleiche Bezeichnung wie die Klasse.• Ein Objekt wird mit dem Schlüsselwort new erzeugt:

$obj = new classe1().• Der Zugriff und Aufruf von Attributen und Methoden erfolgt über den

Selbstzeiger $this:echo $this->variable1;.

• Mit dem Schlüsselwort extends wird die Basisklasse angegeben:

class AbgeleiteteKlasse extends Basisklasse{

}

7.2 Instantiieren einer Klasse

myObj = new myClass();

16

Page 21: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

7 Klassen

7.3 Sichtbarkeiten

PrivateEine Methode oder ein Attribut was als private deklariert ist, darf nur inner-halb der Klasse genutzt werden. Eine Veränderung eines Attributes oder Auf-rufen einer Methode von außen ist nicht möglich. Auch Erben einer Klassehaben keinen Zugriff darauf. Es ist allgemein üblich Attribute als private zudeklarieren und zum Setzen und Abfragen eine public Methode (Getter undSetter Methoden) zu schreiben.

PublicMethoden und Attribute die als public deklariert werden sind überall und fürjeden sichtbar.

Protectedprotected ist ähnlich wie private. Methoden und Attribute sind nach außennicht sichtbar oder erreichbar. Der Unterschied ist, das sie jedoch in abgelei-teten Klassen verfügbar sind.

statische Variablen oder MethodenMit dem Schlüsselwort static werden Methoden oder Eigenschaften einerKlasse als statisch deklariert. Statisch heißt, dass diese Methoden oder Ei-genschaften verwendet werden können, ohne dass ein Objekt aus der Klasseerzeugt wurde. Drr Zugriff erfolgt über den Klassennamen:

echo MeineKlasse::$statische_eigenschaft;

17

Page 22: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

8 Datenbankanbindung (MySQL)

8 Datenbankanbindung (MySQL)

8.1 Wichtige Funktionen

18

Page 23: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

8 Datenbankanbindung (MySQL)

Funk

tion

Bes

chre

ibun

gm

ysql

_con

nect

(hos

t,be

nutz

er,p

assw

ort)

Ste

lltei

neVe

rbin

dung

zude

mD

MS

her.

Rüc

kgab

ewer

tis

tein

Verw

eis

aufd

enD

BM

Sod

erfa

lse.

mys

ql_c

lose

(ver

bind

ung)

Sch

ließt

die

Verb

indu

ngzu

dem

DB

MS

auf

die

verb

in-

dung

verw

eist

.m

ysql

_sel

ect_

db(d

bnam

e,ve

rbin

dung

)W

ählt

die

Dat

enba

nkdb

nam

eau

fde

mm

itve

rbin

dung

verb

unde

nen

DB

MS

aus.

mys

q_db

_que

ry(d

bnam

e,sq

lBef

ehl,

verb

indu

ng)

Führ

tdie

insq

lBef

ehla

ngeg

eben

eA

bfra

geau

fdie

indb

-na

me

ange

gebe

neD

aten

bank

mit

der

verb

indu

ngau

s.R

ückg

abew

erti

stei

neE

rgeb

nism

enge

.m

ysql

_que

ry(s

qlB

efeh

l,ve

rbin

dung

)Fü

hrt

die

insq

lBef

ehl

ange

gebe

neA

bfra

geau

s.Zu

vor

mus

sei

neD

aten

bank

ausg

ewäh

ltw

orde

nse

in.R

ückg

a-be

wer

tist

eine

Erg

ebni

smen

ge.

mys

ql_e

rror

()Li

efer

tde

nFe

hler

text

der

zuvo

rau

sgef

ührt

enM

ySQ

LO

pera

tion.

mys

ql_f

etch

_arr

ay(e

rgeb

nis)

Lief

ert

eine

nD

aten

satz

als

asso

ziat

ives

Arr

ay,

als

nu-

mer

isch

esA

rray

oder

beid

es.L

iefe

rtei

nA

rray

das

dem

aktu

elle

nD

aten

satz

ents

pric

htod

erFA

LSE

,wen

nke

ine

wei

tere

nD

aten

sätz

evo

rlieg

en.A

lsS

chlü

ssel

für

die

as-

sozi

ativ

enIn

dize

sw

erde

ndi

eFe

ldna

men

benu

tzt.

mys

ql_f

etch

_row

(erg

ebni

s)Li

efer

tei

nen

Dat

ensa

tzau

sde

mA

nfra

geer

gebn

ism

itde

rübe

rgeb

enen

Ken

nung

.Der

Dat

ensa

tzw

irdal

sA

rray

gelie

fert

.W

iede

rhol

tes

Auf

rufe

nvo

nm

ysql

_fet

ch_r

ow()

liefe

rtde

nnä

chst

enD

aten

satz

des

Anf

rage

erge

bnis

ses

oder

FALS

E,w

enn

kein

ew

eite

ren

Dat

ensä

tze

verfü

gbar

sind

.m

ysql

_num

_fiel

ds(e

rgeb

nis)

Lief

ertd

ieA

nzah

lder

Feld

erei

nerE

rgeb

nism

enge

.m

ysql

_num

_row

s(er

gebn

is)

Lief

ertd

ieA

nzah

lder

Zeile

nei

nerE

rgeb

nism

enge

.m

ysql

_fiel

d_na

me(

erge

bnis

,ind

ex)

Gib

tden

Nam

ende

sm

itin

dex

beze

ichn

eten

Feld

esau

s.

Tab.

8.1:

MyS

QL

mit

PH

P

19

Page 24: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

8 Datenbankanbindung (MySQL)

mysql_fetch_array:

<?phpmysql_connect("localhost", "mysql_user", "mysql_password")

or die("Keine Verbindung möglich: " . mysql_error());mysql_select_db("mydb");

$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result, MYSQL_NUM)) {printf ("ID: %s Name: %s", $row[0], $row[1]);

}

mysql_free_result($result);?>

mysql_fetch_row:

<?php$result = mysql_query("SELECT id,email FROM people WHERE id = ’42’");if (!$result) {

echo ’Abfrage konnte nicht ausgeführt werden: ’ . mysql_error();exit;

}$row = mysql_fetch_row($result);

echo $row[0]; // 42echo $row[1]; // Der Wert von email?>

8.2 Kurzeinführung in SQL

8.2.1 Anlegen von Datenbanken und Tabellen

Eine Datenbank wird über ein SQL-Query angelegt. Die SQL-Syntax zumAnlegen einer Datenbank lautet:

CREATE DATABASE <name>

Anlegen einer Tabelle:

CREATE TABLE <tabellenname>(<feldname> <datentyp> <weitere Attribute>,<feldname> <datentyp> <weitere Attribute>, ...)

20

Page 25: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

8 Datenbankanbindung (MySQL)

Indiziert man eine Spalte, wird diese separat, sortiert abgelegt und verwal-tet. Das hat zur Folge das Abfragen schneller und effizienter bearbeitet wer-den können. Man sollte die Felder einer Tabelle indiziere, die am häufigstensortiert bzw. abgefragt werden. Hinzukommt, dass man über die ID einesDatensatzes auf den selbigen zugreift. Also sollte auch dieses Feld indiziertwerden. Ein großer Nachteil von Indizes ist die Tatsache, dass sämtliche Da-tenänderungen langsamer werden (Die Sortierung muss ja neu aufgebautwerden). Man muss also immer abwägen, ob ein Index auf Feld Sinn macht.Indizes werden mit dem SQL-Schlüsselwort KEY oder INDEX definiert. Dannfolgt der Name des Indexes und Klammern das zu indizierende Feld:

PRIMARY KEY(id), KEY idx_name (name), KEY idx_vorname (vorname)!.

Ein vollständiger Query für das Anlegen einer Adressdatenbank könnte jetztso aussehen:

CREATE TABLE Kontakte(id INT NOT NULL AUTO_INCREMENT, name varchar(20), vorname varchar(20), strasse varchar(55), plz int, ort varchar(50),

telefon1 varchar(17), telefon2 varchar(17), fax varchar(17), email1varchar(50), email2 varchar(50), url varchar(50), gebdat date,

firma varchar(25), ts timestamp, PRIMARY KEY(id), KEY idx_name (name),KEY idx_vorname (vorname))

NOT NULL: Das Feld muss einen Wert enthalten.AUTO_INCREMENT: Der Inhalt des Feldes wird bei jedem neuen Datensatzinkrementiert.

Gelöscht wird eine Tabelle mit

DROP TABLE <tabellenname>

8.2.2 Datensätze einfügen, editieren und löschen

Datensatz einfügen:

INSERT INTO <tabellenname>(<feldname>, <feldname>,...) VALUES(’<wert>’, ’<wert>’, ...)

Datensatz editieren:

21

Page 26: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

8 Datenbankanbindung (MySQL)

UPDATE <tabellenname> SET <feldname>=’<wert>’ WHERE <feldname>=’<wert>’

Wichtig hier bei ist die WHERE-Klausel mit der wir den SQL-Ausdruck nurauf einem bestimmten Datensatz anwenden. Würde dies weglassen, wärenalle Datensätze betroffen. Günstiger weise nimmt man hier ein Feld, welcheseinen Datensatz eindeutig identifiziert. Man kann auch Felder der Tabellekombinieren, um einen Datensatz eindeutig zu identifizieren.

Datensatz löschen:

DELETE FROM <tabellenname> WHERE <feldname>=’<wert>’

8.2.3 Filter-Operationen

Die SELECT-Anweisung startet eine Abfrage. Aufgrund der Syntax kann eineSELECT-Anweisung auch als „SFW-Block“ (SELECT, FROM, WHERE) be-zeichnet werden. Jeder Abfrage gibt eine neue Tabelle mit den Datensätzenzurück, die den Abfragekriterien entsprechen.

Ein SELECT-Statement hat folgende allgemeine Syntax:

SELECT <feldname>, <feldname>, <...> FROM <tabellenname>WEITERE_SQL_ANWEISUNGEN

Will man sich nur alle Nachname und die Vornamen ausgeben lassen, sosieht das passende SQL-Statement so aus:

SELECT name, vorname FROM kontakte

Will man sich alle Spalten einer Tabelle ausgeben lassen, kann man anstattalle Spaltennamen hinzuschreiben auch ein „*“ als allgemeinen Platzhalterangeben:

SELECT * FROM kontakte

ORDER BY:Mit ORDER BY wird festgelegt, nach welcher Spalte bzw. welchen Spaltensortiert werden soll. Mit ASC werden die Zeilen aufsteigend, mit DESC ab-steigend sortiert. Ist nichts angegeben, wird aufsteigend sortiert. Hier eineinfaches Beispiel, Datensätze nach dem Nachnamen sortieren:

22

Page 27: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

8 Datenbankanbindung (MySQL)

SELECT name, vorname FROM kontakte ORDER BY name

Will man nach mehreren Spalten gleichzeitig sortieren, gibt man die weiterenSpalten einfach durch ein Komma getrennt mit an:

SELECT name, vorname FROM kontakte ORDER BY name, ort

WHERE:Mit WHERE kann man gezielt Datensätze filtern.

SELECT * FROM <tabellenname> WHERE <feldname>=’<wert>’

Alle Meiers aus einer Adress-Datenbank:

SELECT * FROM kontakte WHERE name=’meier’

Die Ausdrücke können auch mit AND, OR und NOT miteinander verknüpftwerden. Desweiteren ist es möglich Platzhalter zu verwenden: «_» steht fürein beliebiges Zeichen und «%» für eine beliebige Zeichenkette. Auch kannman natürlich WHERE noch mit ORDER BY und weiteren SQL-Ausdrückenkombinieren.

LIKE:Immer dann, wenn man in Textfeldern im Suchmuster Platzhalter oder Jo-kerzeichen verwenden will, können die Vergleichsoperatoren nicht verwen-det werden. Statt dessen muss man in diesen Fällen auf den Operator LIKEzurückgreifen. Sollen zum Beispiel alle Personen mit der Vorwahl „0561“ ge-funden werden, sähe dies so aus:

SELECT name, vorname, telefon1 FROM kontakte WHERE telefon1 LIKE ’%0561%’

BETWEEN:BETWEEN wählt alle Spalten aus die zwischen den oberen und unteren Wertliegen.

SELECT name, vorname, gebdat FROM kontakte WHERE gebdat BETWEEN ’1980-01-01’ and ’2005-01-01’

Diese Abfrage liefert uns alle Personen, die zwischen 1. Januar 1980 und 1.Januar 2005 geboren wurden. Man beachte die Angabe des Datums: yyyy-mm-dd. So und nicht anders muss es angegeben werden, damit es der myS-QL Server versteht.

23

Page 28: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

8 Datenbankanbindung (MySQL)

IN:Der letzte Operator aus dieser Gruppe ist der IN-Operator. Er wird benutzt,wenn man nicht mit einem einzelnen Wert, sondern mit einer Wertemengevergleichen will. Beispiel: Wir wollen alle Personen die entweder „Schmidt“oder „Meier“ heißen. Mit dem Vergleichsoperator „=“ und einer Oder-Ver-knüpfung wird das bei vielen Werten, die zu vergleichen sind, schnell rechtunübersichtlich. Einfacher geht es mit dem IN-Operator:

SELECT name, vorname FROM kontakte WHERE name IN (’schmidt’, ’meier’)

24

Page 29: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

9 Ausnahmebehandlung

9 Ausnahmebehandlung

• Exceptions werden mit throw geworfen und• mit catch(Exception $e) abgefangen.• Da PHP eine Garbage Collection besitzt, gibt keine Ressourcenschutz-

blöcke mit finally.

<?phpfunction inverse($x) {

if (!$x) {throw new Exception(’Division durch Null.’);

}else return 1/$x;

}

try {echo inverse(5) . "\n";echo inverse(0) . "\n";

} catch (Exception $e) {echo ’Exception abgefangen: ’, $e->getMessage(), "\n";

}

// Ausführung fortsetzenecho ’Hallo Welt’;?>

25

Page 30: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

10 Formulare

10 Formulare

Abb. 10.1: Beispiel Formular

HTML Code:

<html><head>

<title>Beispiel Formular</title></head><body>

<form action=’formulardaten.php’ method=’POST’><!-- Texteingabefelder --><p>Vorname: <input name=’vorname’ type=’text’></input></p><p>Nachname: <input name=’name’ type=’text’></input></p><p>

<!-- Radionbuttons -->

26

Page 31: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

10 Formulare

<input checked type=’radio’ name=’farbe’ value=’rot’></input>Rot<br>

<input type=’radio’ name=’farbe’ value=’blau’></input>Blau</p><p>

<!-- Checkboxen --><input type=’checkbox’ name=’preis1’ value=’Auto’></input>Auto

<br><input type=’checkbox’ name=’preis2’ value=’Reise’></input>

Reise</p><p><!-- Listenauswahlfeld --><select name=’farben’ size=’4’>

<option>Rot</option><option selected>Blau</option><option>Grün</option><option>Gelb</option>

</select></p><!-- Mehrzeiliges Texteingabefeld --><p><textarea name=’eingabefeld’ cols=’40’ rows=’5’>Vorgegebener

Text</textarea></p><p><input type=’Submit’ name=’senden’ value=’OK’></input></p>

</form></body>

</html>

• Mit der Methode POST werden die Daten im HTML-Header übertra-gen. Sie sind somit nicht direkt einsehbar. Es können eine große Mengean Daten versendet werden.

• Wird die Methode GET verwendet, werden die Daten über die URLübertragen. Die Daten sind einsehbar und die Datenmenge ist auf diemaximal mögliche Länge der URL begrenzt.

• Im Attribut action wird das aufzurufende PHP-Skript angegeben, wel-ches die Daten entgegen nimmt.

• Die Bezeichner der Eingabefelder dienen PHP als Variablennamen beimEmpfang.

• Der Input-Typ Submit erzeugt eine Schaltfläche, die das Formular ab-schickt. Wird der Input-Typ Reset gewählt, wird eine Schaltfläche er-zeugt, welche die Formulardaten wieder löscht und das Formular zu-rücksetzt.

• value bestimmt die Beschriftung der Schaltfläche.• Das Attribut name spielt bei Schaltflächen keine Rolle.• Wird das size-Attribut gesetzt, bestimmt es die Höhe bzw. Anzahl an

sichtbaren Zeilen in einem Auswahlfeld.

27

Page 32: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

10 Formulare

• Wird das Attribut value belegt, wird der Wert von Value in das PHP-Skript übertragen und nicht die Beschriftung des Eintrages.

• Die Option selected bzw. checked wählt einen Eintrag bzw. Option aus.

Zugehöriges PHP-Skript:

<html><head>

<title>Übertragene Formulardaten</title></head><body>

<?php$vorname = $_POST[’vorname’];$name = $_POST[’name’];$farbe = $_POST[’farbe’];$preis_1 = $_POST[’preis1’];$preis_2 = $_POST[’preis2’];$gewinn = $preis_1." ". $preis_2;$farben = $_POST[farben];echo "<p>Vorname: ".$vorname."</p>\n";echo "<p>Nachname: ".$name."</p>\n";echo "<p>Farbe: ".$farbe."</p>\n";echo "<p>Gewinn: ".$gewinn."</p>\n";echo "<p>Farbauswahl: ".$farben."</p>\n";

?></body>

</html>

• Mit $_POST[’variablenname’] werden die Daten „abgeholt“. Bzw. ent-sprechend mit $_GET.

Formulardaten sollten immer auf ihre Gültigkeit bzw. Korrektheit überprüftwerden. Besonders wichtig ist dies beim Versand von E-Mails oder wennDaten in eine Datenbank übernommen werden sollen. Dabei muss daraufgeachtet erden, dass der Benutzer keine PHP-Befehle, SQL-Abfragen oderunerwünschte HTML-Tags eingibt. Siehe dazu die Funktionen stripslashesund strip_tags.

28

Page 33: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

11 Arbeiten mit Dateien

11 Arbeiten mit Dateien

Textdateien zeilenweise auslesen:

if (filesize($filename) > 0) {$fp = @fopen($filename, "r") or die ("Kann Datei nicht lesen."

);while($line = fgets($fp, 1024)){

echo ($line)."<br>";}fclose($fp);

}

29

Page 34: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

11 Arbeiten mit Dateien

Funk

tion

Bes

chre

ibun

gba

sena

me(

pfad

)E

xtra

hier

tDat

eina

me

aus

Pfa

dpf

ad.

chdi

r(ve

rzei

chni

s)W

echs

elti

nda

sVe

rzei

chni

sve

rzei

chni

s.cl

osed

ir(ve

rzei

chni

s_ha

ndle

)S

chlie

ßtda

sH

andl

eau

fein

Verz

eich

nis.

copy

(que

lle,z

iel)

Dat

eiko

pier

en.

dirn

ame(

pfad

)E

xtra

hier

tden

Verz

eich

nisn

amen

aus

pfad

.di

sk_f

ree_

spac

e(ve

rzei

chni

s)Li

efer

tden

freie

nS

peic

herp

latz

von

Verz

eich

nis

verz

eich

nis.

disk

_tot

al_s

pace

(ver

zeic

hnis

)Li

efer

tdie

Ges

amtg

röße

von

Verz

eich

niss

esve

rzei

chni

s.fc

lose

(dat

ei_h

andl

e)S

chlie

ßtdi

eD

atei

date

i_ha

ndle

.fe

of(d

atei

_han

dle)

Prü

ft,ob

derD

atei

zeig

eram

End

ede

rDat

eida

tei_

hand

lest

eht.

fget

s(da

tei_

hand

le,l

aeng

e)Li

estZ

eile

aus

Dat

eida

tei_

hand

leab

den

Dat

eize

iger

bis

zum

Zeile

num

bruc

hod

erdi

em

itla

enge

ange

ge-

bene

Anz

ahlZ

eich

en.

file(

date

inam

en)

Ein

lese

nvo

nD

atei

date

inam

ein

ein

Arr

ay.

file_

exis

ts(d

atei

nam

e)pr

üft,

obD

atei

date

inam

eod

erVe

rzei

chni

sex

istie

rt.

file_

get_

cont

ents

(dat

eina

me)

Lies

tDat

eida

tein

ame

inei

neZe

iche

nket

te.

file_

put_

cont

ents

(dat

eina

me)

Sch

reib

tZei

chen

kette

inD

atei

date

inam

e.fil

eatim

e(da

tein

ame)

letz

teZu

griff

sdat

umvo

nda

tein

ame.

filec

time(

date

inam

e)le

tzte

Änd

erun

gsda

tum

von

date

inam

e.fil

emtim

e(da

tein

ame)

letz

teda

teiä

nder

ung

von

date

inam

e.fil

esiz

e(da

tein

ame)

Dat

eigr

öße

von

date

inam

e.fil

etyp

e(da

tein

ame)

Dat

eity

pvo

nda

tein

ame.

fope

n(da

tein

ame,

mod

us)

Öffn

etD

atei

date

inam

e.„w

“-sc

hrei

ben,

„r“-

lese

n,„a

“-an

häng

en.

fput

s(da

tei_

hand

le,t

ext[,

laen

ge])

Sch

reib

tte

xtab

den

Dat

eize

iger

inD

atei

date

i_ha

ndle

.E

ntw

eder

den

ganz

enTe

xtod

erdi

em

itla

enge

ange

gebe

nA

nzah

lZei

chen

.fs

eek(

date

i_ha

ndle

,offs

et[,

whe

nce]

)Po

sitio

nier

tde

nD

atei

zeig

erum

die

mit

offs

etan

gege

bene

Anz

ahlB

ytes

.W

enn

whe

nce

nich

tan

gege

ben

wird

vom

Dat

eian

fang

.whe

nce:

SE

EK

_SE

T-S

etzt

Posi

tion

glei

chof

fset

byte

s,S

EE

K_C

UR

-Set

ztPo

sitio

nau

fdie

aktu

elle

Ste

llepl

usof

fset

,SE

EK

_EN

D-S

etzt

die

Posi

tion

ans

End

ede

rDat

eipl

usof

fset

(neg

ativ

).fte

ll(da

tei_

hand

le)

Lief

ertP

ositi

onde

sD

atei

zeig

ers

von

date

i_ha

ndle

.ftr

unca

te(d

atei

_han

dle)

Kür

ztD

atei

date

i_ha

ndle

.fw

rite(

date

i_ha

ndle

,zei

chen

kette

[,la

enge

])S

chre

ibtz

eich

enke

ttein

Dat

eida

tei_

hand

le.l

aeng

egi

btdi

ezu

schr

eibe

nde

Anz

ahlZ

eich

enan

.m

kdir(

verz

eich

nis)

Ers

tellt

Verz

eich

nis

verz

eich

nis.

open

dir(

verz

eich

nis)

Öffn

etVe

rzei

chni

sve

rzei

chni

s.re

addi

r(ve

rzei

chni

s_ha

ndle

)Li

estd

ienä

chst

eD

atei

inVe

rzei

chni

sve

rzei

chni

s_ha

ndle

.re

nam

e(al

t,ne

u)D

atei

umbe

nenn

en.

rmdi

r(ve

rzei

chni

s)Lö

scht

Verz

eich

nis

verz

eich

nis.

touc

h(da

tein

ame)

Legt

leer

eD

atei

date

inam

ean

.un

link(

date

inam

e)Lö

scht

Dat

eida

tein

ame.

writ

e(ha

ndle

,tex

t)S

chre

ibt(

text

)indi

em

itha

ndle

beze

ichn

ete

Dat

ei.

Tab.

11.1

:Dat

eifu

nktio

nen

30

Page 35: Autor: Michael Puff · 2011-03-03 · 2 PHP und HTML 2 PHP und HTML PHP Code wird mit

Literaturverzeichnis

Literaturverzeichnis

[1] Jasmin Schmidt, Oliver Leiss: PHP 5 - Das Einsteigerseminar. cbhv,1. Auflage, 2007, 3-8266-7283-6

[2] Internet: PHP Manual. http://www.php.net/manual, Stand: Dezember2010

31