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):

loeschen.php - NSD

Serverkonfiguraion (PHP5) nutzen mittels .htaccess

#Definition, dass php5 ausgeführt werden soll
AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php