Transcript
Page 1: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Thomas Theis

Einstieg in PHP 5.5 und MySQL 5.6

2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Page 2: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Auf einen Blick

Auf einen Blick

1 Einführung ............................................................................................................... 17

2 PHP-Programmierkurs ......................................................................................... 21

3 Daten senden und auswerten ........................................................................... 117

4 Datenbanken mit MySQL .................................................................................... 177

5 Objektorientierung in PHP ................................................................................. 243

6 Fehler behandeln, Sicherheit erhöhen ........................................................... 299

7 Zeichenketten ......................................................................................................... 309

8 Dateien und Verzeichnisse ................................................................................. 327

9 Felder ......................................................................................................................... 351

10 Datum und Zeit ...................................................................................................... 375

11 Mathematische Funktionen .............................................................................. 399

12 Sessions und Cookies ........................................................................................... 417

13 Datenbanken mit SQLite3 und PDO ................................................................ 447

14 XML ............................................................................................................................. 463

15 Ajax ............................................................................................................................. 475

16 Grafiken programmieren .................................................................................... 493

17 PDF-Dateien erstellen .......................................................................................... 519

18 Automatisierter E-Mail-Versand ...................................................................... 541

19 Beispielprojekte ..................................................................................................... 547

2489-5.book Seite 3 Montag, 8. April 2013 1:47 13

Page 3: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

5

Inhalt

1 Einführung 17

1.1 Zu diesem Buch ......................................................................................................... 17

1.2 PHP – eine Beschreibung ......................................................................................... 18

1.3 PHP – Vorzüge ........................................................................................................... 18

1.4 Aufbau dieses Buchs ................................................................................................ 19

1.5 Systemvoraussetzungen ......................................................................................... 20

2 PHP-Programmierkurs 21

2.1 Einbettung von PHP in HTML ................................................................................. 21

2.2 Kommentare .............................................................................................................. 23

2.3 Variablen, Datentypen und Operatoren .............................................................. 25

2.3.1 Namen ........................................................................................................ 25

2.3.2 Variablen für Zahlen ................................................................................. 26

2.3.3 Rechenoperatoren für Zahlen .................................................................. 27

2.3.4 Variablen und Operatoren für Zeichenketten ....................................... 30

2.4 Einfache Formularauswertungen .......................................................................... 32

2.4.1 Eingabeformular ....................................................................................... 33

2.4.2 Auswertung mit $_POST .......................................................................... 35

2.4.3 Umwandlung von Zeichenketten in Zahlen .......................................... 36

2.5 Verzweigungen ......................................................................................................... 40

2.5.1 if-Anweisung ............................................................................................. 41

2.5.2 if/else-Anweisung ..................................................................................... 42

2.5.3 Logische Operatoren ................................................................................. 46

2.5.4 Rangordnung der Operatoren ................................................................. 48

2.5.5 Mehrfache Verzweigung .......................................................................... 49

2.5.6 switch/case-Anweisung ........................................................................... 51

2.5.7 HTML in Verzweigungsblöcken ............................................................... 53

2489-5.book Seite 5 Montag, 8. April 2013 1:47 13

Page 4: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

6

2.6 Schleifen ..................................................................................................................... 54

2.6.1 for-Schleife ................................................................................................. 55

2.6.2 Beispiele für for-Schleifen ........................................................................ 56

2.6.3 Geschachtelte for-Schleifen .................................................................... 58

2.6.4 Schleifen und Tabellen ............................................................................. 59

2.6.5 while-Schleife ............................................................................................ 62

2.6.6 do while-Schleife ....................................................................................... 64

2.6.7 Schleifenabbruch mit break ..................................................................... 65

2.6.8 Schleifenfortsetzung mit continue ......................................................... 67

2.7 Felder ........................................................................................................................... 67

2.7.1 Numerisch indizierte Felder ..................................................................... 68

2.7.2 Assoziative Felder ...................................................................................... 70

2.8 Funktionen ................................................................................................................. 75

2.8.1 Ein erstes Beispiel ...................................................................................... 75

2.8.2 Definition, Aufruf und Funktionstypen .................................................. 77

2.8.3 Externe Dateien ......................................................................................... 78

2.8.4 Funktionen mit einem Parameter ........................................................... 78

2.8.5 Funktionen mit mehreren Parametern .................................................. 81

2.8.6 Rückgabewert einer Funktion .................................................................. 84

2.8.7 Kopie und Referenz ................................................................................... 86

2.8.8 Gültigkeitsbereich von Variablen ............................................................ 90

2.8.9 Variable Parameterlisten ......................................................................... 93

2.8.10 include-Anweisung ................................................................................... 95

2.9 Behandlung von Fehlern ......................................................................................... 98

2.9.1 Ohne Ausnahmebehandlung .................................................................. 98

2.9.2 Mit Ausnahmebehandlung ...................................................................... 100

2.10 Beispiele ...................................................................................................................... 103

2.10.1 Formatierung von Zahlen ........................................................................ 103

2.10.2 Geldanlage ................................................................................................. 105

2.10.3 Steuertabelle ............................................................................................. 108

2.10.4 Bestimmung des Ostersonntags ............................................................. 111

3 Daten senden und auswerten 117

3.1 Textelemente ............................................................................................................ 117

3.1.1 Einzeilige Texteingabefelder ................................................................... 118

2489-5.book Seite 6 Montag, 8. April 2013 1:47 13

Page 5: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

7

3.1.2 Mehrzeilige Texteingabefelder ............................................................... 120

3.1.3 Passworteingabefeld, verstecktes Element ........................................... 122

3.2 Auswahlelemente ..................................................................................................... 125

3.2.1 Radiobutton-Gruppe ................................................................................ 126

3.2.2 Einfaches Auswahlmenü .......................................................................... 129

3.2.3 Kontrollkästchen ....................................................................................... 130

3.2.4 Mehrfaches Auswahlmenü ...................................................................... 132

3.3 Aktionselemente ...................................................................................................... 135

3.3.1 Absenden und Zurücksetzen ................................................................... 135

3.3.2 Allgemeine Buttons .................................................................................. 139

3.4 Weitere Möglichkeiten ............................................................................................ 143

3.4.1 Auswertung in anderem Frame .............................................................. 143

3.4.2 Felder von Formularelementen ............................................................... 145

3.4.3 Formular und Programm in einer Datei ................................................. 149

3.4.4 Submit über Hyperlink, CSS ..................................................................... 151

3.4.5 Daten an Formularziel anhängen ........................................................... 153

3.4.6 Daten an Hyperlink-Ziel anhängen ......................................................... 156

3.4.7 Dateien auf den Server hochladen .......................................................... 159

3.5 Beispiele ...................................................................................................................... 162

3.5.1 Grundrechenarten .................................................................................... 163

3.5.2 Pizzabestellung ......................................................................................... 166

3.5.3 Kopfrechnen .............................................................................................. 169

3.6 PHP-Programme publizieren .................................................................................. 175

4 Datenbanken mit MySQL 177

4.1 MySQL und phpMyAdmin ....................................................................................... 178

4.1.1 phpMyAdmin ............................................................................................. 179

4.1.2 Beispieldatenbank und -tabelle .............................................................. 180

4.1.3 Datenbank erzeugen ................................................................................ 180

4.1.4 Tabelle erzeugen ....................................................................................... 181

4.1.5 Primärschlüssel erzeugen ........................................................................ 182

4.1.6 Datensätze eintragen ............................................................................... 182

4.2 PHP und MySQL ......................................................................................................... 184

4.2.1 Verbindung aufnehmen, Datensätze anzeigen .................................... 184

2489-5.book Seite 7 Montag, 8. April 2013 1:47 13

Page 6: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

8

4.2.2 Datensätze auswählen ............................................................................. 188

4.2.3 Ausgabe in eine HTML-Tabelle ................................................................ 193

4.2.4 Auswahl von Daten über ein Suchformular ........................................... 195

4.2.5 Datensätze erzeugen ................................................................................ 204

4.2.6 Ändern mehrerer Datensätze .................................................................. 208

4.2.7 Ändern eines bestimmten Datensatzes ................................................. 210

4.2.8 Datensätze löschen .................................................................................. 215

4.2.9 Benutzeroberfläche mit JavaScript und CSS .......................................... 218

4.2.10 Ein Datenbankbrowser ............................................................................. 226

4.3 MySQL-Datenbanken publizieren ......................................................................... 234

4.3.1 Verbindung aufnehmen ........................................................................... 235

4.3.2 Export einer Tabelle .................................................................................. 237

4.3.3 Tabelle und Daten per Programm erzeugen .......................................... 240

5 Objektorientierung in PHP 243

5.1 Was ist objektorientierte Programmierung? ...................................................... 243

5.2 Klassen und Objekte ................................................................................................ 244

5.2.1 private, protected und public .................................................................. 246

5.2.2 Anwendung der Klasse ............................................................................. 246

5.3 Konstruktor ................................................................................................................ 248

5.4 Destruktor .................................................................................................................. 251

5.5 Optionale Parameter ............................................................................................... 253

5.6 Handles und Kopien ................................................................................................. 255

5.6.1 Vordefiniertes Klonen ............................................................................... 256

5.6.2 Benutzerdefiniertes Klonen ..................................................................... 259

5.6.3 Übergabe eines Objekts an eine Funktion ............................................. 260

5.7 Vererbung ................................................................................................................... 261

5.7.1 Grundlagen ................................................................................................ 261

5.7.2 Konstruktoren bei Vererbung .................................................................. 265

5.8 Dereferenzierung von Objekten ............................................................................ 266

5.9 Konstanten, statische Eigenschaften und Methoden ....................................... 268

5.10 Abstrakte Klassen und Methoden ......................................................................... 271

5.11 Magische Konstanten .............................................................................................. 273

2489-5.book Seite 8 Montag, 8. April 2013 1:47 13

Page 7: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

9

5.12 Operator »instanceof« ............................................................................................. 274

5.13 Hilfsfunktionen ......................................................................................................... 275

5.14 Ausgabemethode »__toString()« .......................................................................... 277

5.15 Serialisierung ............................................................................................................. 279

5.16 Funktion »__autoload()« ........................................................................................ 281

5.17 Beispiel »Scheck« ...................................................................................................... 283

5.18 Beispiel »Kopfrechnen« ........................................................................................... 288

5.18.1 Programmablauf ....................................................................................... 288

5.18.2 Klasse »Spiel« ............................................................................................ 292

5.18.3 Klasse »Aufgabe« ...................................................................................... 295

6 Fehler behandeln, Sicherheit erhöhen 299

6.1 Anzeige von Fehlern ................................................................................................. 299

6.2 Dauerhafte Konfiguration der Anzeige von Fehlern ......................................... 301

6.3 Temporäre Konfiguration der Anzeige von Fehlern .......................................... 304

6.4 Angriffe und Sicherheit ........................................................................................... 305

6.4.1 Programmpakete ...................................................................................... 305

6.4.2 Sichtbare Daten ......................................................................................... 306

6.4.3 Sessions ...................................................................................................... 306

6.4.4 Variablen .................................................................................................... 307

6.4.5 Eingaben prüfen ........................................................................................ 307

6.4.6 Passwörter ................................................................................................. 308

7 Zeichenketten 309

7.1 Länge und Umwandlungsfunktionen .................................................................. 309

7.2 Zeichenketten und Felder ....................................................................................... 312

7.3 Teilzeichenketten ..................................................................................................... 314

7.4 Suchen nach Position ............................................................................................... 317

7.5 Vergleich von Zeichenketten ................................................................................. 319

7.6 Codierung von Zeichen ............................................................................................ 321

2489-5.book Seite 9 Montag, 8. April 2013 1:47 13

Page 8: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

10

7.7 Einfache Verschlüsselung ........................................................................................ 322

7.8 Weitere Verschlüsselungsmethoden .................................................................... 325

8 Dateien und Verzeichnisse 327

8.1 Dateitypen .................................................................................................................. 327

8.2 Lesen einer Zeile aus einer sequenziellen Datei ................................................. 328

8.3 Lesen aller Zeilen einer sequenziellen Datei ....................................................... 330

8.4 Vereinfachtes Lesen einer Datei ............................................................................ 333

8.5 Überschreiben einer sequenziellen Datei ............................................................ 333

8.6 Anhängen an eine sequenzielle Datei .................................................................. 335

8.7 Ein einfacher Zugriffszähler ................................................................................... 339

8.8 Wahlfreier Zugriff ..................................................................................................... 341

8.9 Informationen über Dateien .................................................................................. 344

8.10 Informationen über ein einzelnes Verzeichnis ................................................... 346

8.11 Informationen über den Verzeichnisbaum ......................................................... 349

9 Felder 351

9.1 Operationen für numerisch indizierte Felder ..................................................... 351

