AMP Apache MySQL PHP HTML Einführung MySQL mit PHP Materialien zur Fortbildungsreihe C für die Informatik in SII Einführung MySQL 20.04.04 Thomas Schaller AMP Apache MySQL PHP Einführung MySQL mit PHP Sie können bisher... MySQL • Datenbanken mit SQL verwalten • dynamische Web-Seiten mit PHP erstellen Sie lernen nun ... • dynamische Web-Seiten mit den Daten einer Datenbank zu erstellen • Datenbanken mit Hilfe von Web-Seiten zu verwalten Web browser HTTP Web server Parameter HTML PHP SQL MySQL 2 AMP Apache MySQL PHP MySQL Grundstruktur einer SQL-Anfrage Grundprinzip: • Verbindung zur Datenbank aufbauen • SQL-Anfrage durchführen • Ausgabe der Ergebnisse in einer Tabelle Verbindung zur Datenbank In Phase5: SQL-Anfrage Dynamische Tabelle 3 Verbindung zur Datenbank AMP Apache MySQL PHP MySQL 1.) Verbindung zum MySQL-Server mit IP-Adresse, Username und Passwort 2.) Auswahl der Datenbank mit Name der Datenbank Bei einem Fehler: or die(mysql_error()) • Abbruch des Ladens der Seite • Ausgabe einer Standard-SQL-Fehlermeldung Bei Zugriffen auf $conn wird nun automatisch die richtige Datenbank benutzt. 4 AMP Apache MySQL PHP MySQL SQL - Anfrage 1.) SQL-Anfrage in String speichern z.B. SELECT, INSERT oder UPDATE 2.) Anfrage durchführen das Ergebnis ist ein zweidimensionales Array Identifikation der Datenbank über die Verbindung ($conn). Ergebnisarray belegt evt. sehr viel Speicherplatz und muss daher mit mysql_free_result($result) wieder freigegeben werden. 5 Ausgabe einer dynamischen Tabelle AMP Apache MySQL PHP MySQL 1.) Normaler Table-Tag 2.) Die Zeilen werden dynamisch erzeugt mysql_fetch_array liefert eine Zeile des Ergebnis-Arrays while-Schleife sorgt für wiederholte Ausführung 3. ) Mit $line[„Feldname“] Zugriff auf einzelne Felder Achtung: Groß-/Kleinschreibung entscheidend!! Übung 6 Insert / Update - Operationen AMP Apache MySQL PHP MySQL 1.) HTML-Seite mit Formular Daten werden abgefragt 2.) PHP-Seite mit Zugriff auf die Datenbank Insert / Update-Operation wird durchgeführt Ein Datenbankzugriff kann nur beim Aufruf einer neuen Seite durchgeführt werden, da php-Skripte und Datenbankzugriffe serverseitig ausgeführt werden. Web browser HTTP Web server Parameter HTML PHP SQL MySQL 7 AMP Apache MySQL PHP MySQL 8 Insert / Update - Operationen AMP Tricks Apache MySQL PHP MySQL 1.) Cachen verhindern Dynamische Seiten dürfen nicht im Cache gespeichert werden => Ablaufzeit auf 0s festlegen 2.) Input-Felder vom Typ Hidden Daten können zum nächsten php-Dokument übergeben werden 9 AMP Weitere Auswertungsmöglichkeiten Apache MySQL PHP MySQL 1.) Anzahl der Ergebniszeilen 2.) ID eines neuen Datensatzes bei automatisch nummerierten Schlüsselfeldern 10 AMP Apache MySQL PHP MySQL Übungen 1.) Dynamische Tabelle Erstellen Sie ein php-Dokument, das alle angemeldeten Schüler mit Namen, Vornamen und Klasse anzeigt. 2.) Insert - Operation Erstellen Sie eine HTML-Seite mit Formular, in das die Daten eines neuen Schülers eingegeben werden können, und eine php-Seite, die diese Daten dann in die Datenbank aufnimmt. 3.) Bonusaufgaben - Kontrollieren Sie, ob die eingegebene Klasse existiert, bevor Sie einen Schüler aufnehmen. - Erstellen Sie ein php-Dokument, das alle verfügbaren Postkarten incl. Bild darstellt. 11 AMP Apache MySQL PHP MySQL Mails aus php-Skripten SMTP-Server muss in php.ini eingetragen werden SMTP-Server darf keine Authentifizierung verlangen 2x ändern 12 AMP Apache MySQL PHP MySQL Mails aus php-Skripten Verwendung von PHP-Mailer Hiermit ist eine Authentifizierung möglich Es werden einige Variablen nach Wunsch initialisiert: $mail->IsSMTP(); setzt Mailer SMTP zu verwenden $mail->Host = "smtp.mailserver.de"; spezifiziert den Server $mail->SMTPAuth = true; SMTP-Authentifizierung einschalten $mail->Username = "nutzername"; SMTP Login-Name $mail->Password = "secret"; SMTP Passwort $mail->From = "[email protected]"; Absender-Adresse $mail->FromName = "Absender ausführlich"; $mail->AddAddress("[email protected]"); $mail->WordWrap = 50; $mail->IsHTML(false); $mail->Subject = $betreff; $mail->Body = $mailtext; 13 hinzufügen einer Empfänger-Adresse setzt Zeilenumbruch auf 50 Zeichen setzt eMail-Format auf kein-HTML eMail-Betreff eMail-Text AMP Apache MySQL PHP MySQL Mails aus php-Skripten Verwendung von PHP-Mailer Der eigentliche Versand erfolgt mit der sendMethode, welche eine Überprüfung ermöglicht: if(!$mail->Send()) { echo "Message could not be sent.<br>"; echo "Mailer Error: ".$mail->ErrorInfo; exit; } echo "<i>Message has been sent.</i><br><br>"; 14