In der Woche vom 08. - 12. Juni 2009 findet bei der VHS Braunschweig ein Seminar zum Thema "Dynamische Webseiten mit PHP & MySQL" statt. Hier die Rahmendaten unseres Seminars:
Ort: Heydenstraße, Raum 2.01
Zeiten: Mo, 08.06. - Fr, 12.06.2009; jeweils 08.30 - 16.00 Uhr
Wir wünschen - wie immer - viel Spaß an unseren Seminaren.
Ihr Trainer Joe Brandes - 20090607
Wie immer können Sie in Artikeln zu ähnlichen Seminaren auf dieser Website weitere Infos finden.
Zu diesem Seminar soll an dieser Stelle ein erstes PHP-Skript erstellt werden:
<?php
/*Ein erstes Skript:
000_hallo_welt.php */
echo 'Hallo Welt!';
?>
Rekapitulation Di, 09.06.2009:
- Serverumgebung: LAMP / WAMP
L(inux) oder W(indows), A(pache), M(ySQL), P(HP) - Konfigurationsdateien:
Apache: httpd.conf
PHP: php.ini (wichtig: register_globals
MySQL: my.cnf (my.ini)
Apache: techn: WWW-Server, Unix: httpd
Lösung: www.apachefriends.org: X AMP P
Server: http://localhost/uebungen/000_hallo_welt.php
Lokal: c:\xampp\htdocs\uebungen\000_hallo_welt.php - Editoren: freie kostenlosen Tools (Scintilla)
PSPad (Empfehlung für PHP)
Notepad++
Eclipse (PDT) - Kaufsoftware: MS Web Expression, Adobe DREAMWEAVER (!!)
Tipp: www.cobra-shop.de/vhs - Browser: (techn: WWW-Client)
MS IE 6 / 7 / 8
Mozilla Firefox (Empfehlung wegen Erweiterungen addons.mozilla.org)
Opera
Google Chrome - Tools:
Packer/ Zipper (Empfehlung: www.7-zip.org)
FTP (Empf.: Filezilla) - Hilfe / Manuals / Handbücher:
INTERNET !!!!
PHP: PHP-Handbuch (deutsch)
Skript loeschen.php aus der Kontakteverwaltung von Do, 11.06.2009 mit ausführlicher Kommentierung:
<?php
// einfügen der inc-Datei für DB-Zugriff
require_once 'db.inc.php';
?>
<html>
<head>
<title>Kontaktverwaltung</title>
</head>
<body>
<?php
// Bedingung: ist GET-Variable id NICHT gesetzt?
if (!isset($_GET['id'])) {
header('Location: index.php'); // Umleitung auf index.php
}
// Hauptzweig: id wird per GET übergeben
// ===========
// Bedingung: ist POST-Variable ok (Schaltfläche) NICHT gesetzt?
elseif (!isset($_POST['ok'])) {
// Variable id wegen Sicherheit nochmals checken und per int als Ganzzahl
$id = (int)$_GET['id'];
try { // Exeption-Modell PHP5 - siehe unten dazgehöriger catch
// nutze Klasse Singleton und dort erzeugte Instanz von mysqli
$db = Singleton::holeVerbindung(); // Connection & neue Instanz
$db->select_db('kontakte'); // Datenbank ko ntakte wählen
// Bedingungen: (1) $ergebnis ist Ergebnisdatensatz
// und Zuweisungen der SELECT-Abfage mit Kriterium id= $id
// und gleichzeitig (2) $zeile wird Objekt mit Eigenschaften von $ergebnis
if ( ($ergebnis = $db->query('SELECT * FROM kontakt WHERE id=' . $id))
&& $zeile = $ergebnis->fetch_object() ) {
printf('Wollen Sie wirklich den Datensatz Nr. %s (%s %s, %s) löschen?<br />' .
'<form method="post" action="">
<input type="hidden" name="ok" value="true" />
<input type="submit" value="Löschen" />
</form>',
$id,
htmlspecialchars($zeile->vorname),
htmlspecialchars($zeile->nachname),
htmlspecialchars($zeile->email));
} else {
echo 'Fehler: ' . htmlspecialchars($db->error) . '!</td></tr>';
}
$db->close(); // Connection beenden
} catch (Exception $ex) { // Exeption-Modell PHP5 für try siehe oben
echo 'Fehler!';
}
}
// hier war jetzt Schaltfläche gedrückt und ok wird true - also gesetzt
else {
// Variable id wegen Sicherheit nochmals checken und per int als Ganzzahl
$id = (int)$_GET['id'];
try { // Exeption-Modell PHP5 - siehe unten dazgehöriger catch
// nutze Klasse Singleton und dort erzeugte Instanz von mysqli
$db = Singleton::holeVerbindung();
$db->select_db('kontakte');
// Bedingung: $ergebnis ist Ergebnisdatensatz
// und Zuweisung der DELETE-Abfage mit Kriterium id= $id
if ($ergebnis = $db->query('DELETE FROM kontakt WHERE id=' . $id)) {
echo 'Datensatz gelöscht!';
} else { // konnte nicht löschen
echo 'Fehler: ' . htmlspecialchars($db->error) . '!</td></tr>';
}
} catch (Exception $ex) { // Exeption-Modell PHP5 für try siehe oben
echo 'Fehler!';
}
}
?>
<p><a href="/index.php">Zur Startseite</a></p>
</body>
</html>
Das Nassi-Schneidermann-Diagramm (NSD):

Serverkonfiguraion (PHP5) nutzen mittels .htaccess
#Definition, dass php5 ausgeführt werden soll AddType x-mapp-php5 .php AddHandler x-mapp-php5 .php


