|
Liebe Leserin, lieber Leser, |
3 |
|
|
Auf einen Blick |
4 |
|
|
Inhalt |
6 |
|
|
1 Einführung |
16 |
|
|
1.1 Zu diesem Buch |
16 |
|
|
1.2 PHP - eine Beschreibung |
17 |
|
|
1.3 PHP - Vorzüge |
17 |
|
|
1.4 Aufbau dieses Buchs |
18 |
|
|
1.5 Systemvoraussetzungen |
19 |
|
|
2 PHP-Programmierkurs |
20 |
|
|
2.1 Einbettung von PHP in HTML |
20 |
|
|
2.2 Kommentare |
22 |
|
|
2.3 Variablen, Datentypen und Operatoren |
24 |
|
|
2.3.1 Namen |
24 |
|
|
2.3.2 Variablen für Zahlen |
25 |
|
|
2.3.3 Rechenoperatoren für Zahlen |
26 |
|
|
2.3.4 Variablen und Operatoren für Zeichenketten |
28 |
|
|
2.4 Einfache Formularauswertungen |
31 |
|
|
2.4.1 Eingabeformular |
31 |
|
|
2.4.2 Auswertung mit $_POST |
33 |
|
|
2.4.3 Umwandlung von Zeichenketten in Zahlen |
35 |
|
|
2.5 Verzweigungen |
38 |
|
|
2.5.1 if-Anweisung |
39 |
|
|
2.5.2 if/else-Anweisung |
40 |
|
|
2.5.3 Logische Operatoren |
44 |
|
|
2.5.4 Rangordnung der Operatoren |
47 |
|
|
2.5.5 Mehrfache Verzweigung |
47 |
|
|
2.5.6 switch/case-Anweisung |
49 |
|
|
2.5.7 HTML in Verzweigungsblöcken |
51 |
|
|
2.6 Schleifen |
52 |
|
|
2.6.1 for-Schleife |
52 |
|
|
2.6.2 Beispiele für for-Schleifen |
54 |
|
|
2.6.3 Geschachtelte for-Schleifen |
55 |
|
|
2.6.4 Schleifen und Tabellen |
56 |
|
|
2.6.5 while-Schleife |
59 |
|
|
2.6.6 do while-Schleife |
61 |
|
|
2.6.7 Schleifenabbruch mit break |
62 |
|
|
2.6.8 Schleifenfortsetzung mit continue |
63 |
|
|
2.7 Felder |
64 |
|
|
2.7.1 Numerisch indizierte Felder |
65 |
|
|
2.7.2 Assoziative Felder |
67 |
|
|
2.8 Funktionen |
71 |
|
|
2.8.1 Ein erstes Beispiel |
71 |
|
|
2.8.2 Definition, Aufruf und Funktionstypen |
73 |
|
|
2.8.3 Externe Dateien |
74 |
|
|
2.8.4 Funktionen mit einem Parameter |
74 |
|
|
2.8.5 Funktionen mit mehreren Parametern |
76 |
|
|
2.8.6 Rückgabewert einer Funktion |
79 |
|
|
2.8.7 Kopie und Referenz |
81 |
|
|
2.8.8 Gültigkeitsbereich von Variablen |
85 |
|
|
2.8.9 Variable Parameterlisten |
87 |
|
|
2.8.10 include-Anweisung |
89 |
|
|
2.9 Behandlung von Fehlern |
92 |
|
|
2.9.1 Ohne Ausnahmebehandlung |
92 |
|
|
2.9.2 Mit Ausnahmebehandlung |
94 |
|
|
2.10 Beispiele |
96 |
|
|
2.10.1 Formatierung von Zahlen |
96 |
|
|
2.10.2 Geldanlage |
98 |
|
|
2.10.3 Steuertabelle |
101 |
|
|
2.10.4 Bestimmung des Ostersonntags |
104 |
|
|
3 Daten senden und auswerten |
110 |
|
|
3.1 Textelemente |
110 |
|
|
3.1.1 Einzeilige Texteingabefelder |
110 |
|
|
3.1.2 Mehrzeilige Texteingabefelder |
113 |
|
|
3.1.3 Passworteingabefeld, verstecktes Element |
115 |
|
|
3.2 Auswahlelemente |
118 |
|
|
3.2.1 Radiobutton-Gruppe |
118 |
|
|
3.2.2 Einfaches Auswahlmenü |
121 |
|
|
3.2.3 Kontrollkästchen |
123 |
|
|
3.2.4 Mehrfaches Auswahlmenü |
125 |
|
|
3.3 Aktionselemente |
127 |
|
|
3.3.1 Absenden und Zurücksetzen |
127 |
|
|
3.3.2 Allgemeine Buttons |
131 |
|
|
3.4 Weitere Möglichkeiten |
135 |
|
|
3.4.1 Auswertung in anderem Frame |
135 |
|
|
3.4.2 Felder von Formularelementen |
137 |
|
|
3.4.3 Formular und Programm in einer Datei |
141 |
|
|
3.4.4 Submit über Hyperlink, CSS |
143 |
|
|
3.4.5 Daten an Formularziel anhängen |
145 |
|
|
3.4.6 Daten an Hyperlinkziel anhängen |
149 |
|
|
3.4.7 Dateien auf den Server hochladen |
151 |
|
|
3.5 Beispiele |
154 |
|
|
3.5.1 Grundrechenarten |
155 |
|
|
3.5.2 Pizzabestellung |
157 |
|
|
3.5.3 Kopfrechnen |
161 |
|
|
3.6 PHP-Programme publizieren |
166 |
|
|
4 Datenbanken mit MySQL |
168 |
|
|
4.1 MySQL und phpMyAdmin |
169 |
|
|
4.1.1 phpMyAdmin |
169 |
|
|
4.1.2 Beispieldatenbank und -tabelle |
170 |
|
|
4.1.3 Datenbank erzeugen |
171 |
|
|
4.1.4 Tabelle erzeugen |
171 |
|
|
4.1.5 Primärschlüssel erzeugen |
172 |
|
|
4.1.6 Datensätze eintragen |
173 |
|
|
4.2 PHP und MySQL |
175 |
|
|
4.2.1 Verbindung aufnehmen, Datensätze anzeigen |
175 |
|
|
4.2.2 Datensätze auswählen |
178 |
|
|
4.2.3 Ausgabe in eine HTML-Tabelle |
183 |
|
|
4.2.4 Auswahl von Daten über ein Suchformular |
184 |
|
|
4.2.5 Datensätze erzeugen |
192 |
|
|
4.2.6 Ändern mehrerer Datensätze |
197 |
|
|
4.2.7 Ändern eines bestimmten Datensatzes |
198 |
|
|
4.2.8 Datensätze löschen |
203 |
|
|
4.2.9 Benutzeroberfläche mit JavaScript und CSS |
205 |
|
|
4.2.10 Ein Datenbankbrowser |
213 |
|
|
4.3 MySQL-Datenbanken publizieren |
221 |
|
|
4.3.1 Verbindung aufnehmen |
222 |
|
|
4.3.2 Export einer Tabelle |
224 |
|
|
4.3.3 Tabelle und Daten per Programm erzeugen |
227 |
|
|
5 Objektorientierung in PHP |
230 |
|
|
5.1 Was ist objektorientierte Programmierung? |
230 |
|
|
5.2 Klassen und Objekte |
231 |
|
|
5.2.1 private, protected und public |
232 |
|
|
5.2.2 Anwendung der Klasse |
233 |
|
|
5.3 Konstruktor |
235 |
|
|
5.4 Destruktor |
237 |
|
|
5.5 Optionale Parameter |
239 |
|
|
5.6 Handles und Kopien |
242 |
|
|
5.6.1 Vordefiniertes Klonen |
243 |
|
|
5.6.2 Benutzerdefiniertes Klonen |
245 |
|
|
5.6.3 Übergabe eines Objekts an eine Funktion |
246 |
|
|
5.7 Vererbung |
247 |
|
|
5.7.1 Grundlagen |
247 |
|
|
5.7.2 Konstruktoren bei Vererbung |
251 |
|
|
5.8 Dereferenzierung von Objekten |
252 |
|
|
5.9 Konstanten, statische Eigenschaften und Methoden |
253 |
|
|
5.10 Abstrakte Klassen und Methoden |
256 |
|
|
5.11 Magische Konstanten |
258 |
|
|
5.12 Operator instanceof |
260 |
|
|
5.13 Hilfsfunktionen |
261 |
|
|
5.14 Ausgabemethode __toString() |
263 |
|
|
5.15 Serialisierung |
264 |
|
|
5.16 autoload-Funktion |
266 |
|
|
5.17 Beispiel Scheck |
268 |
|
|
5.18 Beispiel Kopfrechnen |
273 |
|
|
5.18.1 Programmablauf |
273 |
|
|
5.18.2 Klasse »Spiel« |
276 |
|
|
5.18.3 Klasse »Aufgabe« |
280 |
|
|
6 Fehler behandeln, Sicherheit erhöhen |
282 |
|
|
6.1 Anzeige von Fehlern |
282 |
|
|
6.2 Dauerhafte Konfiguration der Anzeige von Fehlern |
284 |
|
|
6.3 Temporäre Konfiguration der Anzeige von Fehlern |
287 |
|
|
6.4 Angriffe und Sicherheit |
288 |
|
|
6.4.1 Programmpakete |
289 |
|
|
6.4.2 Sichtbare Daten |
289 |
|
|
6.4.3 Sessions |
289 |
|
|
6.4.4 Variablen |
290 |
|
|
6.4.5 Eingaben prüfen |
290 |
|
|
6.4.6 Passwörter |
291 |
|
|
7 Zeichenketten |
292 |
|
|
7.1 Länge und Umwandlungsfunktionen |
292 |
|
|
7.2 Zeichenketten und Felder |
295 |
|
|
7.3 Teilzeichenketten |
297 |
|
|
7.4 Suchen nach Position |
299 |
|
|
7.5 Vergleich von Zeichenketten |
300 |
|
|
7.6 Codierung von Zeichen |
302 |
|
|
7.7 Einfache Verschlüsselung |
304 |
|
|
7.8 Weitere Verschlüsselungsmethoden |
306 |
|
|
8 Dateien und Verzeichnisse |
308 |
|
|
8.1 Dateitypen |
308 |
|
|
8.2 Lesen einer Zeile aus einer sequenziellen Datei |
309 |
|
|
8.3 Lesen aller Zeilen einer sequenziellen Datei |
311 |
|
|
8.4 Vereinfachtes Lesen einer Datei |
314 |
|
|
8.5 Überschreiben einer sequenziellen Datei |
315 |
|
|
8.6 Anhängen an eine sequenzielle Datei |
316 |
|
|
8.7 Ein einfacher Zugriffszähler |
320 |
|
|
8.8 Wahlfreier Zugriff |
322 |
|
|
8.9 Informationen über Dateien |
325 |
|
|
8.10 Informationen über ein einzelnes Verzeichnis |
327 |
|
|
8.11 Informationen über den Verzeichnisbaum |
330 |
|
|
9 Felder |
332 |
|
|
9.1 Operationen für numerisch indizierte Felder |
332 |
|
|
9.1.1 Sortierung |
332 |
|
|
9.1.2 Wert und Position der Extrema |
334 |
|
|
9.1.3 Statistische Auswertung |
335 |
|
|
9.1.4 Feld verändern |
339 |
|
|
9.2 Sortierung eines assoziativen Feldes |
341 |
|
|
9.3 Zweidimensionale Felder, allgemein |
343 |
|
|
9.4 Zweidimensionale numerische Felder |
344 |
|
|
9.5 Zweidimensionale gemischte Felder |
347 |
|
|
9.6 Zweidimensionale assoziative Felder |
349 |
|
|
10 Datum und Zeit |
354 |
|
|
10.1 Zeit ermitteln und ausgeben |
354 |
|
|
10.2 Zeit formatiert ausgeben |
355 |
|
|
10.3 Zeitangabe auf Gültigkeit prüfen |
358 |
|
|
10.4 Absolute Zeitangabe erzeugen |
359 |
|
|
10.5 Relative Zeitangabe erzeugen |
361 |
|
|
10.6 Mit Zeitangaben rechnen |
363 |
|
|
10.7 Zeitangaben in Datenbanken |
366 |
|
|
10.8 Beispiel Feiertagsberechnung |
368 |
|
|
10.9 Kopfrechnen mit Zeitmessung |
372 |
|
|
11 Mathematische Funktionen |
376 |
|
|
11.1 Taschenrechnerfunktionen |
376 |
|
|
11.2 Mathematische Konstanten |
377 |
|
|
11.3 Ganzzahlermittlung |
378 |
|
|
11.4 Extremwerte |
380 |
|
|
11.5 Winkelfunktionen |
381 |
|
|
11.6 Prüffunktionen für Zahlen |
382 |
|
|
11.7 Zufallszahlen |
384 |
|
|
11.8 Mischen |
387 |
|
|
11.8.1 Mischen mit eigenem Algorithmus |
388 |
|
|
11.8.2 Mischen mit shuffle() |
389 |
|
|
11.9 Stellenwertsysteme |
390 |
|
|
12 Sessions und Cookies |
394 |
|
|
12.1 Sessionmanagement |
395 |
|
|
12.2 Beispiel für Sessions: Zugriffszähler |
395 |
|
|
12.3 Beispiel für Sessions: Geschützte Website |
397 |
|
|
12.3.1 Ablauf |
397 |
|
|
12.3.2 Login-Seite |
399 |
|
|
12.3.3 Intro-Seite |
400 |
|
|
12.4 Beispiel für Sessions: Webshop |
402 |
|
|
12.4.1 Ablauf |
403 |
|
|
12.4.2 Startseite |
405 |
|
|
12.4.3 Include-Datei |
406 |
|
|
12.4.4 Tabelle der Artikel |
408 |
|
|
12.4.5 Warenkorb |
410 |
|
|
12.4.6 Kasse |
413 |
|
|
12.5 Cookies |
414 |
|
|
12.6 Beispiel für Cookies: Besuch |
416 |
|
|
12.7 Beispiel für Cookies: Adressspeicherung |
418 |
|
|
13 Datenbanken mit SQLite3 |
422 |
|
|
13.1 SQLite3 |
422 |
|
|
13.2 Datenbankdatei, Tabelle und Datensätze erzeugen |
423 |
|
|
13.3 Abfrage der Datensätze |
425 |
|
|
13.4 Benutzeroberfläche mit JavaScript und CSS |
426 |
|
|
13.5 Beispiel Kopfrechnen |
431 |
|
|
14 XML |
434 |
|
|
14.1 Einlesen eines einzelnen Objekts |
434 |
|
|
14.2 Einlesen mehrerer Objekte |
437 |
|
|
14.3 Zugriff auf Attribute |
440 |
|
|
14.4 Interne XML-Daten |
442 |
|
|
14.5 Speicherung von Objekten |
443 |
|
|
15 Ajax |
446 |
|
|
15.1 Hallo Ajax |
446 |
|
|
15.2 Parameter senden |
449 |
|
|
15.3 Bild tauschen |
451 |
|
|
15.4 Mehrere Ergebnisse aus XML-Knoten |
453 |
|
|
15.5 Mehrere Ergebnisse aus XML-Attributen |
456 |
|
|
15.6 Zugriff auf MySQL-Datenbank |
457 |
|
|
15.7 Weitere Ereignisse |
459 |
|
|
16 jQuery |
462 |
|
|
16.1 Erstes Beispiel |
462 |
|
|
16.2 Selektoren, Methoden css(), html() und text() |
465 |
|
|
16.3 Ereignisse |
468 |
|
|
16.4 Animationen |
472 |
|
|
16.5 JavaScript |
476 |
|
|
16.6 jQuery und Ajax |
478 |
|
|
17 Grafiken programmieren |
482 |
|
|
17.1 Installation testen |
482 |
|
|
17.2 Grafik speichern |
484 |
|
|
17.3 Grafik unmittelbar anzeigen |
485 |
|
|
17.4 Text mit internen Fonts |
487 |
|
|
17.5 Text mit TrueType-Fonts |
488 |
|
|
17.6 Bild aus einer Datei laden |
490 |
|
|
17.7 Bilder aus Dateien ineinander einbetten |
491 |
|
|
17.8 Ellipsen und Bögen |
493 |
|
|
17.9 Rechtecke und Polygone |
495 |
|
|
17.10 Linien und Pixel |
496 |
|
|
17.11 Füllen mit Farbe |
498 |
|
|
17.12 Darstellung eines Aktienkurses |
500 |
|
|
18 PDF-Dateien erstellen |
504 |
|
|
18.1 Installation |
504 |
|
|
18.2 PDF-Dokument erzeugen |
505 |
|
|
18.3 Text in Zelle |
507 |
|
|
18.4 Fließtext, Schriftparameter |
509 |
|
|
18.5 Tabelle |
511 |
|
|
18.6 Kopf- und Fußzeile |
513 |
|
|
18.7 Bild aus Datei laden |
516 |
|
|
18.8 Hyperlinks |
517 |
|
|
18.9 Linie, Rechteck, Position |
521 |
|
|
19 Automatisierter E-Mail-Versand |
524 |
|
|
20 Beispielprojekte |
528 |
|
|
20.1 Projekt »Chat« |
528 |
|
|
20.1.1 Frame-Aufbau |
528 |
|
|
20.1.2 CSS-Formatierung |
530 |
|
|
20.1.3 Ausgabe, Version »Textdatei« |
530 |
|
|
20.1.4 Darstellung der Textdatei |
531 |
|
|
20.1.5 Ausgabe, Version »Datenbank« |
532 |
|
|
20.1.6 Darstellung der Datenbanktabellen |
533 |
|
|
20.1.7 Eingabe, Head |
534 |
|
|
20.1.8 Eingabe, PHP zum Speichern, Version »Textdatei« |
535 |
|
|
20.1.9 Eingabe, PHP zum Speichern, Version »Datenbank« |
536 |
|
|
20.1.10 Eingabe, Formular |
537 |
|
|
20.1.11 Mögliche Erweiterungen |
538 |
|
|
20.2 Projekt »Blog« |
539 |
|
|
20.2.1 Aufbau der Datenbank |
541 |
|
|
20.2.2 Blog für den Betrachter, Programmcode |
542 |
|
|
20.2.3 Blog für den Betreiber, Programmcode |
543 |
|
|
20.3 Projekt »Forum« |
547 |
|
|
20.3.1 Darstellung, Anmeldung |
548 |
|
|
20.3.2 Darstellung, Hauptbildschirm |
549 |
|
|
20.3.3 Darstellung, neuer Beitrag |
551 |
|
|
20.3.4 Datenbank, Tabelle der Teilnehmer |
551 |
|
|
20.3.5 Datenbank, Tabelle der Beiträge |
552 |
|
|
20.3.6 Passwortvergabe |
553 |
|
|
20.3.7 Forum, CSS |
555 |
|
|
20.3.8 Forum, JavaScript-Funktion |
556 |
|
|
20.3.9 Forum, Anmeldung |
558 |
|
|
20.3.10 Forum, Zugangsprüfung und Überschrift |
559 |
|
|
20.3.11 Forum, neuen Beitrag speichern |
560 |
|
|
20.3.12 Forum, Filterung auswählen |
561 |
|
|
20.3.13 Forum, Sortierung durchführen |
563 |
|
|
20.3.14 Forum, Filterung durchführen |
564 |
|
|
20.3.15 Forum, Sortierung auswählen |
565 |
|
|
20.3.16 Forum, Beiträge darstellen |
566 |
|
|
20.3.17 Forum, neuen Beitrag eingeben |
567 |
|
|
A HTML für PHP |
568 |
|
|
A.1 Die erste Seite |
569 |
|
|
A.2 Formulare |
570 |
|
|
A.3 Tabellen |
572 |
|
|
A.4 Hyperlinks |
574 |
|
|
B Installationen |
576 |
|
|
B.1 Installationen unter Windows |
576 |
|
|
B.1.1 Installation des Pakets XAMPP |
576 |
|
|
B.1.2 Installation des Pakets EasyPHP |
578 |
|
|
B.1.3 phpinfo |
578 |
|
|
B.1.4 FTP-Client FileZilla |
579 |
|
|
B.2 Installationen unter Ubuntu Linux |
580 |
|
|
B.2.1 Editor |
580 |
|
|
B.2.2 Apache Web Server |
581 |
|
|
B.2.3 PHP |
581 |
|
|
B.2.4 MySQL |
582 |
|
|
B.2.5 phpMyAdmin |
582 |
|
|
Index |
584 |
|