9.1.1 Sortierung .................................................................................................. 351

9.1.2 Wert und Position der Extrema ............................................................... 353

9.1.3 Statistische Auswertung .......................................................................... 354

9.1.4 Feld verändern ........................................................................................... 359

9.2 Sortierung eines assoziativen Feldes .................................................................... 361

9.3 Zweidimensionale Felder, allgemein ................................................................... 363

9.4 Zweidimensionale numerische Felder ................................................................. 363

9.5 Zweidimensionale gemischte Felder .................................................................... 367

9.6 Zweidimensionale assoziative Felder ................................................................... 370

9.7 list-Anweisung .......................................................................................................... 372

2489-5.book Seite 10 Montag, 8. April 2013 1:47 13

Page 9: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

11

10 Datum und Zeit 375

10.1 Zeit ermitteln und ausgeben .................................................................................. 375

10.2 Zeit formatiert ausgeben ........................................................................................ 377

10.3 Zeitangabe auf Gültigkeit prüfen ......................................................................... 380

10.4 Absolute Zeitangabe erzeugen .............................................................................. 381

10.5 Relative Zeitangabe erzeugen ............................................................................... 382

10.6 Mit Zeitangaben rechnen ........................................................................................ 384

10.7 Zeitangaben in Datenbanken ................................................................................ 387

10.8 Beispiel »Feiertagsberechnung« ........................................................................... 389

10.9 Kopfrechnen mit Zeitmessung .............................................................................. 393

11 Mathematische Funktionen 399

11.1 Taschenrechnerfunktionen .................................................................................... 399

11.2 Mathematische Konstanten ................................................................................... 400

11.3 Ganzzahlermittlung ................................................................................................. 402

11.4 Extremwerte .............................................................................................................. 403

11.5 Winkelfunktionen .................................................................................................... 404

11.6 Prüffunktionen für Zahlen ...................................................................................... 405

11.7 Zufallszahlen ............................................................................................................. 408

11.8 Mischen ....................................................................................................................... 411

11.8.1 Mischen mit eigenem Algorithmus ........................................................ 411

11.8.2 Mischen mit shuffle() ............................................................................... 413

11.9 Stellenwertsysteme ................................................................................................. 414

12 Sessions und Cookies 417

12.1 Session-Management .............................................................................................. 418

12.2 Beispiel für Sessions: Zugriffszähler ..................................................................... 418

2489-5.book Seite 11 Montag, 8. April 2013 1:47 13

Page 10: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

12

12.3 Beispiel für Sessions: geschützte Website .......................................................... 420

12.3.1 Ablauf ......................................................................................................... 420

12.3.2 Login-Seite ................................................................................................. 422

12.3.3 Intro-Seite .................................................................................................. 423

12.4 Beispiel für Sessions: Webshop ............................................................................. 426

12.4.1 Ablauf ......................................................................................................... 426

12.4.2 Startseite .................................................................................................... 429

12.4.3 Include-Datei ............................................................................................. 430

12.4.4 Tabelle der Artikel ..................................................................................... 431

12.4.5 Warenkorb ................................................................................................. 434

12.4.6 Kasse ........................................................................................................... 437

12.5 Cookies ........................................................................................................................ 438

12.6 Beispiel für Cookies: Besuch ................................................................................... 440

12.7 Beispiel für Cookies: Adressspeicherung ............................................................. 442

13 Datenbanken mit SQLite3 und PDO 447

13.1 SQLite3 ........................................................................................................................ 448

13.2 Datenbankdatei, Tabelle und Datensätze erzeugen ......................................... 448

13.3 Abfrage der Datensätze ........................................................................................... 450

13.4 Benutzeroberfläche mit JavaScript und CSS ....................................................... 452

13.5 Beispiel »Kopfrechnen« ........................................................................................... 457

13.6 PDO .............................................................................................................................. 459

14 XML 463

14.1 Einlesen eines einzelnen Objekts .......................................................................... 463

14.2 Einlesen mehrerer Objekte ..................................................................................... 466

14.3 Zugriff auf Attribute ................................................................................................ 469

14.4 Interne XML-Daten ................................................................................................... 471

14.5 Speicherung von Objekten ..................................................................................... 473

2489-5.book Seite 12 Montag, 8. April 2013 1:47 13

Page 11: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

13

15 Ajax 475

15.1 Hallo Ajax ................................................................................................................... 475

15.2 Parameter senden ..................................................................................................... 478

15.3 Bild tauschen ............................................................................................................. 480

15.4 Mehrere Ergebnisse aus XML-Knoten .................................................................. 482

15.5 Mehrere Ergebnisse aus XML-Attributen ............................................................ 485

15.6 Zugriff auf MySQL-Datenbank ............................................................................... 486

15.7 Weitere Ereignisse .................................................................................................... 489

16 Grafiken programmieren 493

16.1 Installation testen .................................................................................................... 493

16.2 Grafik speichern ........................................................................................................ 495

16.3 Grafik unmittelbar anzeigen .................................................................................. 496

16.4 Text mit internen Fonts ........................................................................................... 498

16.5 Text mit TrueType-Fonts ......................................................................................... 499

16.6 Bild aus einer Datei laden ....................................................................................... 501

16.7 Bilder aus Dateien ineinander einbetten ............................................................. 503

16.8 Ellipsen und Bögen ................................................................................................... 504

16.9 Rechtecke und Polygone ......................................................................................... 506

16.10 Linien und Pixel ......................................................................................................... 507

16.11 Füllen mit Farbe ........................................................................................................ 509

16.12 Darstellung eines Aktienkurses ............................................................................. 511

16.13 Erstellung eines CAPTCHAS .................................................................................... 514

17 PDF-Dateien erstellen 519

17.1 Installation ................................................................................................................. 519

17.2 PDF-Dokument erzeugen ........................................................................................ 520

2489-5.book Seite 13 Montag, 8. April 2013 1:47 13

Page 12: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

14

17.3 Text in Zelle ................................................................................................................ 522

17.4 Fließtext, Schriftparameter .................................................................................... 524

17.5 Tabelle ......................................................................................................................... 526

17.6 Kopf- und Fußzeile ................................................................................................... 529

17.7 Bild aus Datei laden .................................................................................................. 532

17.8 Hyperlinks .................................................................................................................. 533

17.9 Linie, Rechteck, Position .......................................................................................... 537

18 Automatisierter E-Mail-Versand 541

18.1 Eine erste E-Mail ........................................................................................................ 541

18.2 Eine E-Mail mit Header ............................................................................................ 542

18.3 Ein E-Mail-Formular .................................................................................................. 542

18.4 E-Mails mit PHPMailer ............................................................................................. 544

19 Beispielprojekte 547

19.1 Projekt »Chat« ........................................................................................................... 547

19.1.1 Frame-Aufbau ........................................................................................... 547

19.1.2 CSS-Formatierung ..................................................................................... 549

19.1.3 Ausgabe, Version »Textdatei« ................................................................. 549

19.1.4 Darstellung der Textdatei ........................................................................ 550

19.1.5 Ausgabe, Version »Datenbank« .............................................................. 551

19.1.6 Darstellung der Datenbanktabellen ....................................................... 552

19.1.7 Eingabe, Head ............................................................................................ 553

19.1.8 Eingabe, PHP zum Speichern, Version »Textdatei« ............................... 555

19.1.9 Eingabe, PHP zum Speichern, Version »Datenbank« ............................ 556

19.1.10 Eingabe, Formular ..................................................................................... 557

19.1.11 Mögliche Erweiterungen .......................................................................... 558

19.2 Projekt »Blog« ........................................................................................................... 559

19.2.1 Aufbau der Datenbank ............................................................................. 560

19.2.2 Blog für den Betrachter, Programmcode ................................................ 562

19.2.3 Blog für den Betreiber, Programmcode .................................................. 563

2489-5.book Seite 14 Montag, 8. April 2013 1:47 13

Page 13: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

15

19.3 Projekt »Forum« ....................................................................................................... 568

19.3.1 Darstellung, Anmeldung .......................................................................... 569

19.3.2 Darstellung, Hauptbildschirm ................................................................. 569

19.3.3 Darstellung, neuer Beitrag ....................................................................... 571

19.3.4 Datenbank, Tabelle der Teilnehmer ........................................................ 572

19.3.5 Datenbank, Tabelle der Beiträge ............................................................. 573

19.3.6 Passwortvergabe ....................................................................................... 573

19.3.7 Forum, CSS ................................................................................................. 576

19.3.8 Forum, JavaScript-Funktion ..................................................................... 577

19.3.9 Forum, Anmeldung ................................................................................... 579

19.3.10 Forum, Zugangsprüfung und Überschrift .............................................. 580

19.3.11 Forum, neuen Beitrag speichern ............................................................. 582

19.3.12 Forum, Filterung auswählen .................................................................... 582

19.3.13 Forum, Sortierung durchführen .............................................................. 584

19.3.14 Forum, Filterung durchführen ................................................................. 585

19.3.15 Forum, Sortierung auswählen ................................................................. 587

19.3.16 Forum, Beiträge darstellen ....................................................................... 588

19.3.17 Forum, neuen Beitrag eingeben .............................................................. 588

A HTML für PHP 591

A.1 Die erste Seite ............................................................................................................ 592

A.2 Formulare ................................................................................................................... 593

A.3 Tabellen ...................................................................................................................... 596

A.4 Hyperlinks .................................................................................................................. 597

B Installationen 599

B.1 Installationen unter Windows ............................................................................... 599

B.1.1 Installation des Pakets XAMPP ................................................................ 599

B.1.2 Installation des Pakets EasyPHP .............................................................. 601

B.1.3 phpinfo ....................................................................................................... 602

B.1.4 FTP-Client FileZilla ..................................................................................... 602

2489-5.book Seite 15 Montag, 8. April 2013 1:47 13

Page 14: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Inhalt

16

B.2 Installationen unter Ubuntu Linux ....................................................................... 604

B.2.1 Editor .......................................................................................................... 604

B.2.2 Apache-Webserver .................................................................................... 604

B.2.3 PHP .............................................................................................................. 605

B.2.4 MySQL ......................................................................................................... 605

B.2.5 phpMyAdmin ............................................................................................. 606

B.2.6 XAMPP ........................................................................................................ 606

B.2.7 Probleme bei XAMPP ................................................................................ 607

B.3 Installation für Mac OS X ........................................................................................ 607

C Der Autor 609

Index .......................................................................................................................................... 611

2489-5.book Seite 16 Montag, 8. April 2013 1:47 13

Page 15: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

17

1Kapitel 1

Einführung

In diesem Kapitel erfahren Sie, warum PHP eine gute Wahl ist. Ich stelle

Ihnen die Vorzüge von PHP vor und beschreibe den Aufbau des Buchs.

Damit der Einstieg leicht fällt …

1.1 Zu diesem Buch

PHP ist eine weitverbreitete Sprache zur Entwicklung dynamischer Inter-

netanwendungen, deren Nutzung seit ihrer ersten Einführung stetig

ansteigt. PHP wird inzwischen auf Millionen Websites weltweit eingesetzt.

BestsellerDieses Buch erscheint aktuell zu PHP 5.5 und MySQL 5.6. Es ist, wie schon seine

Vorgängerbücher zu PHP 4 und PHP 5 mit MySQL 5, eine leicht verständliche

Einführung in die wichtigsten Einsatzgebiete von PHP und MySQL. Zahlrei-

che Kommentare und E-Mails zu diesem Bestseller haben gezeigt, dass es als

Lehrbuch sehr gut angenommen wird. Viele Leser fühlen sich erfolgreich an

die Hand genommen und in die PHP-Welt eingeführt. Die verschiedenen

Auflagen des Buchs wurden ständig überarbeitet bzw. erweitert.

Für den Einsteiger ergeben sich bei PHP 5.5 und MySQL 5.6 im Vergleich zu

älteren Versionen nur wenige Änderungen. Die Beispiele in diesem Buch

laufen unter allen Versionen von PHP 5 und MySQL 5, bis auf eine Aus-

nahme, siehe finally.

Die Software auf dem beiliegenden Datenträger können Sie sehr einfach

installieren. Mit ihrer Hilfe können Sie schnell eigene PHP-Programme ent-

wickeln und testen. PHP ist in vielen kostengünstigen Angeboten von

Website-Providern enthalten, sodass Sie die erlernten Kenntnisse dort

erfolgreich einsetzen können.

PHP lernenZum Erlernen von PHP anhand des vorliegenden Buchs werden von Ihnen,

dem künftigen PHP-Programmierer, lediglich Grundkenntnisse auf Anwen-

derebene von Microsoft Windows oder Linux verlangt. Sie sollten mit Dateien

und Verzeichnissen sowie mit einem Browser arbeiten können. Machen Sie

