Ziel ist es so wenig wie möglich Daten über das Netz zu schicken. Dies bedeute, dass nicht bei jeder Anforderung
die komplette Seite neu aufgebaut werden soll. Es bietet sich dazu die Verarbeitung mit JavaScript und AJAX an.
Ich benutze deshalb PHP in der Regel dazu Daten, über einen AJAX Request, aus der Datenbank zu selectieren und als XML zurück zu geben.
Weiter benutze ich PHP dazu, Daten, die aus einem HTML-Formular über AJAX übertragen werden, in die Datenbank einzupflegen.
Die Verarbeitung in JavaScript hat den Vorteil, dass das Formular geprüft werden kann und ggf. Variablen verändert werden können.
Grundsätzlich arbeite ich mit XML-Daten. Sollte das bei großen Datenmengen ein Problem werden, muss man
individuell eine Trennzeichenlösung finden.
Mit mysqli_query wird der oben erstellte Select ausgeführt.
Die zweite Zeile gibt im Fehlerfall die Fehlermeldung aus.
Dies lasse ich aber in der Produktivanwendung weg, damit etwaige Angreifer
keine zusätzlichen Informationen erhalten.
$e_dbErgebnis = mysqli_query($e_db, $v_qry)
OR die("Error: ".$v_qry."<p>".mysqli_error()."<\p>");
Die Trefferliste wird mit einer Schleife abgearbeitet.
Mit mysqli_fetch_array wird ein Satz in ein Array geladen.
Innerhalb der Schleife wird dann jedes Feld verareitet.
while ($v_zeile = mysqli_fetch_array($e_dbErgebnis, MYSQLI_ASSOC))
{
$v_feld1 = rawurlencode($v_zeile["DB-Feldname1"]);
$v_feld2 = $v_zeile["DB-Feldname2"];
... weitere Verarbeitung ...
}
Mit mysqli_num_rows wird die Anzahl der gefunden Sätze ermittelt.
Hier muss das Element von mysqli_query übergeben werden.
$v_anz = mysqli_num_rows($e_dbErgebnis);
Bei Insert, Update oder Delete Anweisungen kann mit mysqli_affected_rows die Anzahl der verarbeiteten Sätze ermittelt werden.
Hier muss das Element von mysqli_connect übergeben werden.
Hier wird die grundsätzliche Arbeitsweise dargestellt.
In JavaScript wird ein AJAX-Request erzeugt und die Daten hinzugefügt.
Der AJAX-Request wird an PHP geschickt.
Die PHP-Seite gibt die Daten als HTML oder XML zurück.
Nicht realisiert ist hier die eigentliche Datenbankverarbeitung.
Die Felder Wert1 und Wert2 werden als Parameter übergeben. Ist das Feld nicht ausgefüllt,
wird leer zurückgegeben.
In der Auswahlliste ist eine Mehrfachauswahl möglich. Die selektierten Einträge werden
in ein Array übernommen. Diese Array wird an PHP übergeben. In PHP stehen die Werte des
Array getrennt durch Komma in einem String. Dieser kann mit explode wieder in ein Array
umgewandelt werden.
Die Felder Wert 1 und Wert 2 werden eins zu eins zurückgegeben. Als Parameter 3 werden
alle markierten Werte in der Auswahlliste zurückgegeben und als Parameter 4 der zweite selektierte Wert
aus der Auswahlliste. Ist keiner ausagewählte wird leer angezeigt.
Senden (Text)
Für den Button Senden (Text) ist ein Eventlistener installiert.
Es wird die Funktion sendenAjaxText aufgerufen.
In dieser Funktion wird der AJAX-Request vorbereitet und gesendet.
Beim Ajax-Event load wurde die Funktion dataShowText() angegeben.
Diese Funktion löscht zunächst den Anzeigebereich und zeigt dann das Ergebnis aus der PHP-Datei an.
Für den Button Senden (XML) ist ein Eventlistener installiert.
Es wird die Funktion sendenAjaxXML aufgerufen.
In dieser Funktion wird der AJAX-Request vorbereitet und gesendet.
Die Funktion sendenAjaxXMLruft die PHP-Datei phpReturnXML.php auf.
Die PHP-Datei gibt die übergebenen Parameter als XML zurück.
Achtung! Damit es keine bösen Überraschungen mit < und > Zeichen in den XML-Daten gibt,
sollten die Variablen in PHP mit rawurlencode($var1) codiert werden.
Beim Ajax-Event load wurde die Funktion dataShowXML() angegeben.
Diese Funktion löscht zunächst den Anzeigebereich.
Aus dem XML werden die Werte selektiert und angezeigt.
Zum Hochladen einer Datei auf den Server muss im Formtag unbedingt enctype="multipart/form-data"
angegeben werden.
Zur Dateiauswahl muss der input type file sein.
Die hier verwendete PHP-Datei hat keine Einschränkung bei Typ oder Größe der Datei.
Das birgt natürlich ein Sicherheitsrisiko.
Im PHP-Script stehen die folgende Variablen zur Verfügung:
$_FILES['datei']['name']
Name der Datei, die ausgewählt wurde.
$_FILES['datei']['tmp_name']
Name der Datei im temporären Verzeichnis auf dem Server.
$_FILES['datei']['size']
Größe der Datei in Bytes.
$_FILES['datei']['type']
MIME-Type der Datei.
Die Datei wird temporär auf den Server geladen und muss im PHP-Script verschoben werden.
Dies geschieht mit move_uploaded_file.
Das Zielverzeichnis muss die Berechtigung zum Schreiben für alle Benutzer haben (777);
In diesem Beispiel wird das Hochladen verhindert, indem der move_uploaded_file nicht ausgeführt wird.
Variablen werden mit name.php?name1=wert1&name2=wert2 übergeben (Get-Methode).
Bei der Anzeige der Seite werden die Parameter/Variablen in der URL angezeigt.
Außerdem wird noch der Name und der Value des Buttons mitgeliefert (&senden=Senden)
Checkbox
Die PHP-Datei sieht so aus:
<?php
/* Ausgabe und Zeichensatz
html - Ausgabe wird als HTML Code verarbeitet
xml - Ausgabe wird als XML interpretiert - Fehler wenn kein XML
text - Ausgabe wird als Text interpretiert und abgefragt ob die Ausgabe gespeichert oder mit Editor angezeigt werden soll */
header( 'Content-type: text/html; charset=utf-8' );
/* Übergeben Variablen verarbeiten */
$var1 = trim($_GET['getWert1']);
$var2 = trim($_GET['getWert2']);
var_dump($_GET['getWert1']);
echo " ";
var_dump($_GET['getWert2']);
echo " ";
print ("Variable 1: -->".$var1."<--<br>");
print ("Variable 2: -->".$var2."<--");
?>
PHP Aufruf und Variablenübergabe (Post)
Eine Seite, bei der die Variablen mit POST übergeben werden sollen, kann nur über
ein Formular mit methode="post" aufgerufen werden.
Bei der Anzeige der Seite werden die Parameter/Variablen nicht in der URL angezeigt.
Es wird noch der Name und der Value des Buttons mitgeliefert (&senden=Senden)
Die PHP-Datei sieht aus wie oben nur das GET durch POST ersetzt wird.