Esempio Online Anteprima
Sorgente PHP: examples/ajax/save.php
Sorgente XML: examples/ajax/save.xml
MODIFICA DATI
Le richieste per la modifica dei dati, inteso come la possibilita di inserire, aggiornare e cancellare elementi associati ad un datasource si effettuano tramite la formulazione di semplici richieste ricordando che:
- data: Variabile dedicata per indicare il tipo di azione da eseguire
- dsobjname: Variabile dedicata per indicare l'oggetto ds da utilizzare
- keyname: Nome del campo chiave
- keynamevalue: Valore del campo chiave
E' possibile accodare ulteriori parametri rispettando la sintassi ¶metro=valore
Alcuni esempi di richieste possibili sono:
Richiesta per l'inserimento di un elemento all'interno della struttura dati interfaccia con ds1
AJAX.request('POST', 'mypage.php', 'data=new&dsobjname=ds1&nome=mario&cognome=rossi', true, false);
Richiesta per la modifica di un valore presente all'interno della struttura dati interfaccia con ds1
AJAX.request('POST', 'mypage.php', 'data=update&dsobjname=ds1&cognome=verdi&keyname=id&keynamevalue=5', true, false);
Richiesta per la cancellazione di un elemento presente all'interno della struttura dati interfaccia con ds1
AJAX.request('POST', 'mypage.php', 'data=delete&dsobjname=ds1&keyname=id&keynamevalue=5', true, false);
Negli esempi sopra proposti il valore dell'ultimo parametro relativo alla restituzione dei dati presenti nel datasource è posto a false questo implica che conclusa la transazione lato client, nessun ulteriore azione verrà svolta, in alcuni casi può risultare conveniente richiedere anche per le transazioni di modifica la restituzione dei dati, esempio quando gli oggetti presenti nella pagina sono legati ai datasource, l'aggiornamento del ds infatti ha come effetto quello di ripopolare li stessi evitando delle inconsistenze tra i dati visualizzati e i dati presenti nelle strutture dati a cui si fa riferimento.
SVUOTARE UNA TABELLA
E' possibile svuotare una tabella tramite le funzioni del framework. Prima di tutto biosogna autorizzare l'oggetto ds ad svuotare la tabella con il parametro: deleteall=true. Reference DS.
La richiesta di eliminazione può avvenire in diversi modi:
<?php
/**
* PHP Source File
* @author Alyx Association <info@alyx.it>
* @version 1.0
* @copyright Alyx Association 2008-2010
* @license GNU Public License
*/
require_once("./../../class/system.class.php");
$system = new ClsSystem(true);
$xml = new ClsXML("save.xml");
$event = new ClsEvent($xml);
$event->managerRequest();
function html_load()
{
global $event;
$code = "
function sendRequest(action)
{
var post = 'data='+action;
var ds1 = $('ds1');
post += '&dsobjname=ds1';
post += '&keyname=' + encodeURIComponent(ds1.p.DSkey);
if (action!='new')
{
post += '&keynamevalue=' + encodeURIComponent(ds1.DSresult[ds1.DSpos][ds1.p.DSkey]);
post += '&field1=' + encodeURIComponent(ds1.DSresult[ds1.DSpos]['field1']);
post += '&field2=' + encodeURIComponent(ds1.DSresult[ds1.DSpos]['field2']);
}
else
{
post += '&keynamevalue=-1';
post += '&field1=field1';
post += '&field2=field2';
}
AJAX.request('POST', 'save.php', post, true, true);
}
";
$event->setCodeJs($code);
}
function print_request()
{
global $event;
$event->setCodeJs("$('label1').innerHTML='".$_REQUEST['data']."';");
$event->setCodeJs("$('label2').innerHTML='".$_REQUEST['dsobjname']."';");
$event->setCodeJs("$('label3').innerHTML='".$_REQUEST['keyname']."';");
$event->setCodeJs("$('label4').innerHTML='".$_REQUEST['keynamevalue']."';");
$event->setCodeJs("$('label5').innerHTML='".$_REQUEST['field1']."';");
$event->setCodeJs("$('label6').innerHTML='".$_REQUEST['field2']."';");
}
function data_new($ds)
{
print_request();
}
function data_update($ds)
{
print_request();
}
function data_delete($ds)
{
print_request();
}
?>
<?xml version="1.0" encoding="utf-8"?>
<jamp>
<page typeobj="page" title="JAMP - Esempio transazione AJAX per il salvataggio" icon="../../favicon.ico" loaddata="true">
<ds1 typeobj="ds" conn="conn6" dstable="translation" dskey="key" dslimit="20" dssavetype="table" />
<fieldset1 typeobj="fieldset" legend="Action" style="float: left; width: 150px; height: 110px;">
<button1 typeobj="button" value="New" onclick="javascript: sendRequest('new');" style="width: 140px" />
<button2 typeobj="button" value="Update" onclick="javascript: sendRequest('update');" style="width: 140px" />
<button3 typeobj="button" value="Delete" onclick="javascript: sendRequest('delete');" style="width: 140px" />
</fieldset1>
<fieldset2 typeobj="fieldset" legend="Result" style="width: 200px; height: 110px;">
<label1 typeobj="label" label="data: " value=" " labelwidth="100px" style="margin-left: 5px; font-weight: bold; font-size: 1em;"/>
<label2 typeobj="label" label="dsobjname: " value=" " labelwidth="100px" style="margin-left: 5px; font-weight: bold; font-size: 1em;"/>
<label3 typeobj="label" label="keyname: " value=" " labelwidth="100px" style="margin-left: 5px; font-weight: bold; font-size: 1em;"/>
<label4 typeobj="label" label="keynamevalue: " value=" " labelwidth="100px" style="margin-left: 5px; font-weight: bold; font-size: 1em;"/>
<label5 typeobj="label" label="param1: " value=" " labelwidth="100px" style="margin-left: 5px; font-weight: bold; font-size: 1em;"/>
<label6 typeobj="label" label="param2: " value=" " labelwidth="100px" style="margin-left: 5px; font-weight: bold; font-size: 1em;"/>
</fieldset2>
<gridds1 typeobj="gridds" dsobj="ds1" width="autosize" height="autosize">
<coloumn>
<col objtype="label" itemlabel="key" dsitem="key" />
<col objtype="text" itemlabel="field1" dsitem="field1" />
<col objtype="text" itemlabel="field2" dsitem="field2" />
</coloumn>
</gridds1>
</page>
</jamp>