sich nun mit dieser erfolgreichen und einfachen Sprache vertraut!

2489-5.book Seite 17 Montag, 8. April 2013 1:47 13

Page 16: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

1 Einführung

18

Für die Hilfe bei der Erstellung dieses Buchs bedanke ich mich bei Christine

Siedle, Anne Scheibe und Almut Poll sowie dem ganzen Team von Galileo

Press.

1.2 PHP – eine Beschreibung

Dynamische

Internetseiten

PHP ist die Abkürzung für PHP Hypertext Preprocessor. PHP ermöglicht

Entwicklern die Erzeugung dynamischer Internetseiten, mit denen soge-

nannte Web Applications, wie z.B. E-Commerce-Systeme, Chats oder Foren,

erstellt werden. Im Unterschied zu statischen Internetseiten kann sich der

Inhalt aufgrund von Aktionen des Benutzers oder neuer Basisinformatio-

nen, die z.B. aus Datenbanken stammen, jederzeit ändern.

MySQL PHP unterstützt insbesondere die einfache Auswertung von Formularen,

mit denen ein Benutzer Daten an eine Website senden kann. Es ermöglicht

die Zusammenarbeit mit vielen verschiedenen Datenbanksystemen. Die

weitaus meisten PHP-Entwickler setzen das Datenbanksystem MySQL ein.

Ein besonderer Schwerpunkt dieses Buchs ist daher der Zusammenarbeit

von PHP und MySQL gewidmet.

1.3 PHP – Vorzüge

Gründe für

die Verwendung

von PHP

PHP bietet im Vergleich zu anderen Programmiersprachen viele Vorteile.

Als wichtigste Gründe für die Nutzung von PHP sind zu nennen:

� Es dient der Entwicklung von Internetanwendungen.

� Es ermöglicht die einfache Entwicklung von Programmen.

� Es unterstützt verschiedene Plattformen.

� Es lässt sich leicht in den beliebten Apache-Webserver integrieren.

� Es ist erschwinglich und flexibel.

Im Folgenden sollen einige Eigenschaften von PHP näher betrachtet wer-

den: Erlernbarkeit, Einsatzbereich, Preis und Ausführungsort.

Erlernbarkeit

Leicht erlernbar Im Vergleich zu anderen Sprachen ist PHP relativ leicht erlernbar. Dies liegt

hauptsächlich daran, dass PHP im Gegensatz zu anderen Sprachen aus-

schließlich für die Webserver-Programmierung entwickelt wurde und nur

die dafür notwendigen Bestandteile enthält.

2489-5.book Seite 18 Montag, 8. April 2013 1:47 13

Page 17: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

1.4 Aufbau dieses Buchs

19

1Einsatzbereich

Auf vielen

Systemen

einsetzbar

PHP wird von vielen Typen von Webservern einheitlich unterstützt.

Andere Sprachen kommen nur auf bestimmten Servertypen zum Einsatz.

Ein PHP-Programmierer kann also seine Kenntnisse später auf den unter-

schiedlichsten Systemen nutzen.

Preis

Frei verfügbarPHP kostet nichts; Sie müssen weder einen Compiler noch ein Entwick-

lungssystem kaufen. Es kann unter anderem auf dem ebenfalls frei verfüg-

baren und weitverbreiteten Apache-Webserver unter verschiedenen

Betriebssystemen eingesetzt werden.

Ausführungsort

ServerprogrammEine Internetanwendung kann entweder auf einem Webserver (Server-

programm) oder beim Betrachter einer Internetseite (Clientprogramm) aus-

geführt werden. PHP-Programme sind stets Serverprogramme. Beim

Betrachter wird also lediglich die Ausgabe der Programme dargestellt. Der

Browser des Betrachters muss nur in der Lage sein, den vom Server gesende-

ten HTML-Code umzusetzen. Er muss keine besonderen Eigenschaften besit-

zen, die mit der Programmiersprache des Webservers zusammenhängen.

Die Seiten können daher auch von älteren Browsern dargestellt werden.

Dateien und

Datenbanken

Darüber hinaus haben Serverprogramme im Unterschied zu Clientpro-

grammen (zum Beispiel in JavaScript) Zugriff auf Textdateien und Daten-

banken. Dies ermöglicht erst die Durchführung häufig vorkommender

Vorgänge, wie zum Beispiel die Suche nach bestimmten Daten oder die

Übermittlung von Daten an den Server.

SicherheitDer Betrachter kann keine Rückschlüsse auf den erzeugenden Programm-

code oder auf die Quelldaten ziehen. Die Programme können also vom

Betrachter nicht kopiert und zu eigenen Zwecken weiterverwendet werden.

1.4 Aufbau dieses Buchs

Alle Kapitel des Buchs haben den folgenden, lernfreundlichen Aufbau:

Grundlagen und

Anwendung

� Schritt für Schritt werden den bis zum jeweiligen Zeitpunkt vorhande-

nen Grundlagen und Kenntnissen neue Elemente hinzugefügt. Ich

beschreibe die Theorie und erläutere sie anhand von vollständigen,

anschaulichen und ausführlich kommentierten Beispielen.

2489-5.book Seite 19 Montag, 8. April 2013 1:47 13

Page 18: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

1 Einführung

20

Übungen � Sie haben die Möglichkeit, Übungsaufgaben zum jeweiligen Thema zu

lösen. Sie sollen dabei das soeben erworbene Wissen umsetzen und

haben damit eine unmittelbare Erfolgskontrolle. Sie können so selbst

feststellen, ob Sie den betreffenden Abschnitt verstanden haben.

� Die Lösungen zu allen Übungsaufgaben finden Sie (zusammen mit dem

Code aller Programmbeispiele) auf dem Datenträger zum Buch. Sollten

Sie eine Übungsaufgabe nicht vollständig gelöst haben, so kann Ihnen

die dortige Lösung als Hilfestellung dienen.

� Sofern Sie selbst eine lauffähige Lösung gefunden haben, können Sie sie

mit der vorgeschlagenen Lösung vergleichen. Beim Programmieren gilt

der Grundsatz: Es gibt beliebig viele richtige Lösungen und nicht nur

eine sogenannte Musterlösung. Allerdings soll mit dem Aufbau der Bei-

spiel- und Übungsprogramme auch ein übersichtlicher und lesbarer

Programmierstil vermittelt werden, der ein strukturiertes Erlernen und

professionelles Programmieren ermöglicht.

1.5 Systemvoraussetzungen

Voraussetzungen PHP läuft unter zahlreichen Betriebssystemen, unter anderem unter Win-

dows, Mac OS X und Linux. Sie benötigen für Ihre Arbeit mit PHP neben

einem Browser zum Betrachten bzw. Benutzen der Seiten die folgende

Minimalausstattung:

� einen PHP-fähigen Webserver (zum Beispiel Apache)

� PHP selbst

� das Datenbanksystem MySQL

Buch-Datenträger Die beiden Installationspakete XAMPP und EasyPHP für Windows beinhal-

ten jeweils alle notwendigen Bestandteile sowie weitere nützliche Software

und sind bereits fertig vorkonfiguriert. Sie finden sie auf dem Datenträger

zum Buch. Die Installationen beschreibe ich in Anhang B. Die beschriebene

Installation für Ubuntu Linux sorgt für die richtige Konfiguration.

2489-5.book Seite 20 Montag, 8. April 2013 1:47 13

Page 19: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

351

9

Kapitel 9

Felder

In Kapitel 2, »PHP-Programmierkurs«, habe ich Ihnen bereits eindimensio-

nale numerisch indizierte bzw. assoziative Felder vorgestellt. In diesem

Kapitel erhalten Sie weiterführende Informationen zu Feldern.

9.1 Operationen für numerisch indizierte Felder

Es gibt einige Operationen, die häufig mit Feldern ausgeführt werden.

Diese Operationen sollen zunächst besprochen werden.

9.1.1 Sortierung

Feld sortierenIm folgenden Beispiel wird ein Feld, das Temperaturwerte beinhaltet, auf-

steigend sortiert und ausgegeben. Anschließend wird das Feld absteigend

sortiert und ausgegeben. Das Programm:

<html><body><?php

$tp = array(17.5, 19.2, 21.8, 21.6, 20.2, 16.6);$gr = count($tp);

/* unsortiert ausgeben */for($i=0; $i<$gr; $i++)

echo "$tp[$i] &nbsp; ";echo " unsortiert<br />";

/* aufsteigend sortieren */sort($tp,SORT_NUMERIC);

/* ausgeben */for($i=0; $i<$gr; $i++)

2489-5.book Seite 351 Montag, 8. April 2013 1:47 13

Page 20: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

352

echo "$tp[$i] &nbsp; ";echo "aufsteigend sortiert<br />";

/* absteigend sortieren */rsort($tp,SORT_NUMERIC);/* ausgeben */for($i=0; $i<$gr; $i++)

echo "$tp[$i] &nbsp; ";echo "absteigend sortiert";

?></body></html>

Listing 9.1 Datei num_sortieren.php

count() Die Funktion count() ermittelt die Größe eines Feldes, also die Anzahl der

Feldelemente.

Die beiden Funktionen

� sort() für aufsteigende Sortierung und

� rsort() für absteigende Sortierung (engl.: reverse sort)

haben jeweils zwei Parameter. Der erste Parameter ist der Name des Feldes,

und der zweite Parameter gibt den Typ der Sortierung an.

Dabei gibt es die folgenden Möglichkeiten:

� SORT_REGULAR: normale Sortierung

� SORT_NUMERIC: Sortierung nach Zahlenwerten

� SORT_STRING: Sortierung nach Zeichen

Die Ausgabe des Programms sehen Sie in Abbildung 9.1.

Abbildung 9.1 Sortierung eines Feldes

2489-5.book Seite 352 Montag, 8. April 2013 1:47 13

Page 21: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.1 Operationen für numerisch indizierte Felder

353

9

Die Temperaturextremwerte, also der größte und der kleinste Wert des Fel-

des, lassen sich leicht ermitteln. Sie entsprechen dem ersten und dem letz-

ten Wert des Feldes nach der Sortierung.

9.1.2 Wert und Position der Extrema

Minimum,

Maximum

Falls die Elemente des Feldes nicht sortiert werden sollen, also ihre

ursprüngliche Sortierung erhalten bleiben soll, ist die Ermittlung der Tem-

peraturextrema etwas aufwendiger.

Für das oben angegebene Feld sollen Wert und Position der Temperaturex-

trema ermittelt werden. Dazu wählen wir folgende Vorgehensweise:

� Zunächst wird angenommen, dass der erste Wert gleichzeitig der Maxi-

malwert ist.

� Die anderen Werte werden mit diesem Maximalwert verglichen. Falls

einer der Werte größer ist als der bisherige Maximalwert, ist dieser Wert

der neue Maximalwert. Die Position und der Wert werden gespeichert.

Nach der Bearbeitung des gesamten Feldes steht das gewünschte Ergeb-

nis fest.

� Die gleiche Methode wird für das Minimum durchgeführt.

Das Programm:

<html><body><?php

$tp = array(17.5, 19.2, 21.8, 21.6, 20.2, 16.6);$gr = count($tp);

/* erste Annahme */$maxpos = 0;$minpos = 0;$max = $tp[0];$min = $tp[0];

/* restliche Elemente untersuchen */for($i=1; $i<$gr; $i++){

if($tp[$i] > $max){

2489-5.book Seite 353 Montag, 8. April 2013 1:47 13

Page 22: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

354

$max = $tp[$i];$maxpos = $i;

}if($tp[$i] < $min){

$min = $tp[$i];$minpos = $i;

}}/* unverändert ausgeben */for($i=0; $i<$gr; $i++)

echo "<b>$i:</b> $tp[$i] &nbsp; ";echo "<br />Maximum: $max bei Position $maxpos<br />";echo "Minimum: $min bei Position $minpos";

?></body></html>

Listing 9.2 Datei num_extrema.php

Zur Kontrolle wird das Feld nach der Ermittlung der Extrema noch einmal

mit Position und Wert in Abbildung 9.2 ausgegeben.

Abbildung 9.2 Wert und Position der Extrema

Zur schnellen Extremwertbestimmung stehen auch die mathematischen

Funktionen max() und min() zur Verfügung. Allerdings liefern diese nur

den Wert, nicht aber die Position des Extremwerts.

9.1.3 Statistische Auswertung

Mithilfe des folgenden Programms wird festgestellt, welcher Anteil einer

Menge von Temperaturwerten oberhalb einer definierten Grenze liegt.

Diese Grenze kann vom Benutzer gewählt werden. Die Werte werden aus

2489-5.book Seite 354 Montag, 8. April 2013 1:47 13

Page 23: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.1 Operationen für numerisch indizierte Felder

355

9

