PHP-3 - Prof. Dr. Armin Lehmann - e

Werbung
Web-basierte Anwendungssysteme
PHP Teil 3
Prof. Dr. Armin Lehmann
([email protected])
Fachbereich 2 Informatik und Ingenieurwissenschaften
Wissen durch Praxis stärkt
Seite 1
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Dateisystemfunktionen
 In PHP kann auf das Dateisystem des Servers zugegriffen
werden, um
+ Ordner, Dateien zu erstellen oder zu löschen
+ Ordner, Dateien zu manipulieren
+ Dateien auszulesen
Seite 2
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Dateisystemfunktionen
 Informative Funktionen für Dateien und Ordner
+ filemtime(string $filename) – Datum der letzten
Änderung der Datei
+ fileatime(string $filename) – Datum des letzten
Zugriffs
+ filesize(string $filename) – Größe in Bytes
+ opendir(string $path) – Ordner öffnen
+ readdir() – gibt den Namen der nächsten Datei im
geöffneten Ordner an
+ closedir(string $path) – schließt den Ordner
Seite 3
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Dateisystemfunktionen
 Dateien lesen, schreiben und anfügen
+ fopen(string $filename, string $mode) – Die
drei Modi r,w und a werden hierfür verwendet
+ fopen() gibt einen Zeiger auf die Datei zurück
 Datei schließen
+ fclose($fopenPointer)
Seite 4
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Dateisystemfunktionen
 fgets($fopenPointer) – liest eine Zeile
 feof($fopenPointer) – gibt TRUE zurück, falls das Ende
der Datei erreicht wurde
 fread($fopenPointer, int $length) – gibt den Inhalt
entsprechend der angegebenen Länge in Bytes zurück
Seite 5
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Dateisystemfunktionen
 Beispiel:
<?php
$f = fopen("php.txt", "r") or die("Unable to open
file!");
// Liest Zeile für Zeile bis zum Ende der Datei
while(!feof($f)) {
echo fgets($f) . "<br />";
}
fclose($f);
# Oder
$myfile = fopen("php.txt", "r") or die("Unable to open
file!");
echo fread($myfile,filesize("php.txt"));
fclose($myfile);
?>
Seite 6
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Dateisystemfunktionen
 In eine Datei wird mit fopen() geschrieben
 Achtung: die Dateiberechtigungen müssen stimmen!!!
 fopen("php.txt", "w") erstellt die Datei immer neu
(leere Datei wird erzeugt)
 fwrite($fopenPointer, "Hallo Welt!") – erzeugt
einen Eintrag in der Datei
Seite 7
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Dateisystemfunktionen
 Beispiel:
<?php
$f = fopen("php.txt", "w") or die("Unable
to open file!");
$txt = "PHP ist doof!\n";
fwrite($f, $txt);
$txt = "Besonders am Dienstag\n";
fwrite($f, $txt);
fclose($f);
?>
Seite 8
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Dateisystemfunktionen
 Datei-Upload mittels $_FILES und
bool move_uploaded_file ( string $filename ,
string $destination )
<form action="upload.php" method="post" enctype="multipart/form-data">
Datei zum Upload wählen:
<input type="file" name="fileToUpload">
<input type="submit" value="Upload" name="submit">
</form>
<?php
$upload_dir = "uploads/";
// fügt Pfad und Datei zusammen
$upload_file = $upload_dir . basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $upload_file)) {
echo "Datei hochgeladen.\n";
} else {
echo "Fehler beim Hochladen!\n";
}
?>
Seite 9
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Datenbank
 Ist sicherer und besser zum speicher von Daten geeignet als
Dateien
 Hierzu wird z.B. ein MySQL-Server benötigt
 PHP mit MySQL verbinden (MySQLi oder PDO (PHP Data
Objects))
 Beispiele immer nur MySQLi Prozedural im Kurs
Seite 10
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
MySQL-Datenbank
 Mit Datenbank verbinden - mysqli_connect()
<?php
$servername = "localhost";
$uname = "username";
$pword = "password";
// Create connection
$conn = mysqli_connect($servername, $uname, $pword);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Seite 11
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
MySQL-Datenbank
 Befehle auf Datenbank ausführen - mysqli_query($conn,
$befehl)
<?php
$servername = "localhost";
$uname = "username";
$pword = "password";
$conn = mysqli_connect($servername, $uname, $pword);
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Create database
$sql = "CREATE DATABASE nameDerDB";
if (mysqli_query($conn, $sql)) {
echo "Database created successfully";
} else {
echo "Error creating database: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
Seite 12
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
MySQL-Datenbank
 Erstellen eine Tabelle z.B. Für Gäste
CREATE TABLE Guests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)
 Für jedes Feld in der Tabelle muss ein Datentyp definiert
werden (http://www.w3schools.com/sql/sql_datatypes.asp)
Seite 13
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
MySQL-Datentypen
 Ein kleiner Auszug:
CHAR(size)
Holds a fixed length string (can contain letters, numbers, and
special characters). The fixed size is specified in parenthesis.
Can store up to 255 characters
VARCHAR(size)
Holds a variable length string (can contain letters, numbers,
and special characters). The maximum size is specified in
parenthesis. Can store up to 255 characters.
TEXT
Holds a string with a maximum length of 65,535 characters
BLOB
For BLOBs (Binary Large OBjects). Holds up to 65,535 bytes of
data
INT(size)
-2147483648 to 2147483647 normal. 0 to 4294967295
UNSIGNED*. The maximum number of digits may be specified
in parenthesis
FLOAT(size,d)
A small number with a floating decimal point. The maximum
number of digits may be specified in the size parameter. The
maximum number of digits to the right of the decimal point is
specified in the d parameter
DECIMAL(size,d)
A DOUBLE stored as a string , allowing for a fixed decimal
point. The maximum number of digits may be specified in the
size parameter. The maximum number of digits to the right of
the decimal point is specified in the d parameter
Seite 14
Web-basierte Anwendungssysteme WS 2016/17
Prof. Dr. Armin Lehmann
MySQL-Attribute
 NOT NULL - Each row must contain a value for that column,
null values are not allowed
 DEFAULT value - Set a default value that is added when no
other value is passed
 UNSIGNED - Used for number types, limits the stored data to
positive numbers and zero
 AUTO INCREMENT - MySQL automatically increases the value
of the field by 1 each time a new record is added
 PRIMARY KEY - Used to uniquely identify the rows in a table.
The column with PRIMARY KEY setting is often an ID number,
and is often used with AUTO_INCREMENT
Seite 15
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
MySQL-Befehle
 Daten in die Datenbank schreiben INSERT INTO
table_name (spalte1, spalte2, spallte3,...)
<?php
…
if (!$conn) {
die("Connection failed: " .
mysqli_connect_error());
}
$sql = "INSERT INTO nameDerDB (firstname, lastname, email)
VALUES ('John', 'Doe', '[email protected]')";
if (mysqli_query($conn, $sql)) {
…
?>
Seite 16
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
MySQL-Befehle
 Daten aus Datenbank lessen SELECT column_name(s)
FROM table_name
...
$sql = "SELECT id, firstname, lastname FROM nameDerDB ";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " .
$row["firstname"]. " " .
$row["lastname"]. "<br>";
}
} else {
echo "0 results";
}
Seite 17
mysqli_close($conn);
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
MySQL-Befehle
 Daten aus Datenbank löschen DELETE FROM table_name
WHERE some_column = some_value
...
// sql to delete a record
$sql = "DELETE FROM nameDerDB WHERE id=3";
if (mysqli_query($conn, $sql)) {
echo "Record deleted successfully";
} else {
echo "Error deleting record: " .
mysqli_error($conn);
}
mysqli_close($conn);
Seite 18
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
MySQL-Befehle
 Daten in Datenbank aktualisieren UPDATE table_name SET
column1=value, column2=value2,... WHERE
some_column=some_value
...
$sql = "UPDATE nameDerDB SET lastname='Doe' WHERE id=2";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " .
mysqli_error($conn);
}
mysqli_close($conn);
Seite 19
Prof. Dr. Armin Lehmann
Web-basierte Anwendungssysteme WS 2016/17
Herunterladen