Im folgenden Beispiel wird dem Besucher der Seite eine Reihe von verfügbaren Terminen angeboten. Die Termine sind in einer CSV-Datei definiert und werden dem Besucher abhängig von dessen Datumsangaben angeboten.
Das Formular enthält ein Kalender-Eingabefeld.
Wählt der Seitenbesucher ein Datum aus, werden dynamisch Radiobuttons mit verfügbaren Terminen angeboten.
Die Radiobuttons erhalten einen Wert, der als Referenz für die Weiterverarbeitung des Ajax-Resultates dient.
Ändert sich der Inhalt des Kalenderfeldes wird das Event "wOnAfterChangeDate()" ausgeführt.
Das Event kann in der design.js (für alle Seiten) oder nur in der aktuellen Seite über das Javascript-Quelltext-Element eingefügt werden.
Innerhalb des Events, wird nun via Ajax ein projekspezfisches PHP-Script aufgerufen, welches den HTML-Code für die Inputfelder schreibt und als String zurückgibt.
function wOnAfterChangeDate(date){ //Datumswert var dateVal = date.val(); //Formularfeldname var elementName = 'myRadio'; //Url des PHP-Scriptes, das die Inputfelder generiert var url = '/wGlobal/wGlobal/scripts/php/getRadioValues.php?date=' + dateVal + '&elementName=' + elementName; //JQueryAufruf jQuery.ajax({type: "GET", url: url, success: function(result){ if(result != ''){ //Ersetzen des bestehenden Radiobuttons. jQuery('#myRadio_').parent().replaceWith(result); } }}); }
Innerhalb des PHP-Scriptes (/wGlobal/wGlobal/scripts/php/getRadioValues.php) werden die Radio-Buttons zusammengebaut und als HTML-String zurückgegeben.
Bitte beachten Sie, dass u.a. Beispiel nicht, den Status oder die Zulässigkeit der Abfrage prüft. Ggf. müssen weitere Sicherheitsabfragen oder das Ausschließen von unerlaubten Zugriffen in der Syntax ergänzt werden.
include_once($_SERVER['DOCUMENT_ROOT'].'/weblication/grid.php');
error_reporting(0);
/**
*
Bitte beachten Sie, dass dieses Script für alle Benutzer aufrufbar ist.
Sicherheitsmaßnahmen wurden bei diesem Beispiel nicht berücksichtigt
*
**/
if(session_id() == '') die();
//Initialisieren der Variablen
$dateValue = wRequest::getParameterSecureStrict('date');
$elementName = wRequest::getParameterSecureStrict('elementName');
$csvFilePath = '/dev-wAssets/docs/beispieldaten.csv';
$html = '';
//Auslesen der Informationen, die für das Datum geschrieben werden sollen.
//In diesem Beispiel werden die Daten aus einer CSV ausgelesen.
if($dateValue != '' && wRepository::documentExists($csvFilePath)){
//Auslesen der CSV-Datei in ein Array
$data = wReadWrite::readFileCSVArray($csvFilePath) ?? array();
//Schreiben des HTML-Strings, hier Radiobuttons
for($i = 0; $i < count($data); $i++){
if($data[$i]['date'] === $dateValue){
$data[$i]['name'] = $data[$i]['name'] ?? '';
$html .= '<span class="wglRadio">
<input type="radio" id="'.$elementName.'_'.$data[$i]['name'].'" name="'.$elementName.'" value="'.$data[$i]['name'].'">
<label for="'.$elementName.'_'.$data[$i]['name'].'">'.$data[$i]['name'].'</label>
</span>';
}
}
}
print $html;