einer sequenziellen Datei eingelesen (siehe Kapitel 8, »Dateien und Ver-

zeichnisse«), in der sie zeilenweise gespeichert worden sind, siehe Abbil-

dung 9.3.

Abbildung 9.3 Eingabedatei

Zunächst das Formular:

<html><body><p>Bitte geben Sie den Grenzwert ein:</p><form action = "num_statistik.php" method = "post">

<p><input name="gr" /> Grenzwert</p><p><input type="submit" /><input type="reset" /></p>

</form></body></html>

Listing 9.3 Datei num_statistik.htm

Das Formular sehen Sie in Abbildung 9.4.

Abbildung 9.4 Eingabeformular für den Grenzwert

2489-5.book Seite 355 Montag, 8. April 2013 1:47 13

Page 24: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

356

Der PHP-Programmcode zur Auswertung:

<html><body><?phpif(!file_exists("num_statistik.txt"))exit("Datei konnte nicht gefunden werden");

$fp = @fopen("num_statistik.txt","r");if(!$fp)exit("Datei konnte nicht geöffnet werden");

// Alle Werte in ein Feld lesen$i = 0;while (!feof($fp)){

$zeile = fgets($fp, 100);$tp[$i] = doubleval($zeile);$i++;

}fclose($fp);

// Anzahl feststellen$anzahl = count($tp);

// Werte oberhalb der Grenze zählen$c = 0;$grenze = doubleval($_POST["gr"]);for($i=0; $i<$anzahl; $i++)

if ($tp[$i] > $grenze)$c++;

// Ausgabeif ($anzahl > 0){

$anteil = $c / $anzahl * 100;$ausgabe = number_format($anteil,2);echo "$ausgabe Prozent der Werte

liegen oberhalb von $grenze";}else

echo "Die Datei beinhaltete keine Werte";

2489-5.book Seite 356 Montag, 8. April 2013 1:47 13

Page 25: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.1 Operationen für numerisch indizierte Felder

357

9

?></body></html>

Listing 9.4 Datei num_statistik.php

Nach einem erfolgreichen Öffnen der Textdatei num_statistik.txt werden

die Werte zeilenweise gelesen, mithilfe der Funktion doubleval() in Zahlen

verwandelt und im Feld $tp gespeichert. Der Index des Feldes steht

zunächst auf 0; nach dem Lesen jeder Zeile vergrößert er sich um 1. Es kann

also das nächste Element des numerischen Feldes eingelesen werden.

Der Einsatz der Funktion doubleval() ist hier notwendig, da die Werte aus

der Datei zunächst als Zeichenketten eingelesen werden und in Zahlen mit

Nachkommastellen umgewandelt werden müssen:

$zeile = fgets($fp, 100);$tp[$i] = doubleval($zeile);

Falls Sie schon Erfahrungen mit anderen Programmiersprachen haben,

wird Ihnen spätestens an dieser Stelle auffallen, dass das Feld dynamisch

vergrößert wird. Sie müssen daher zu Beginn des Programms keine stati-

sche Feldgröße festlegen.

Der vom Benutzer eingegebene Grenzwert steht im Programm in der Vari-

ablen $_POST["gr"] zur Verfügung. Auch diese Zeichenkette wird in eine

Zahl mit Nachkommastellen (Variable $grenze) umgewandelt:

$grenze = doubleval($_POST["gr"]);

Innerhalb einer for-Schleife über alle Elemente des Feldes wird der Zähler

(Variable $c) erhöht, falls ein Element gefunden wird, das oberhalb der ein-

gegebenen Grenze liegt:

if ($tp[$i] > $grenze)$c++;

Der prozentuale Anteil dieser Werte an der Gesamtzahl der Elemente wird

berechnet (Variable $anteil). Diese Variable wird auf zwei Stellen nach dem

Komma formatiert:

$ausgabe = number_format($anteil,2);

2489-5.book Seite 357 Montag, 8. April 2013 1:47 13

Page 26: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

358

Die Ausgabe des Programms zeigt Abbildung 9.5.

Abbildung 9.5 Statistische Auswertung

Übung »u_num«

In einer Textdatei (u_num.txt) sind Namen und Altersangaben aller Mit-

arbeiter einer Firma gespeichert. In der ersten Zeile steht der Name des

ersten Mitarbeiters, in der zweiten Zeile das Alter des ersten Mitarbeiters,

in der dritten Zeile der Name des zweiten Mitarbeiters usw., siehe Abbil-

dung 9.6.

Abbildung 9.6 Eingabedatei der Übung »u_num«

Schreiben Sie ein Programm (Datei u_num.php), mit dem Informationen

über die Altersstruktur ermittelt und wie in Abbildung 9.7 ausgegeben

werden.

Abbildung 9.7 Ausgabe der Übung »u_num«

2489-5.book Seite 358 Montag, 8. April 2013 1:47 13

Page 27: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.1 Operationen für numerisch indizierte Felder

359

9

9.1.4 Feld verändern

Es gibt zahlreiche Funktionen zum komfortablen Umgang mit Feldern.

Ihre Namen beginnen jeweils mit array_. Als Beispiel sollen vier Funktio-

nen dienen, die zur schnellen Veränderung eines Feldes führen. Dies sind

im Einzelnen:

array_push()� array_push()

zum Hinzufügen von Elementen am Ende des Feldes

array_pop()� array_pop()

zum Entfernen von Elementen am Ende des Feldes

array_unshift()� array_unshift()

zum Hinzufügen von Elementen am Anfang des Feldes

array_shift()� array_shift()

zum Entfernen von Elementen am Anfang des Feldes

Die Anzahl der Elemente des Feldes verändert sich dabei jedes Mal. Die bei-

den letzten Funktionen führen zusätzlich zu einer Verschiebung der restli-

chen Feldelemente. Ein Beispiel:

<html><body><?php

function ausgabe($x){$gr = count($x);for($i=0; $i<$gr; $i++)echo "$x[$i] ";

echo "<br /> <br />";}

$st = array("Berlin", "Rom");ausgabe($st);

array_push($st, "Bern", "Brüssel");echo "array_push<br />";ausgabe($st);

$stadt = array_pop($st);

2489-5.book Seite 359 Montag, 8. April 2013 1:47 13

Page 28: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

360

echo "array_pop<br />";echo "Entfernt: $stadt<br />";ausgabe($st);

array_unshift($st, "Madrid", "London");echo "array_unshift<br />";ausgabe($st);

$stadt = array_shift($st);echo "array_shift<br />";echo "Entfernt: $stadt<br />";ausgabe($st);

?></body></html>

Listing 9.5 Datei num_aendern.php

Erläuterung:

� Zunächst wird ein Feld mit zwei Elementen erzeugt und ausgegeben.

Nach jeder Veränderung innerhalb des Programms wird das Feld zur

Kontrolle erneut ausgegeben.

� Mit array_push() werden zwei Elemente am Ende angefügt. Mit array_

unshift() werden zwei Elemente am Anfang eingefügt. Die Anzahl der

Elemente, die angefügt werden können, ist beliebig. Die neuen Elemente

befinden sich anschließend in der gleichen Reihenfolge wie im Aufruf

der Funktion.

� Mit array_pop() wird das letzte Element des Feldes entfernt und als

Rückgabewert geliefert. Das Gleiche passiert bei array_shift(), nur am

Anfang des Feldes. Der Rückgabewert wird jeweils ausgegeben.

� Nach dem Aufruf der Funktionen array_unshift() und array_shift()

haben die restlichen Feldelemente ihre Position und ihren Index verän-

dert.

Eine Darstellung der jeweils aktuellen Feldelemente inklusive Index sehen

Sie in Abbildung 9.8.

2489-5.book Seite 360 Montag, 8. April 2013 1:47 13

Page 29: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.2 Sortierung eines assoziativen Feldes

361

9

Abbildung 9.8 Feld ändern

9.2 Sortierung eines assoziativen Feldes

Key, ValueAssoziative Felder lassen sich nach Key (= Schlüssel) bzw. nach Value (=

Wert) sortieren. Dazu dienen die Funktionen asort(), arsort(), ksort()

und krsort(). Im folgenden Programm stelle ich Ihnen diese Sortierfunkti-

onen anhand eines Beispiels vor:

<html><body><?phpfunction ausgabe($tpfunc, $kommentar){

foreach($tpfunc as $name=>$wert)echo "$name: $wert &nbsp; ";

echo "$kommentar<br />";}

$tp["Mo"] = 17.5;$tp["Di"] = 19.2;$tp["Mi"] = 21.8;$tp["Do"] = 21.6;$tp["Fr"] = 17.5;$tp["Sa"] = 20.2;$tp["So"] = 16.6;ausgabe($tp, "unsortiert");

2489-5.book Seite 361 Montag, 8. April 2013 1:47 13

Page 30: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

362

asort($tp, SORT_NUMERIC);ausgabe($tp, "aufsteigend nach Werten");

arsort($tp, SORT_NUMERIC);ausgabe($tp, "absteigend nach Werten");

ksort($tp, SORT_STRING);ausgabe($tp, "aufsteigend nach Keys");

krsort($tp, SORT_STRING);ausgabe($tp, "absteigend nach Keys");?></table></body></html>

Listing 9.6 Datei assoz_sortieren.php

Es wird ein assoziatives Feld mit sieben Werten erzeugt – ein Wert pro

Wochentag. Anschließend erfolgen die Sortierungen:

� Die Funktion asort() sortiert das Feld nach aufsteigendem Wert.

� Die Funktion arsort() sortiert das Feld nach absteigendem Wert.

� Die Funktion ksort() sortiert das Feld nach aufsteigendem Schlüssel.

� Die Funktion krsort() sortiert das Feld nach absteigendem Schlüssel.

Die Sortierung nach Wert erfolgt numerisch. Die Sortierung nach Schlüssel

erfolgt anhand von Zeichen, da der Schlüssel eine Zeichenkette ist. Zur

Kontrolle wird das Feld nach der jeweiligen Sortierung ausgegeben. In allen

Fällen bleibt die Zuordnung von Key zu Value erhalten. Das Feld wird

sowohl unsortiert als auch nach jedem Sortiervorgang ausgegeben, siehe

Abbildung 9.9.

Abbildung 9.9 Sortierung eines assoziativen Feldes

2489-5.book Seite 362 Montag, 8. April 2013 1:47 13

Page 31: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.4 Zweidimensionale numerische Felder

363

9

9.3 Zweidimensionale Felder, allgemein

Bei mehrdimensionalen Feldern können Sie sowohl numerische und asso-

ziative Felder als auch gemischte Felder anwenden. Ein gemischtes Feld

beinhaltet sowohl numerische als auch assoziative Komponenten.

Betrachten wir einmal die folgende Tabelle 9.1. Sie ist Ihnen bereits aus Kapi-

tel 4, »Datenbanken mit MySQL«, bekannt und soll hier der Einführung von

zweidimensionalen Feldern dienen. Es wurde nur das Feld Geburtstag weg-

gelassen, um das Programm nicht zu aufwendig werden zu lassen.

Die oben angegebenen Daten sollen in einem zweidimensionalen Feld

abgelegt werden, um sie innerhalb eines Programms bearbeiten zu kön-

nen. Im ersten Beispiel ist dies ein rein numerisches Feld und im zweiten

Beispiel ein gemischtes Feld.

Später erläutere ich Ihnen, wie Sie die Daten aus einer Datenbank in ein

zweidimensionales assoziatives Feld einlesen können. Dadurch ergibt sich

innerhalb des Programms eine permanente Zugriffsmöglichkeit auf die

gesamten Daten, ohne erneut eine Datenbankabfrage durchführen zu

müssen.

9.4 Zweidimensionale numerische Felder

Zwei IndizesEin zweidimensionales numerisches Feld hat zwei Indizes statt eines Inde-

xes. Der erste Index stellt die Nummer der Zeile und der zweite Index die

Nummer der Spalte dar. Dies ist nur ein mögliches Vorstellungsmodell,

genauso gut könnte es umgekehrt sein. Sie sollten allerdings bei einem ein-

mal gewählten Modell bleiben, denn dies erleichtert die Bearbeitung zwei-

dimensionaler Probleme (und später die Bearbeitung höherdimensionaler

Probleme).

Name Vorname Personalnummer Gehalt

Maier Hans 6714 3500,00

Schmitz Peter 81343 3750,00

Mertens Julia 2297 3621,50

Tabelle 9.1 Inhalt einer Datenbanktabelle

2489-5.book Seite 363 Montag, 8. April 2013 1:47 13

Page 32: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

364

Im folgenden Beispiel sind die Daten der oben angegebenen Tabelle (ohne

Überschrift) in einem zweidimensionalen Feld abgelegt:

<html><body><?php

// 1. Zeile und 2. Zeile$pers = array(array("Maier", "Hans", 6714, 3500),

