ESA 2012.A6: AJAX, JSON, Server-Speicherung

Diese Aufgabe besteht darin, eine Client-Server-Anwendung zu entwickeln und zu testen, die Formular-Daten mit Hilfe von AJAX auf dem Sever im Server-Filesytem speichert, clientseitig und serverseitig JSON verwendet und die serverseitig gespeicherten Daten clientseitig präsentieren kann. Es ist AJAX zu verwenden.

Achtung! Die nachfolgende Beschreibungen sind weniger eine konkrete Aufgabenstellung, sondern lediglich Hinweise sein, die einen kreativen Freiraum für ein eigenes Projekt lassen.

  1. AJAX und PHP (Basis-Wissen). Siehe AJAX from Scratch und Lade mit AJAX eine XML-Seite
  2. Es ist eine PHP-Seite zu erstellen, die serverseitig assoziative Array's und das Filesystem verwendet.
  3. Das Projekt ist zu komplettieren, zu testen und zu dokumentieren.

Zu 1: AJAX und PHP benötigt Basis-Wissen

Zahlreiche Hinweise zu AJAX und PHP finden sich im Netz, wie z.B. bei de.wikipedia PHP und AJAX

Eine einfache "AJAX-Engine vom Scratch" kann hilfreich sein. Hier ist ein Schelleinstieg zu AJAX from Scratch und hier ist ein PHP - Beispiel - Quelltext und hier ein Beispiel für das Laden einer XML-Seite mit AJAX. Allgemeines zu AJAX findet sich reichlich im Netz, z.B. AJAX (Asynchronous JavaScript and XML) verwendet ECMAScript und XMLHttpRequest (Level 2) - Zugriffe auf Server-XML-Objekte.

Zu 2: PHP und Array's benötigt Basis-Wissen

Die folgenden PHP Hinweise sind nicht getestet, können aber hilfreich sein, um in einer PHP-Seite serverseitig mit assoziative Array's und JSON zu arbeiten.

Wie kann ein assoziativer PHP-Array $arr angezeigt (debug) werden? Die Funktion debug_arr(&$arr, $titel='') kann hilfreich sein:

function debug_arr(&$arr, $titel='') { // zeigt $arr an 
  echo '<pre>*** '.$titel.'<br />'; 
  //auch print_r($arr); oder var_dump($arr);
  print str_replace(array("\n"," "),array("<br />","&nbsp;"),
                          var_export($arr,TRUE));reset($arr);
  echo "</pre>";
}
$arr = array( // Test-Array
  'maier'  =>  'Hans Meier | Griesweg 4  | 4711 Hintertüpfingen',
  'weber'  =>  'Klaus Weber| Narzösse 1  | 12345 Schupfingen',
  'kraus'  =>  'Karl Kraus | Tulpenweg 9 | 98765 Wohnland',
  'mueller' =>  'Egon Müller | Neuer Weg 11 | 4712 Unterbörteln'
);
// Aufruf:
debug_arr(&$arr,'Zeige Test-Array an');
Zu 2: PHP und Files benötigt Basis-Wissen

Die folgenden PHP Hinweise sind nicht getestet, können aber hilfreich sein, um in einer PHP-Seite serverseitig das Filesystem zu verwenden. Es liege ein PHP $append_string vor, der am Ende der Datei mit dem Dateinamen $file_name gespeichert werden soll. $file_size soll auf $file_size_max = 99000; begrenzt werden. PHP-Code-Snippet:

$file_size  = 0;  
$file_chmod = 0700; // bei .ht-Dateien
if (file_exists($file_name)) { 
  $file_size = @filesize($file_name); 
} 
if($file_size+strlen($append_string) > $file_size_max) { exit; }

$append_string = $append_string . @file_get_contents ($file_name);
if (@file_put_contents($file_name,$append_string,LOCK_EX) === false) {exit;} 
// alternative FILE_APPEND|LOCK_EX
@chmod($file_name, $file_chmod);
Zu 2: PHP und JSON benötigt Basis-Wissen

Zahlreiche Hinweise zu JSON finden sich im Netz, wie z.B. JavaScript-Object-Notation bei de.wikipedia
json-de bei Crockford
JSON auf dieser Homepage bei Objekte-allgemein
JSON auf dieser Homepage bei save-permanent

Wie wird bei PHP mit json_encode() und json_decode() umgegangen? Ungeprüfte Hinweise als PHP-Code-Snippet:

$my_php_arr  = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5 );

$my_json_str = json_encode($my_php_arr);
// $my_json_str entspricht etwa {"a":1,"b":2,"c":3,"d":4,"e":5}

// speichere $my_json_str
if (@file_put_contents($file_name,$my_json_str,LOCK_EX) === false) {exit;}

// lade $my_json_str
$my_json_str = @file_get_contents($file_name);
// entspricht etwa 
// $my_json_str = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

$my_php_arr = json_decode($my_json_str, true);
// macht $my_php_arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5 );
Zu 3: Dokumentieren

Das gesamte Projekt ist zu komplettieren, zu testen und zu dokumentieren. Zum Projekt gehören dann (min) eine .htm-Seite und eine .php-Seite und (min) eine serverseitige Datendatei.

Viel Freude bei der Ausarbeitung!
Letzter Abgabetermine Mo 12.00 Uhr