... just another site around the web ...





PHP


Allgemein

Einbinden

Der PHP-Interpreter wertet alles aus was zwischen <?php und ?> steht.

<?php ... ?>

Die alternative Kurzform <?= $variable ?> ist äquivalent zu <?php echo $variable; ?>

<?= $variable ?>

PHP-Code kann an beliebiger Stelle notiert werden. Der PHP Code wird ausgewertet, das Ergebnis an der Stelle in das HTML-Dokument eingefügt und das fertige Dokument an den Browser gesendet.

<html>
	<head>
		...
		<?php ... ?>
		...
	</head>
	<body>
		...
		<?php ... ?>
		...
	</body>
</html>

Kommentare

<?php 
// einzeiliger Kommentar
/* 
 mehrzeiliger Kommentar
 */
?>

Hallo Welt

<?php echo "Hallo Welt!"; ?>

Datentypen

Integer

$i = 1;
$i = 1.5;

String

Strings gibt es in einfachen und in doppelten Anführungszeichen ('...' und "..."). Einfache Anführungszeichen begrenzen den String so wie er ist. Doppelte Anführungszeichen werten Variablen innerhalb des String aus. Beides hat seine Vor- und Nachteile.

$text = 'geheim';
echo '$text enthält '.$text; // ergibt: $text enthält geheim
echo "$text enthält {$text}"; // ergibt: geheim enthält geheim 

Array

Erzeugen:

$beispiel = array();

Elemente hinzufügen kann man implizit oder explizit:

$beispiel[] = "neues Element"; // schneller, aber unordentlicher da implizit
array_push($beispiel, "neues Element"); // langsamer, aber ordentlicher da explizit

Hash

Ein Hash ist hervorragend geeignet um Werte nachzuschlagen. Sozusagen ein kleines Wörterbuch.

$minion = array('purple' => 'bad', 'yellow' => 'good');
$found_minion_with_color = 'yellow';
echo "Your Minion is a {$minion[$found_minion_with_color]} Minion";
$found_minion_with_color = 'yellow';
echo "Your Minion is a {$minion[$found_minion_with_color]} Minion";

Klassen und Objekte

class fubar {
	
	private $variable = "Rumpelstielzchen";
	
	public function __construct($variable) {
		$this->variable = $variable;
		$this->zeige();
	}
	
	public function __destruct() {
		$this->geheimfunktion();
		$this->zeige();
	}
	
	private function geheimfunktion() {
		$this->variable = "Wieder Rumpelstielzchen, hihi"
	}
	
	public function zeige() {
		echo $this->variable;
	}
	
}
$trickkiste = new fubar("Rotkäppchen"); 

Vererbung

class RumpelsKinder extends fubar {
}
class RumpelsKinder extends fubar {
	function __construct() {
		parent::__construct("Rumpelstielzchen");
	}
}

Sprachkonstrukte

Fallunterscheidung

Bedingte Verzeigung (if-then-else)

if ($zahl == 0) {
	echo "zahl ist null";
} else {
	echo "zahl ist nicht null";
}

Kurzform

echo (($zahl == 0) ? "null" : "kein null");

Auswahl (switch-case)

Die Fallunterscheidung in PHP funktioniert mit Integer und String gleichermaßen.

switch ($zahl) {
    case 0:
        echo "zahl ist gleich 0";
        break;
    case 1:
        echo "zahl ist gleich 1";
        break;
    case 2:
        echo "zahl ist gleich 2";
        break;
    default:
       echo "zahl ist nicht 0, 1 oder 2";
}
switch ($text) {
    case 'hallo':
        echo "text ist hallo";
        break;
    case 'wiedersehen':
        echo "text ist wiedersehen";
        break;
    default:
       echo "kein hallo und kein wiedersehen";
}

Iteration

Kopfgesteurte Schleife (while)

$i = 4;
while ($i <= 10) {
	$i++;
}

Zählende Iteration (for)

for ($i = 1; $i <= 100; $i++) {
	...
}

Element-Iteration (foreach)

foreach ($array as $member) {
	...
}

Funktionen

header

Header erlaubt die Übergabe von HTTP-Statuscodes, Umleitungen, Cache- oder Content-Angaben, ...

header("HTTP/1.0 404 Not Found"); // Beispiel-Statuscode
header("Location: http://www.relast.de/"); // Beispiel-Umleitung
header("Cache-Control: no-cache, must-revalidate"); // Kein Cache nutzen
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="handbuch.pdf"');
readfile('pdf/handbuch.pdf');

Deklarierte und leere Variablen

if (isset($variable)) echo "Variabele wurde deklariert.";
if (!isset($variable)) echo "Variabele wurde nicht deklariert.";
if (empty($variable)) echo "Variabele wurde deklariert aber ist leer.";
if (!empty($variable)) echo "Variabele wurde deklariert und ist nicht leer.";

var_dump

Liefert eine vollständige Ausgabe der übergebenen Inhalte (variable - dump)

var_dump($_SERVER);

Beispiele

Auswertung von URL-Parametern

Es können sowohl POST- als auch GET-Daten ausgewertet werden.

echo "GET-Daten: ";
var_dump($_GET);
echo "<br>";
echo "POST-Daten: ";
var_dump($_POST);
echo "<br>";

Formular auswerten

index.html

<form action="script.php" method="post">
	<input type="text" name="name" value="Rumpelstielzchen">
	<input type="hidden" name="token" value="12345">
	<button type="submit" title="Absenden">Absenden</button>
</form>

script.php

<?php echo "Du hast den Namen '".$_POST['name']."' eingegeben und Dein Token ist ".$_POST['token']."."; ?>

Bei Select-Feldern muss beachtet werden das ein Multi-Select beim Absenden nur als Array weiter gegeben werden kann personen[]. Werden die eckigen Klammern weg gelassen wird auch bei mehrfacher Auswahl nur ein Element übergeben.

<select name="personen[]" multiple>
	<option value='1'>Max Muster</option>>
	<option value='2'>Testi Tester</option>>
</select>

Download erzeugen

$file = 'handbuch.pdf';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}

MySQL Zugriff

$db_host = 'localhost';
$db_user = 'benutzer';
$db_pass = 'passwort';
$db_name = 'datenbankname';
$db_link = mysql_connect($db_host, $db_user, $db_pass) 
	or die('Datenbankfehler: Verbindung fehlgeschlagen.');
mysql_select_db($db_name) 
	or die('Datenbankfehler: Datenbankauswahl fehlgeschlagen.');
$result = mysql_query("SHOW TABLES FROM {$db_name};") 
	or die('Datenbankabfrage fehlgeschlagen.');
$rows = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
{
	$rows[] = $row;
}
foreach ($rows as $row) {
	echo "{$row['Tables_in_'.$db_name]}<br>";
}

Bei einem INSERT kann die ID des letzten eingefügten Elements mit $id = mysql_insert_id(); ermittelt werden.









Copyright © 2017

Impressum