array("Schmitz", "Peter", 81343, 3750));

// 3. Zeile$pers[2][0] = "Mertens";$pers[2][1] = "Julia";$pers[2][2] = 2297;$pers[2][3] = 3621.50;

echo "<table border='1'>";for($i=0; $i<3; $i++){

echo "<tr>";for($k=0; $k<4; $k++)

echo "<td>" . $pers[$i][$k] . "</td>";echo "</tr>";

}echo "</table>";

?></body></html>

Listing 9.7 Datei num_zweidim.php

Es werden zwei Techniken zur Erzeugung eines zweidimensionalen Feldes

gezeigt:

� Mithilfe der Funktion array() wird die Variable $pers zu einem Feld mit

zwei Elementen. Diese Elemente sind wiederum Teilfelder, haben die

Namen $pers[0] und $pers[1] und bestehen jeweils aus vier Elementen.

Die Nummerierung der Elemente beginnt sowohl beim ersten als auch

beim zweiten Index bei 0. Jedes Teilfeld wurde ebenfalls mithilfe der

Funktion array() erzeugt.

2489-5.book Seite 364 Montag, 8. April 2013 1:47 13

Page 33: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.4 Zweidimensionale numerische Felder

365

9

� Mehrdimensionale Felder können Sie, genau wie eindimensionale Fel-

der, einfach durch die Zuweisung einzelner Elemente erzeugen oder ver-

größern. Dies ist hier mit den Zuweisungen in der Form $pers[2][0] =

"Mertens"; usw. geschehen. Dabei müssen Sie die bisherige Nummerie-

rung beachten; andernfalls könnten auch hier vorhandene Elemente

überschrieben werden.

Insgesamt hat das Feld nun zwölf Elemente: drei Teilfelder mit je vier Ele-

menten. Die Struktur erkennen Sie in Tabelle 9.2.

Diese Elemente werden anschließend mithilfe einer geschachtelten for-

Schleife ausgegeben. Eine Zeile der Tabelle wird als eine Zeile auf dem Bild-

schirm dargestellt. Dabei nimmt die Schleifenvariable $i nacheinander die

verwendeten Werte für den Zeilenindex (0 bis 2) an. Die Schleifenvariable

$k nimmt nacheinander die verwendeten Werte für den Spaltenindex (0 bis

3) an. Die Ausgabe des Programms sehen Sie in Abbildung 9.10.

Name des

Elements

Zeilenindex des

Elements

Spaltenindex des

Elements

Wert des

Elements

$pers[0][0] 0 0 "Maier"

$pers[0][1] 0 1 "Hans"

$pers[0][2] 0 2 6714

$pers[0][3] 0 3 3500

$pers[1][0] 1 0 "Schmitz"

$pers[1][1] 1 1 "Peter"

$pers[1][2] 1 2 81343

$pers[1][3] 1 3 3750

$pers[2][0] 2 0 "Mertens"

$pers[2][1] 2 1 "Julia"

$pers[2][2] 2 2 2297

$pers[2][3] 2 3 3621,50

Tabelle 9.2 Zweidimensionales numerisches Feld

2489-5.book Seite 365 Montag, 8. April 2013 1:47 13

Page 34: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

366

Abbildung 9.10 Zweidimensionales numerisches Feld

Hinweis

Einfache Variablen, Elemente von eindimensionalen numerischen Fel-

dern und Objekteigenschaften lassen sich auch innerhalb von Zeichen-

ketten notieren, um zum Beispiel eine Ausgabeanweisung übersichtlicher

zu gestalten. Elemente von assoziativen Feldern oder von Feldern mit

mehr als einer Dimension müssen Sie außerhalb von Zeichenketten

notieren.

Übung »u_num_zweidim«

Speichern Sie die Daten aus der Tabelle der Festplatten aus Kapitel 4,

»Datenbanken mit MySQL«, in einem zweidimensionalen Feld ab, ohne

das Feld prod. Geben Sie anschließend die Daten dieses zweidimensiona-

len Feldes wie in Abbildung 9.11 auf dem Bildschirm aus (u_num_zwei-

dim.php).

Abbildung 9.11 Ergebnis der Übung »u_num_zweidim«

2489-5.book Seite 366 Montag, 8. April 2013 1:47 13

Page 35: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.5 Zweidimensionale gemischte Felder

367

9

9.5 Zweidimensionale gemischte Felder

Ein Index und

ein Schlüssel

Ein zweidimensionales gemischtes Feld hat ebenfalls zwei Indizes. Der

erste Index stellt die Nummer der Zeile und der zweite Index die Bezeich-

nung der Spalten als Schlüssel dar. Dies ist lediglich ein mögliches Vorstel-

lungsmodell:

<html><body><?php

// 1. Zeile und 2. Zeile$pers = array(array("Name"=>"Maier", "Vorname"=>"Hans",

"Pnr"=>6714, "Gehalt"=>3500),array("Name"=>"Schmitz", "Vorname"=>"Peter","Pnr"=>81343, "Gehalt"=>3750));

// 3. Zeile$pers[2]["Name"] = "Mertens";$pers[2]["Vorname"] = "Julia";$pers[2]["Pnr"] = 2297;$pers[2]["Gehalt"] = 3621.50;echo "<table border='1'>";for($i=0; $i<3; $i++){

echo "<tr>";foreach($pers[$i] as $name=>$wert)

echo "<td>$name: $wert</td>";echo "</tr>";

}echo "</table>";

?></body></html>

Listing 9.8 Datei num_assoz.php

In dem Feld $pers sind die Daten aus der Tabelle und außerdem die Spal-

tenüberschriften (als Schlüssel) abgelegt. Es werden zwei Techniken zur

Erzeugung eines Feldes gezeigt:

2489-5.book Seite 367 Montag, 8. April 2013 1:47 13

Page 36: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

368

� Mithilfe der Funktion array() wird die Variable $pers zu einem numeri-

schen Feld mit zwei Elementen. Die Nummerierung des numerischen

Feldes beginnt bei 0.

� Die beiden Elemente des Feldes sind assoziative Teilfelder, haben die

Namen $pers[0] und $pers[1] und bestehen jeweils aus vier Elementen.

Die einzelnen assoziativen Teilfelder werden genauso wie eindimensio-

nale assoziative Felder (mit Schlüssel und Wert) erzeugt.

� Gemischte Felder können auch einfach durch die Zuweisung einzelner

Elemente erzeugt oder vergrößert werden. Dies ist hier mit den Zuwei-

sungen in der Form $pers[2]["Name"] = "Mertens"; usw. geschehen.

Insgesamt hat das Feld nun zwölf Elemente: drei Teilfelder mit je vier Ele-

menten. Die Struktur erkennen Sie in Tabelle 9.3.

Diese Elemente werden anschließend mithilfe einer geschachtelten

Schleife ausgegeben. Eine Zeile der Tabelle wird als eine Zeile auf dem Bild-

Name des Elements Index des

Teilfeldes

Key des Elements

innerhalb des Teilfeldes

Wert des

Elements

$pers[0]["Name"] 0 "Name" "Maier"

$pers[0]["Vorname"] 0 "Vorname" "Hans"

$pers[0]["Pnr"] 0 "Pnr" 6714

$pers[0]["Gehalt"] 0 "Gehalt" 3500

$pers[1]["Name"] 1 "Name" "Schmitz"

$pers[1]["Vorname"] 1 "Vorname" "Peter"

$pers[1]["Pnr"] 1 "Pnr" 81343

$pers[1]["Gehalt"] 1 "Gehalt" 3750

$pers[2]["Name"] 2 "Name" "Mertens"

$pers[2]["Vorname"] 2 "Vorname" "Julia"

$pers[2]["Pnr"] 2 "Pnr" 2297

$pers[2]["Gehalt"] 2 "Gehalt" 3621,50

Tabelle 9.3 Zweidimensionales gemischtes Feld

2489-5.book Seite 368 Montag, 8. April 2013 1:47 13

Page 37: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.5 Zweidimensionale gemischte Felder

369

9

schirm dargestellt. Dabei nimmt die Schleifenvariable $i nacheinander die

verwendeten Werte für die Nummer des Teilfeldes an (0 bis 2).

Innerhalb der for-Schleife werden, jeweils mithilfe einer foreach-Schleife,

die Elemente der Teilfelder ausgegeben. Jedes Teilfeld entspricht einem

eindimensionalen assoziativen Feld. Es muss allerdings darauf geachtet

werden, dass foreach auf den Namen des Teilfeldes angewendet wird

($pers[$i]). Die Ausgabe des Programms zeigt Abbildung 9.12.

Abbildung 9.12 Zweidimensionales gemischtes Feld

Übung »u_num_assoz«

Speichern Sie die Daten aus der Tabelle der Festplatten aus Kapitel 4,

»Datenbanken mit MySQL«, in einem zweidimensionalen Feld ab, ohne

das Feld prod. Benutzen Sie die Feldnamen als Schlüssel. Geben Sie

anschließend die Daten dieses zweidimensionalen Feldes wie in Abbil-

dung 9.13 auf dem Bildschirm aus (Datei u_num_assoz.php). Beachten Sie

besonders die Aufteilung: Die Schlüssel stehen in der Überschrift, die

Werte danach.

Abbildung 9.13 Zweidimensionales gemischtes Feld

2489-5.book Seite 369 Montag, 8. April 2013 1:47 13

Page 38: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

370

9.6 Zweidimensionale assoziative Felder

Im folgenden Programm wird eine Abfrage an eine Datenbank gesendet.

Das Ergebnis der Abfrage wird vollständig in einem zweidimensionalen

assoziativen Feld gespeichert. Auf alle Elemente des Feldes kann zu einem

späteren Zeitpunkt des Programms zugegriffen werden.

Zwei Schlüssel Als Key der ersten Dimension des Feldes wird eine eindeutige Bezeichnung

benötigt. Dazu bietet sich das eindeutige Feld der Tabelle an. Im vorliegen-

den Fall ist dies das Feld personalnummer aus der Tabelle personen. Jeder

beliebige Feldinhalt aus jedem Datensatz steht dann über die Personal-

nummer auf komfortable Weise zur Verfügung.

<html><body><?php

// Die Informationen werden aus der Datenbank geholt$con = mysqli_connect("","root");mysqli_select_db($con, "firma");$res = mysqli_query($con, "select * from personen");

// Die Datensätze werden einzeln gelesenwhile($dsatz = mysqli_fetch_assoc($res)){

// Der Key für das zweidim. Array wird ermittelt$ax = $dsatz["personalnummer"];

// Die Informationen aus dem Datensatz werden// über den Key in dem zweidim. Feld gespeichert$tab[$ax]["name"] = $dsatz["name"];$tab[$ax]["vorname"] = $dsatz["vorname"];$tab[$ax]["gehalt"] = $dsatz["gehalt"];

}mysqli_close($con);

// Alle Datensätze werden mit allen Inhalten angezeigtecho "<table border='1'>";foreach($tab as $dsname=>$dswert){

echo "<tr>";// Der Key wird ausgegebenecho "<td>$dsname:</td>";

2489-5.book Seite 370 Montag, 8. April 2013 1:47 13

Page 39: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.6 Zweidimensionale assoziative Felder

371

9

// Die Infos aus dem Datensatz werden ausgegebenforeach($dswert as $name=>$wert)

echo "<td>$wert</td>";echo "</tr>";

}echo "</table>";

// Einzelne Beispielinformationen werden angezeigtecho "<p>";echo $tab["2297"]["name"] . "<br />";echo $tab["6714"]["gehalt"] . "<br />";echo $tab["6715"]["vorname"] . "</p>";

?></body></html>

Listing 9.9 Datei assoz_zweidim.php

Jeder Datensatz des Abfrageergebnisses wird kurzfristig in dem assoziati-

ven Feld $dsatz gespeichert. Das Element personalnummer dient dem zwei-

dimensionalen assoziativen Feld $tab als erster Schlüssel. Mit diesem

Schlüssel werden die restlichen Inhalte (außer personalnummer) jedes

Datensatzes im Feld $tab gespeichert.

foreachDie Ausgabe jedes Feldelements gelingt über eine doppelte foreach-

Schleife. In der äußeren Schleife wird nur der erste Schlüssel ermittelt. Der

Wert dieses ersten Schlüssels dient wiederum als zweiter Schlüssel.

Am Ende werden zu Demonstrationszwecken einige einzelne Feldele-

mente ausgegeben. Ein Zugriff auf einen nicht existierenden Schlüssel

wird ignoriert bzw. führt zu einer Meldung, je nach Einstellung der Fehler-

anzeige. Die Ausgabe des Programms sieht wie in Abbildung 9.14 aus.

Abbildung 9.14 Zweidimensionales assoziatives Feld

