icon
Avatar
visionecreativa
Post: 226
Con Catalog è possibile aggiungere record in BE tramite la sua gestione, invece in FE si può usare il modulo Catalog Edit o il Generatore di Form.

Ma se vogliamo rimuovere un record come facciamo dal FE ?

:confused:
Maurizio A.
www.visionecreativa.com
www.contaotutorial.com
10/08/2011 09:40
Avatar
gianko82
Post: 143
:w00t: stai facendo passo passo tutto quello che ho già fatto nel mio progetto in corso!!

Per cancellare dal frontend gli elementi di catalogo ho scritto a mano un po' di codice che mi fa la cancellazione dell'elemento specifico tramite Ajax.

In pratica devi scrivere una funzione javascript che fa una richiesta http su un file php a cui passi come parametri GET tutto cio' che ti serve per individuare univocamente l'elemento specifico (basterebbe anche solo l'ID ad esempio).
Puoi cancellare anche gruppi di elementi, dipende da quale parametro/i scegli di passare al GET del php... dentro al quale poi fai eseguire la query al db....

potrebbe sembrare un po' complicato all'inizio ma se leggi qualcosa su ajax ti accorgi subito che è semplicissimo!

Con questo sistema sono arrivato a gestire cataloghi piuttosto ben articolati dal frontend!
a presto,
Giancarlo.
11/08/2011 00:24
Avatar
visionecreativa
Post: 226
Putroppo non ho molta dimestichezza con Ajax non è che avresti da postare qualche riga di codice di esempio da cui partire... ;)
Maurizio A.
www.visionecreativa.com
www.contaotutorial.com
11/08/2011 00:38
Avatar
Abisem
Post: 211
iconvisionecreativa:
Putroppo non ho molta dimestichezza con Ajax non è che avresti da postare qualche riga di codice di esempio da cui partire... ;)


Ciao, a suo tempo io avevo adottato una "tecnica" simile ad Ajax che si chiama AHaH, che con una semplice funzione ti permette di eseguire richieste asincrone al server web, con in più il vantaggio della scalabilità nativa.
Da allora ho sempre usato questa...

Ecco lo script, che io integro includendo ahah.js nella mia pagina HTML:

iconjavascript:
 
//AHAH (Asynchronous HTML and HTTP) JavaScript Document
function callAHAH(url, pageElement, callMessage, errorMessage) {
	document.getElementById(pageElement).innerHTML = callMessage;
	try {
	req = new XMLHttpRequest();
	/* e.g. Firefox */
	} catch(e) {
		try {
		req = new ActiveXObject("Msxml2.XMLHTTP");
		/* some versions IE */
		} catch (e) {
			try {
			req = new ActiveXObject("Microsoft.XMLHTTP");
			/* some versions IE */
			} catch (E) {
				req = false; 
			}
		}
	}
	req.onreadystatechange 
		= function() {
		responseAHAH(pageElement, errorMessage);
		}; 
		req.open("POST",url,true);
		req.send(null);
}   
 
function responseAHAH(pageElement, errorMessage) {
	if(req.readyState == 4) {
		if(req.status == 200) {
			output = req.responseText;
			document.getElementById(pageElement).innerHTML = output;
		} else {
			document.getElementById(pageElement).innerHTML = errorMessage+"\n"+responseText;
		}
	}
}
 


Un esempio banale:

iconhtml4strict:
 
<div id="contenitore">
  1 2 3 prova
</div>
 
<a href="#" onclick="callAHAH('mia-pagina.php', 'contenitore', 'loading...', 'Errore!'); return false;">Clicca per cambiare</a>
 


mia-pagina.php potrebbe essere una semplice pagina con

iconphp:
echo("hello world!");


Se tutto è giusto, cliccando sul link la scritta dentro il tuo contenitore dovrebbe cambiare perché presenta come innerHtml del tuo elemento il risultato dell'esecuzione della pagina PHP. Ti lascio immaginare le possibilità che ci sono facendo eseguire un'altra pagina PHP rimanendo nella nostra pagina di partenza...

Prova e fammi sapere se risolve il tuo problema :)
[L'ultima modifica di Abisem, 11/08/2011 21:59]
Pluralitas non est ponenda sine necessitate.
11/08/2011 21:43
Avatar
visionecreativa
Post: 226
:w00t: ho appena letto il metodo...

mi sembra veramente geniale e applicato in maniera giusta si possono fare una miriade di cose.

Mi metto al lavoro e ti faccio sapere come funziona :P AHAH.

Grazie per questa dritta... :thumbup:
Maurizio A.
www.visionecreativa.com
www.contaotutorial.com
11/08/2011 23:26
Avatar
gianko82
Post: 143
iconvisionecreativa:
non è che avresti da postare qualche riga di codice di esempio da cui partire... ;)


Quello che ha postato Abisem è molto simile al metodo che uso io... soltanto che io i parametri li passo direttamente alla mia funzione javascript.

questo è il codice javascript che includo prima del catalogo lista (da cui devo cancellare gli elementi); alla funzione passo come parametro l'id dell'elemento da cancellare:

iconjavascript:
 
function eliminaelemento(id){
	if (window.confirm("Sei sicuro di cancellare questo elemento?")){
		if (id=="") {
			document.getElementById("confirmdiv").innerHTML="";
			return;
		}
		if (window.XMLHttpRequest) {
			// code for IE7+, Firefox, Chrome, Opera, Safari
			xmlhttp=new XMLHttpRequest();
		}
		else {
			// code for IE6, IE5
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		xmlhttp.onreadystatechange=function(){
			if (xmlhttp.readyState==4 && xmlhttp.status==200){
				document.getElementById("confirmdiv").innerHTML=xmlhttp.responseText;
				setTimeout(function(){window.location.reload(true);}, 1000);
			}
		}
		xmlhttp.open("GET","templates/eliminaelemento.php?id="+id,true);
		xmlhttp.send();
	}
}
 


nel template di lista catalogo invece puoi far stampare su ogni elemento qualcosa del tipo:
iconjavascript:
 
<a href="javascript:void(0);" onclick="eliminaelemento(<?php echo $entry['id']; ?>)">Cancella questo elemento</a>
 


Il lavoro che devi fare a questo punto è soltanto sul file "templates/eliminaelemento.php" che riceve come parametro GET l'id dell'elemento e fa una query al db per l'eliminazione dello stesso ed in base al risultato ottenuto (query eseguita con successo o meno) mi restituisce una echo che verrà visualizzata nel "confirmdiv" della pagina in cui compare la lista.

Io per sicurezza passo altri parametri al file php che esegue l'eliminazione dal db, ma soltanto perchè il "sistema" che ho messo su richiede questi livelli di sicurezza.

Spero ti sia utile il codice che ho messo!
A presto,
saluti,
Giancarlo.
12/08/2011 13:00
Avatar
visionecreativa
Post: 226
Grazie sia a Gianko che Abisem ora che sono di nuovo al lavoro sul progetto vi saprò dire come avrò risolto il problema.
Maurizio A.
www.visionecreativa.com
www.contaotutorial.com
01/09/2011 09:33
icon