2489-5.book Seite 371 Montag, 8. April 2013 1:47 13

Page 40: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9 Felder

372

9.7 list-Anweisung

Im Zusammenhang mit numerischen Felder ist die list-Anweisung recht

nützlich. Mit ihrer Hilfe lassen sich in einem Zug mehrere Elemente eines

Feldes einzelnen Variablen zuordnen. Nachfolgend zwei Beispiele:

Übung »u_assoz_zweidim«

Aus der Tabelle fp der Datenbank hardware sollen alle Datensätze gele-

sen und mithilfe der Funktion mysqli_fetch_assoc() in einem zwei-

dimensionalen assoziativen Feld gespeichert werden (Datei u_assoz_

zweidim.php). Anschließend soll eine HTML-Tabelle mit den folgenden

Spalten ausgegeben werden:

� Artikelnummer

� Kapazität in GB

� Preis und Preis-Leistungs-Verhältnis (PLV = Preis in €/GB)

Das Ergebnis für PLV soll nicht nur temporär berechnet und unmittelbar

ausgegeben werden; stattdessen soll für die zweite Dimension des assozi-

ativen Feldes eine weitere Spalte mit dem Key plv angelegt werden. Der

Wert steht somit für die gesamte Dauer des Programms innerhalb des asso-

ziativen Feldes zur Verfügung. Nutzen Sie die Funktion number_format()zur Darstellung des PLV-Werts. Die Ausgabe sollte wie in Abbildung 9.15

aussehen.

Abbildung 9.15 Ergebnis der Übung »u_assoz_zweidim«

2489-5.book Seite 372 Montag, 8. April 2013 1:47 13

Page 41: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

9.7 list-Anweisung

373

9

<html><body><?php

/* Elemente aus numerischen Arrays, Kommas setzen */$farben = array("rot", "gelb", "blau", "magenta", "cyan");list($erste, $zweite, , $vierte) = $farben;echo "$erste, $zweite, $vierte <br /><br />";

/* Datenbankzugriff, mit mysqli_fetch_row() */$con = mysqli_connect("","root");mysqli_select_db($con, "firma");$res = mysqli_query($con, "select * from personen");while(list($name, $vorname, $gehalt) =

mysqli_fetch_row($res))echo "$name, $vorname, $gehalt <br />";

mysqli_close($con);?></body></html>

Listing 9.10 Datei num_list.php

Einzelne ElementeIm ersten Beispiel wird ein numerisches Array mit fünf Elementen erzeugt.

In der nächsten Zeile werden das erste, das zweite und das vierte Element

des Feldes mithilfe der list-Anweisung einzelnen Variablen zugeordnet.

Es müssen nicht alle Elemente zugewiesen werden; allerdings müssen

Kommata gesetzt werden, damit die richtigen Elemente des Arrays ausge-

wählt werden.

mysqli_fetch_row()Im zweiten Beispiel wird mithilfe der Funktion mysqli_fetch_row() ein

numerisches Array aus einem Datenbank-Abfrageergebnis ermittelt. Die-

ses numerische Array kann anschließend mit der list-Anweisung genutzt

werden, um die Inhalte der einzelnen Datenbankfelder zuzuweisen.

Die Funktion mysqli_fetch_assoc() kann hier nicht eingesetzt werden, da

sie ein assoziatives Array liefert, das nicht mit der list-Anweisung genutzt

werden kann.

2489-5.book Seite 373 Montag, 8. April 2013 1:47 13

Page 42: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

611

Index

Index

-- (minus minus) .......................................................... 56

– (minus) ......................................................................... 28

! (Ausrufezeichen) ....................................................... 48

!= (ungleich, PHP) ....................................................... 40

!== .................................................................................... 318

$ (Dollar) .......................................................................... 78

$_COOKIE..................................................................... 439

$_GET..................................................... 35, 154, 306, 433

$_POST ................................................................. 307, 424

$_SESSION .................................................................... 417

% (Modulo) ............................................................ 28, 410

% (Platzhalter) ............................................................. 189

& (Referenz) ................................................................... 88

& (URL) .................................................................. 153, 306

&& (logisches Und) ..................................................... 47

' (Hochkomma) ............................................................ 30

* (mal) ............................................................................... 28

+ (plus).............................................................................. 28

++ (plus plus) ................................................................. 56

. (Verkettung)................................................................ 30

.= (Anhängen an Zeichenketten) .......................... 30

/ (durch) ........................................................................... 28

/* (mehrzeiliger Kommentar) ................................. 24

// (einzeiliger Kommentar) ..................................... 24

:: (Operator)................................................................. 264

<> (ungleich, SQL) ...................................................... 188

= (gleich) ........................................................................ 188

== (gleich)....................................................................... 40

=== ................................................................................... 318

=> (Zuordnung)............................................................. 72

> (größer)............................................................... 40, 188

>= (größer gleich)............................................... 40, 188

? (URL).................................................................... 153, 306

?> ......................................................................................... 21

@ ............................................................................ 306, 550

__autoload()................................................................. 281

__clone()........................................................................ 259

__construct() .............................................................. 249

__destruct() .................................................................. 251

__FILE__ ........................................................................ 273

__LINE__ ....................................................................... 273

__METHOD__ ............................................................. 273

__toString() .................................................................. 277

{nb} .................................................................................. 531

||.......................................................................................... 46

127.0.0.1.......................................................................... 389

A

Absatzumbruch ........................................................... 22

absenden ................................................................ 34, 135

abstract ........................................................................... 271

action ............................................................................... 34

Addition .......................................................................... 28

Ajax ................................................................................. 475

Aktionsabfrage .......................................................... 206

Aktionselement .......................................................... 135

align ................................................................................. 60

and................................................................................... 189

Angriff........................................................................... 305

Anmeldung ................................................................. 420

Anweisungsblock ................................................. 42, 56

Apache ............................................................................. 22

Ubuntu..................................................................... 606

Apache-Webserver

Ubuntu..................................................................... 604

append ........................................................................... 329

array() ............................................................................... 69

array_key_exists()..................................................... 287

array_pop() .................................................................. 359

array_push() ................................................................ 359

array_shift() ................................................................. 359

array_unshift() ........................................................... 359

arsort() ........................................................................... 361

as ........................................................................................ 73

asc .................................................................................... 189

asort() ............................................................................. 361

asXML() .......................................................................... 473

Asynchronous JavaScript and XML.................... 475

Aufhängen ...................................................................... 57

Ausnahmebehandlung ............................................. 98

Ausrichtung.................................................................. 60

Auswahlelement......................................................... 125

Auswahlmenü ........................................................... 203

einfaches .................................................................. 129

mehrfaches............................................................... 132

auto_increment ................................................ 388, 561

autoload ........................................................................ 282

2489-5.book Seite 611 Montag, 8. April 2013 1:47 13

Page 43: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

612

B

base_convert() ............................................................ 414

Basisklasse ........................................................... 243, 262

Bedingung ..................................................................... 40

Benutzeroberfläche .................................................. 218

bigint .............................................................................. 388

bindec() .......................................................................... 414

Blog ................................................................................. 559

body ................................................................................ 593

Bogenmaß ................................................................... 404

border............................................................................ 596

br ...................................................................................... 595

break ........................................................................... 53, 65

C

Cache ............................................................................. 307

call-by-reference .......................................................... 86

call-by-value .................................................................. 86

CAPTCHA ...................................................................... 514

case.................................................................................... 52

catch.................................................................................. 98

ceil()................................................................................ 402

Chat ................................................................................. 547

chdir() ............................................................................. 348

Checkbox ...................................................................... 130

checkdate() .................................................................. 380

checked .................................................................. 127, 130

chr() .................................................................................. 321

class ................................................................................. 245

Clientprogramm .......................................................... 19

closedir().............................................................. 346, 348

cols .................................................................................. 120

confirm() ...................................................................... 220

connect.inc.php.......................................................... 236

Container ...................................................................... 592

continue .......................................................................... 67

Cookies ................................................................. 417, 438

anzeigen .................................................................. 440

Lebensdauer........................................................... 306

copy() .............................................................................. 162

count().................................................................... 162, 352

crc32() ............................................................................. 325

crypt() ............................................................................. 325

CSS ........................................................................... 143, 218

Formatvorlage ........................................................ 152

CSS-Datei

externe....................................................................... 152

CSV-Datei ...................................................................... 313

CSV-Format .................................................................. 337

D

date() .............................................................. 345, 377, 381date.timezone ............................................................ 346Datei

Angabe der Position............................................. 341binärer Zugriff ........................................................ 327Ende ermitteln ........................................................ 331Existenz .................................................................... 329externe......................................................................... 78formatierte Ausgabe............................................ 341Größe feststellen.................................................... 343Informationen ermitteln.......................... 344, 346Lese-/Schreibposition festlegen....................... 341lesen............................................................................ 328öffnen........................................................................ 329schließen .................................................................. 330schreiben................................................................... 333sequenzieller Zugriff ............................................ 327Text anhängen ....................................................... 335vereinfachtes Lesen .............................................. 333wahlfreier Zugriff .......................................... 327, 341Zeichenkette lesen................................................ 330Zeichenkette schreiben ....................................... 334zurückspulen........................................................... 341

Dateityp ......................................................................... 327Datenbank .................................................................... 177

Abfrage ............................................................. 187, 190Ajax............................................................................ 486auswählen................................................................ 186erzeugen .................................................................. 180hochladen................................................................. 234SQL kontrollieren ................................................. 190

DatenbankabfrageAnzahl der Datensätze........................................ 187Datensatz speichern ............................................ 187HTML-Tabelle ausgeben..................................... 193

Datenbankbrowser................................................... 226Datenbankserver........................................................ 178

Verbindung aufnehmen ............................ 186, 235Datenfeld....................................................................... 177Datensatz ...................................................................... 177

ändern ............................................................. 208, 210

2489-5.book Seite 612 Montag, 8. April 2013 1:47 13

Page 44: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

613

auswählen........................................................ 187, 188

erzeugen .................................................................. 204

identifizieren........................................................... 182

löschen ....................................................................... 215

Datentyp ......................................................................... 25

Datum und Zeit .......................................................... 375

Datenbankspeicherung ...................................... 387

Differenz ................................................. 382, 384, 385

erzeugen .......................................................... 381, 382

formatieren ............................................................. 377

Gültigkeit prüfen .................................................. 380

Systemzeit ermitteln............................................ 375

decbin() .......................................................................... 414

dechex() ......................................................................... 414

decoct() .......................................................................... 414

default .............................................................................. 53

deg2rad() ...................................................................... 404

delete ...................................................................... 217, 222

deprecated .................................................................. 300

desc.................................................................................. 189

Deserialisierung ......................................................... 279

Destruktor .................................................................... 251

Dezimalsystem ........................................................... 414

Dezimaltrennzeichen ................................................ 26

display_errors ............................................................ 302

Division ........................................................................... 28

ganzzahlige ............................................................... 28

do while .......................................................................... 64

document ..................................................................... 137

Dokumentenbetrachter.......................................... 519

Dollarzeichen ................................................................ 25

doubleval().............................................................. 37, 357

Dualsystem .................................................................. 414

Dump.............................................................................. 237

E

e .......................................................................................... 27

E_ALL ............................................................................. 302

EasyPHP.............. 20, 22, 179, 186, 301, 346, 447, 601

echo ................................................................................... 22

e-Funktion ................................................................... 399

Eigenschaft ................................................................... 243

statische................................................................... 268

Eingabe ............................................................................ 32

Eingabefeld

Passwort ................................................................... 122

Eingabemaske............................................................. 149

Einsatzbereich ............................................................... 19

Element

verstecktes....................................... 122, 154, 214, 223

else .................................................................................... 43

E-Mail

automatisieren....................................................... 541

HTML-Mail ............................................................... 541

mit Anhang .............................................................. 541

enctype.......................................................................... 160

endif ................................................................................. 54

Endliche Zahl ............................................................. 405

Endlosschleife................................................................ 57

Ereignis......................................................................... 489

Ergebniskennung ....................................................... 187

Erlernbarkeit .................................................................. 18

error_log ....................................................................... 302

error_reporting................................................... 99, 301

Event-Handler ............................................................. 137

Exception Handling ................................................... 98

exec()

PDO ............................................................................ 461

exit .......................................................................... 173, 329

explode()............................................................... 162, 312

Exponentialzahl............................................................ 27

extends.......................................................................... 263

extension_dir ............................................................. 494

extension_loaded() .................................................. 494

F

false.......................................................................... 40, 138

Fatal Error....................................................................... 99

fclose()............................................................................ 330

Fehler ............................................................................. 299

Feiertag............................................................................ 111

berechnen ................................................................ 389

Feld.................................................................................... 67

assoziatives......................................................... 35, 70

ein- oder mehrdimensionales............................ 68

Element entfernen................................................ 359

Element hinzufügen ............................................ 359

Extrema ermitteln................................................. 353

Größe ermitteln...................................................... 352

numerisch indiziertes ........................................... 68

Operation ......................................................... 351, 361

Schlüssel ...................................................................... 71

2489-5.book Seite 613 Montag, 8. April 2013 1:47 13

Page 45: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

614

sortieren .................................................................... 351

statistische Auswertung .................................... 354

Wert ............................................................................... 72

zweidimensionales assoziatives ..................... 370

zweidimensionales gemischtes ....................... 367

zweidimensionales numerisches .................... 363

Feld von Formularelementen ...................... 133, 145

feof()................................................................................. 331

fgets()............................................................................. 330

file ................................................................................... 160

file() ................................................................................. 333

file_exists()................................................................... 329

file_get_contents().................................................... 281

file_put_contents() ......................................... 280, 473

filesize() ......................................................................... 343

FileZilla ......................................................................... 602

finally ............................................................................. 103

Firefox

Datenschutz ............................................................ 439

floor()..................................................................... 113, 402

fopen()............................................................................ 329

for ...................................................................................... 55

foreach .................................................................... 73, 468

form ......................................................................... 34, 594

Formatierung ..................................................... 103, 143

Formular ............................................................. 307, 593

auswerten ........................................................... 32, 117

prüfen ........................................................................ 136

und Programm in einer Datei.......................... 149

Forum............................................................................. 568

Forward-Slash ............................................................. 592

fpdf .................................................................................. 519

AddLink() .................................................................. 534

AddPage().................................................................. 521

AliasNbPages() ........................................................ 531

Cell() .......................................................... 523, 526, 536

Footer()....................................................................... 531

GetX()......................................................................... 538

GetY() ......................................................................... 538

Header() ..................................................................... 531

Image() .............................................................. 533, 537

Line() .......................................................................... 538

Link() .......................................................................... 537

Ln()...................................................................... 525, 528

Output() ..................................................................... 521

Rect() .......................................................................... 539

SetDrawColor() ...................................................... 528

SetFillColor() .................................................. 528, 539

SetFont().................................................................... 523

SetFontSize()............................................................ 525

SetLineWidth() ............................................... 528, 538

SetLink() .................................................................... 535

SetTextColor() ......................................................... 525

SetX() .......................................................................... 539

SetXY() ....................................................................... 539

SetY() .......................................................................... 531

Version 1.7................................................................ 520

Write() ................................................................ 525, 535

fputs() ............................................................................ 334

Frame .............................................................................. 143

fseek()..................................................................... 341, 344

ftell() ................................................................................ 341

FTP ................................................................................... 175

func_get_arg() .............................................................. 93

func_num_arg() .......................................................... 93

function .................................................................. 76, 245

function_exists()....................................................... 103

Funktion .......................................................................... 75

Aufruf ........................................................................... 77

benutzerdefinierte .................................................. 95

Definition ................................................................... 76

Existenz prüfen ...................................................... 103

mathematische ..................................................... 399

Parameter ..................................................... 77, 78, 81

rekursive ............................................................ 75, 349

Rückgabewert ........................................................... 84

Übergabe von Parametern ................................. 86

variable Parameterliste ........................................ 93

verlassen ..................................................................... 85

G

Gauß, Carl Friedrich ................................................... 112

gd_info() ....................................................................... 494

GD-Bibliothek............................................................. 493

gedit............................................................................... 604

Geldanlage ................................................................... 105

get....................................................................................... 35

get_class_methods()................................................ 276

get_declared_classes() ............................................ 276

getAttribute() .............................................................. 486

getAvailableDrivers().............................................. 460

getcwd()......................................................................... 349

getElementById() ...................................................... 478

getElementsByTagName()..................................... 485

2489-5.book Seite 614 Montag, 8. April 2013 1:47 13

Page 46: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

615

getimagesize() ............................................................ 566

GET-Parameter........................................................... 430

getrandmax().............................................................. 408

Gleich...................................................................... 40, 188

Gleichheitszeichen

doppeltes ..................................................................... 41

global ................................................................................ 91

Grafik ............................................................................. 493

Bild aus Datei laden ............................................. 501

Bildausschnitt ....................................................... 504

Breite ......................................................................... 502

Ellipse ........................................................................ 504

erzeugen und anzeigen ..................................... 498

erzeugen und speichern .................................... 496

Farbpalette ............................................................. 496

gepunktete Linie ................................................... 509

Größe ändern......................................................... 566

Größe feststellen................................................... 566

Höhe .......................................................................... 502

interner Font .......................................................... 498

leer erzeugen.......................................................... 566

Linie ........................................................................... 507

Linienart .................................................................. 509

Liniendicke.............................................................. 509

mit Farbe füllen .......................................... 496, 509

Objekt erzeugen.................................................... 496

Pixel ........................................................................... 507

Polygon .................................................................... 506

Rechteck................................................................... 506

speichern .................................................................. 495

Text drehen.............................................................. 501

Text erzeugen ........................................................ 499

Zeichenelement..................................................... 504

Gregorianischer Kalender ..................................... 380

Groß- und Kleinschreibung..................................... 26

Größer .................................................................... 40, 188

Größer gleich............................................................... 188

group .............................................................................. 583

Grundrechenart ......................................................... 163

Gültigkeitsbereich ................................................... 406

H

Handle............................................................................ 256

Hash-Tabelle ................................................................. 68

head................................................................................. 593

header()........................................................ 478, 497, 521

Hexadezimalsystem................................................. 414

hexdec()......................................................................... 414

hidden................................................................... 122, 306

Hintergrundfarbe ...................................................... 152

Hochkommata ...................................................... 30, 72

Hochladen von Daten .............................................. 159

Hochladen von Programmen ............................... 175

Hover-Effekt ................................................................. 152

href.................................................................................. 597

HTML............................................................................... 591

HTML-Entities ........................................................... 308

HTML-Mail ........................................................... 541, 544

htmlspecialchars() ................................................... 308

HTML-Tabelle ............................................................... 59

HTTP ............................................................................... 478

Hyperlink .............................................................. 151, 597

Daten anhängen .................................................... 157

I

if .................................................................................. 40, 41

if/else ........................................................................ 40, 42

image/jpg ..................................................................... 497

imagearc() .................................................................... 505

imagecolorallocate() ............................................... 496

imagecopy()................................................................ 504

imagecopyresampled() ........................................... 566

imagecreate() ............................................................. 496

imagecreatefromjpeg() ........................................... 502

imagecreatetruecolor() ........................................... 566

imagedashedline() ................................................... 509

imagedestroy() .......................................................... 496

imageellipse() ............................................................. 505

imagefill() .................................................................... 496

imagefilledarc() ......................................................... 506

imagefilledellipse() ................................................... 505

imagefilledpolygon() ............................................... 507

imagefilledrectangle() ............................................. 507

imagefilltoborder() ................................................... 510

imagejpeg() ................................................................. 496

imageline() .................................................................. 509

imagepng()......................................................... 496, 502

imagepolygon().......................................................... 507

imagerectangle()........................................................ 507

imagesetpixel() ......................................................... 509

imagesetstyle() .......................................................... 509

imagesetthickness() ................................................ 509

imagestring().............................................................. 499

imagesx() ...................................................................... 502

2489-5.book Seite 615 Montag, 8. April 2013 1:47 13

Page 47: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

616

imagesy()...................................................................... 502imagettftext()............................................................. 500implode() ....................................................................... 313inc.php ............................................................................. 95include ...................................................................... 78, 95include_once................................................................. 78Index................................................................................. 69ini_get() ............................................................... 303, 494ini_set().................................................................. 99, 304innerHTML................................................................... 478input ....................................................................... 118, 594insert ........................................................... 206, 222, 389Installation .................................................................. 599instanceof ..................................................................... 274Instanz ........................................................................... 243integer primary key................................................. 448Internetseite

dynamische ................................................................ 18intval()..................................................................... 37, 379IP-Adresse ..................................................................... 387is_dir() ............................................................................ 348is_file() ........................................................................... 348is_finite()...................................................................... 405is_infinite().................................................................. 405is_nan() ......................................................................... 406is_readable() ................................................................ 348is_writeable()............................................................... 348isset() ................................................... 102, 132, 150, 420

J

JavaScript ...................................................................... 218

Ajax ............................................................................ 475

Ereignis .................................................................... 489

K

Kapselungsprinzip ................................................... 246

Key...................................................................................... 71

Klammer

eckige ........................................................................... 69

geschweifte.......................................................... 42, 56

Klasse.............................................................................. 243

abgeleitete ...................................................... 244, 262

abstrakte ................................................................... 271

Klassendefinition ............................................. 244, 245

Klassenhierarchie ..................................................... 264

Klassenkonstante ..................................................... 268

Kleiner .................................................................... 40, 188Kleiner gleich............................................................... 188Klonen ........................................................................... 256Kommentar

einzeiliger ................................................................... 24mehrzeiliger .............................................................. 24

Konfigurationsparameter ....................................... 99Konstante

mathematische .................................................... 400Konstruktor................................................................. 248

Vererbung ................................................................ 265Kontrollkästchen ...................................................... 130Konvertierung.............................................................. 36

explizite....................................................................... 37Kopfrechnen ..................................... 169, 288, 393, 457krsort() ............................................................................ 361ksort().............................................................................. 361

L

Ladezeitverringern................................................................. 559

lcg_value()................................................................... 409Lesbarkeit ........................................................................ 23LibreOffice .................................................................... 337like................................................................................... 189list..................................................................................... 372log_errors..................................................................... 302Logarithmus................................................................ 399Login .............................................................................. 420Logisches Oder ............................................................. 46Logisches Und ............................................................... 47Log-Tabelle .................................................................. 387Lotto ................................................................................ 411

M

Mac OS X....................................................................... 607

mail() ............................................................................... 541

Markierung.................................................................. 592

max() ............................................................................. 404

Maximum .................................................................... 403

maxlength .................................................................... 118

md5() ..................................................................... 308, 325

method............................................................................. 34

Methode ............................................................... 243, 245

abstrakte................................................................... 272

statische ................................................................... 269

2489-5.book Seite 616 Montag, 8. April 2013 1:47 13

Page 48: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

617

Microsoft Excel ........................................................... 337

Microsoft Vista ......................................................... 600

microtime() ........................................................ 375, 409

min() .............................................................................. 404

Minimum..................................................................... 403

mktime()............................................ 300, 381, 386, 442

Modularisierung .................................................... 75, 91

Modulo-Operator ............................................... 28, 410

mt_getrandmax() ..................................................... 408

mt_rand()..................................................................... 408

mt_srand()................................................................... 408

multiple ......................................................................... 132

Multiplikation............................................................... 28

MySQL ............................................................................ 178

Passwort ändern .................................................. 605

Ubuntu ..................................................................... 605

mysqli_affected_rows() ......................................... 206

mysqli_connect().............................................. 186, 235

mysqli_fetch_assoc() ............................................... 187

mysqli_fetch_row() .................................................. 373

mysqli_num_rows() ................................................. 187

mysqli_query() ........................................................... 187

mysqli_select_db() .................................................... 186

N

Nachkommastelle ....................................................... 26

name ...................................................... 118, 120, 128, 162

Namensregel ................................................. 25, 78, 180

new .................................................................................. 247

new FPDF....................................................................... 521

nodeValue.................................................................... 485

not.................................................................................... 189

Notice .............................................................................. 99

number_format() ...................................................... 103

Nummer automatisch erhöhen .......................... 561

Nummerierung

automatische ......................................................... 388

Nutzung von PHP

Anzahl .......................................................................... 17

Gründe.......................................................................... 18

O

Objekt ............................................................................. 243

als Rückgabewert................................................. 266

erzeugen ................................................................... 247

Kopie .......................................................................... 256

laden .......................................................................... 279

Lebensdauer ........................................................... 249

speichern.................................................................. 279

octdec() .......................................................................... 414

Oder

logisches..................................................................... 46

Oktalsystem ................................................................ 414

onreadystatechange ................................................ 477

onSubmit....................................................................... 137

open() ............................................................................. 477

opendir() ....................................................................... 346

Open-Source-Datenbank ........................................ 178

Operator

arithmetischer .......................................................... 27

logischer ............................................................ 46, 189

Rangordnung ..................................................... 28, 48

Vergleichs-............................................... 40, 188, 189

option ............................................................................ 130

Optionsschaltfeld...................................................... 126

Gruppe ....................................................................... 126

or...................................................................................... 189

ord() ................................................................................. 321

order by......................................................................... 189

Ostersonntag ....................................................... 111, 391

P

p........................................................................................ 595

Parameter

optionaler ................................................................. 253

parent............................................................................. 264

parent::__construct() .............................................. 265

password........................................................................ 122

Passwort............................................................... 308, 421

Datenbankserver .................................................. 186

Speicherung ............................................................ 308

verschlüsseln .......................................................... 308

PDF

Ausgabe..................................................................... 521

Bild skalieren ........................................................... 533

erzeugen................................................................... 520

externer Hyperlink ............................................... 536

Fließtext ................................................................... 524

Font ............................................................................. 523

Füllfarbe ................................................................... 528

Hyperlink .................................................................. 533

Hyperlink erzeugen ............................................. 534

Hyperlink in einem Bild ...................................... 537

2489-5.book Seite 617 Montag, 8. April 2013 1:47 13

Page 49: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

618

Hyperlink in einem Bildbereich ....................... 537

Hyperlink in einer Zelle ...................................... 536

Hyperlink, Zielpunkt ............................................ 535

Image-Map.............................................................. 533

Kopf- und Fußzeile ............................................... 529

Linie............................................................................ 537

Liniendicke ..................................................... 528, 538

Linienfarbe .............................................................. 528

Rechteck ................................................................... 537

Schreibposition .............................................. 531, 538

Schreibposition nach der Zelle ........................ 523

Schriftart .................................................................. 523

Schriftfarbe.............................................................. 525

Schriftgröße .................................................... 523, 525

Schriftschnitt ................................................. 523, 526

Seite erzeugen ......................................................... 521

Seitenanzahl ............................................................ 531

Seitenumbruch ....................................................... 531

Standard-Font ........................................................ 522

Tabelle ....................................................................... 526

unterstreichen ........................................................ 534

Zeilenhöhe ............................................................... 525

Zeilenumbruch...................................... 524, 525, 528

Zelle ............................................................................ 523

Zellenausrichtung................................................. 523

Zellenfüllung........................................................... 524

Zellengröße.............................................................. 523

Zellenrand................................................................ 523

PDF-Reader................................................................... 519

PDO ................................................................................. 459

PDOStatement............................................................ 461

PHP

Konfiguration ........................................................ 346

Ubuntu ..................................................................... 605

PHP Data Objects ....................................................... 459

PHP Hypertext Preprocessor................................... 18

php.ini ................................................ 301, 307, 346, 495

php_gd2.dll ................................................................. 494

phpinfo() ...................................................................... 602

PHPMailer .................................................................... 541

phpMyAdmin ..................................................... 178, 179

Internetnutzung .................................................... 234

Ubuntu ..................................................................... 606

Pizzabestellung .......................................................... 166

Platzhalter .................................................................... 189

Plausibilität ................................................................. 307

post.................................................................................... 34

Potenzrechnung ....................................................... 399

Preis ................................................................................... 19

Primärschlüssel .......................................................... 182

private ........................................................................... 246

Programm beenden.................................................. 173

Programmierstil ........................................................... 21

Programmierung

objektorientierte.................................................... 243

Programmpaket ........................................................ 305

protected ...................................................................... 246

Provider ......................................................................... 175

Proxy.............................................................................. 307

public ............................................................................. 246

Q

query()

PDO ............................................................................. 461

R

rad2deg()...................................................................... 404

radio ................................................................................ 126

Radiobutton ...................................................... 126, 200

Rahmen......................................................................... 596

rand()...................................................................... 62, 408

read ................................................................................. 329

readdir() ........................................................................ 346

readfile()......................................................................... 333

readonly................................................................ 118, 120

readystate ..................................................................... 477

Rechenoperator ............................................................ 27

Referenz ........................................................... 86, 88, 114

register globals........................................................... 307

Rekursiv .................................................................. 75, 349

REMOTE_ADDR ......................................................... 387

require .............................................................................. 78

require_once.................................................................. 78

reset ......................................................................... 34, 594

responseText .............................................................. 478

responseXML .............................................................. 485

return................................................................................ 85

JavaScript ................................................................. 138

rewind().......................................................................... 341

round() .......................................................................... 402

rows ................................................................................ 120

rsort() .............................................................................. 352

2489-5.book Seite 618 Montag, 8. April 2013 1:47 13

Page 50: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

619

S

Schleife............................................................................. 54

Abbruch ...................................................................... 65

bedingungsgesteuerte.................................... 62, 64

endlose ........................................................................ 57

geschachtelte ............................................................ 58

Schriftart ....................................................................... 152

Schriftgröße ................................................................. 152

SEEK_CUR .................................................................... 344

SEEK_END .................................................................... 344

SEEK_SET...................................................................... 344

Seitenquelltext ........................................................... 225

select ............................................................... 129, 132, 187

selected .......................................................................... 129

self................................................................................... 270

send() .............................................................................. 477

Separator ....................................................................... 313

serial............................................................................... 388

Serialisierung .................................................... 279, 288

serialize() ...................................................................... 280

Serverprogramm ......................................................... 19

Session .......................................................................... 306

Gültigkeit beenden .............................................. 307

session_cache_limiter() ......................................... 307

session_destroy()....................................................... 418

session_id() ................................................................. 420

session_regenerate_id()......................................... 307

session_set_cookie_params() ............................. 306

session_start()............................................................. 418

Session-ID ..................................................................... 419

regenerieren ........................................................... 307

Session-Management .............................................. 417

setcookie() ................................................................... 438

setRequestHeader().................................................. 480

show columns ............................................................. 231

show databases.......................................................... 230

show tables.................................................................. 230

shuffle()........................................................................... 411

Sicherheit ..................................................................... 305

Silence-Operator .............................................. 306, 550

similar_text()............................................................... 319

SimpleXML .................................................................. 463

simplexml_load_file() ............................................ 465

simplexml_load_string()........................................ 471

size .................................................................. 118, 162, 595

sort() ................................................................................ 352

SORT_NUMERIC ......................................................... 352

SORT_REGULAR......................................................... 352

SORT_STRING ............................................................. 352

Spiel .................................................................................. 64

sprintf() .......................................................................... 341

SQL ................................................................................... 178

SQL-Code

schädlicher .............................................................. 308

SQLite3........................................................................... 447

close() ........................................................................ 450

exec() ......................................................................... 450

query() ....................................................................... 450

SQLITE3_ASSOC ......................................................... 452

SQLite3Result ............................................................... 451

fetchArray().............................................................. 451

srand()............................................................ 62, 408, 413

Startwert ......................................................................... 56

stat()................................................................................ 344

status.............................................................................. 477

Stellenwertsystem .................................................... 414

str_replace()................................................................ 309

str_rot13() ..................................................................... 325

str_shuffle() ................................................................. 414

strcasecmp() ................................................................. 319

strcmp().......................................................................... 319

strftime()........................................................................ 377

Strict Standards......................................................... 300

String-Funktionen ................................................... 309

stristr() ............................................................................ 315

strlen() .......................................................................... 309

strpos()............................................................................ 317

strrchr() .......................................................................... 315

strrev() .......................................................................... 309

strrpos().......................................................................... 317

strstr() ............................................................................. 315

strtolower() ................................................................. 309

strtotime() .................................................................... 382

strtoupper() ................................................................ 309

strtr() ............................................................................. 309

submit ............................................................ 34, 135, 594

submit().......................................................................... 141

substr()............................................................................ 314

Subtraktion.................................................................... 28

Suchformular............................................................... 195

switch/case ..................................................................... 51

Systemvoraussetzungen.......................................... 20

Systemzeit

ermitteln ................................................................... 375

2489-5.book Seite 619 Montag, 8. April 2013 1:47 13

Page 51: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

620

T

Tabelle .................................................................... 177, 596

erzeugen .................................................................... 181

exportieren .............................................................. 237

Filterung ................................................................... 585

mehrspaltige........................................................... 596

Sortierung ................................................................ 584

Struktur...................................................................... 178

Tabellenzeile............................................................... 596

Tabellenzelle............................................................... 596

table ............................................................................... 596

target .............................................................................. 143

Tausendertrennzeichen.......................................... 104

td ..................................................................................... 596

textarea ......................................................................... 120

Texteingabefeld

einzeiliges ........................................................... 33, 118

mehrzeiliges ............................................................ 120

Textelement ................................................................. 117

Textfarbe........................................................................ 152

this................................................................................... 245

throw ................................................................................ 98

time() ..................................................................... 375, 386

Timestamp .......................................................... 344, 376

timestamp .................................................................... 561

title .................................................................................. 593

tr ...................................................................................... 596

true ........................................................................... 40, 138

TrueType-Fonts ......................................................... 499

try ...................................................................................... 98

TTF-Datei...................................................................... 500

type ........................................................................ 162, 595

U

Überladen ..................................................................... 253

Ubuntu ............................................................ 20, 22, 179,

186, 301, 337, 346, 447, 493, 519, 604

ucfirst() ......................................................................... 309

ucwords() ..................................................................... 309

Umlaut ............................................................................. 26

darstellen .................................................................. 591

Und

logisches ..................................................................... 47

Unendlich .................................................................... 405

Ungleich ................................................................. 40, 188

unserialize().................................................................. 281

unset()............................................................................ 307

Unterstrich .................................................................... 26

update.................................................................... 210, 222

Upload ............................................................................ 159

URI

wechseln ................................................................... 521

URL

Daten anhängen........................................... 153, 306

V

Value ................................................................................. 72

value........................................................ 118, 128, 132, 135

var ................................................................................... 246

Variable ............................................................................ 25

Existenz ................................................... 132, 150, 205

Existenz prüfen ...................................................... 102

globale ........................................................................ 90

Gültigkeit................................................................. 307

Gültigkeitsbereich .................................................. 90

initialisieren ........................................................... 307

lokale........................................................................... 90

superglobale............................................................. 90

unerlaubter Zugriff .............................................. 307

Vererbung ..................................................................... 261

Vergleichsoperator..................................................... 40

!==................................................................................ 318

=== .............................................................................. 318

Verkettung..................................................................... 30

Verknüpfung ................................................................ 46

Verschlüsselung ................................................ 322, 325

Verzeichnis

aktuellen Namen ermitteln.............................. 349

Informationen ermitteln................................... 346

lesen........................................................................... 348

öffnen........................................................................ 348

schließen .................................................................. 348

wechseln .................................................................. 348

Verzeichnisschutz .................................................... 234

Verzweigung ................................................................. 40

mehrfache ............................................................ 49, 51

mit HTML ................................................................... 53

verschachtelte ......................................................... 49

2489-5.book Seite 620 Montag, 8. April 2013 1:47 13

Page 52: Einstieg in PHP 5.5 und MySQL 5 - Cloud Object Storage · Thomas Theis Einstieg in PHP 5.5 und MySQL 5.6 2489-5.book Seite 1 Montag, 8. April 2013 1:47 13

Index

621

W

Warenkorb................................................................... 426

Warning .......................................................................... 99

Webcounter ................................................................ 339

Webserver

Hauptverzeichnis .................................................... 24

Webshop ...................................................................... 426

while.................................................................................. 62

Wiederholung ............................................................... 54

Wildcard ........................................................................ 189

Winkelfunktion ......................................................... 404

write ............................................................................... 329

Würfel............................................................................... 62

Wurzel ........................................................................... 399

www-data .................................................................... 604

X

XAMPP ............................................................ 20, 22, 179,

186, 301, 346, 447, 599, 606, 608

Control Panel ........................................................ 600

XML ................................................................................ 463

Ajax ............................................................................ 475

senden ....................................................................... 482

XML-Datei

hierarchische Struktur ....................................... 464

XMLHttpRequest .............................................. 475, 477

XML-Zeichenkette ..................................................... 471

Z

Zahl ................................................................................... 26

formatierte Ausgabe ........................................... 103

Ganzzahlkonvertierung..................................... 402

Nachkommastelle ................................................ 104

Prüffunktionen ...................................................... 405

Zahlenbereich ............................................................ 406

Zeichencodierung ...................................................... 321

Zeichenkette.................................................................. 30

drehen ...................................................................... 309

Länge ........................................................................ 309

mischen ..................................................................... 414

Teile ersetzen......................................................... 309

Teile extrahieren ............................................ 314, 315

umwandeln............................................................ 309

Umwandlung ........................................................... 36

vergleichen ............................................................... 319

Zeichen suchen ....................................................... 317

zusammenfügen .................................................... 313

Zeichenkettenfunktionen .................................... 309

Zeilenumbruch .................................................. 225, 334

nicht erlaubter .......................................................... 31

Zeitangabe

formatieren............................................................. 345

Zeitstempel................................................................... 561

Zeitzone

einstellen.................................................................. 345

Zufallszahlengenerator................................... 62, 408

Zugriffszähler..................................................... 339, 418

Zurücksetzen ........................................................ 34, 135

2489-5.book Seite 621 Montag, 8. April 2013 1:47 13


Recommended