Newsgroup: it.comp.www.php
Titolo: Chiamare una funzione PHP premendo un bottone in una form

ciao a tutti,
piccolo problema, che pero' non riesco a risolvere.
Ho l'esigenza di scrivere un file quando l'utente preme il bottone
"Conferma" di una form. Per fare questo però non posso utilizzare
Javascript (per scrivere, eventualmente per chiamare una funzione) ma
PHP.
Qualcuno sa se si può richiamare una funzione PHP direttamente ,
oppure alle brutte una funzione PHP dentro una funzione JS? (a quel
punto però dovrei farla eseguire solo quando viene chiamata la
funzione JS che la contiene):
es.
<script>
function A() {
   <?php
    function A_vera() {
        // scrive file
    }
    ?>
}
</script>
grazie mille!
Luk

 scrivere, eventualmente per chiamare una funzione) ma PHP.
Non puoi.
Lato client puoi richiamare solo javascript.
Se poi con questo richiami in qualche modo (ajax, popup, iframe nascosto, 
ecc.) una pagina (non una funzione, proprio uno script intero) PHP, puoi 
ottenere quello che vuoi.
Bye.

 </script>
no, non  puoi.


E' vero hai ragione. Ho fatto confusione logica, uno è server-side uno
è client-side.
Ok, scegliamo Ajax allora.
Il problema che mi viene in mente è che devo passare al file PHP che
esegue la scrittura tutti i dati da scrivere in quel file.
Ma questi dati però possono essere anche molto corposi. Dal poco Ajax
che so, è solo dai campi della form che ho i dati.
Invece io i dati da scrivere sul file li ho in una variabile $var da
PHP.
es.
    <input type="text" id="txtFile">
    <input type="button" value="Conferma" onClick="scriviFile()">
<script>
    function scriviFile() {
    var datiFile = document.getElementById('txtFile').value;
    // etc.
    }
</script>
Però così dovrei porre tutto il file da scrivere nel campo testo
"txtFile" e non mi sembra "buono".
grazie

Luk ha scritto:

Le librerie javascript come ad esempio jquery (che è quella che conosco 
meglio) permettono di fare un post del tutto autonomo e di gestirne 
l'eventuale risultato (che altro non è che l'output della pagina che 
riceve il post)
Non è nemmeno necessario il form.
Pessima cosa per l'accessibilità, ma comodo e molto web 2.0

 PHP.
Usa una libreria AJAX gia' fatta, tipo xajax e lascia che certi problemi se li
smazzi il software :)
In ogni caso, corposi o non corposi in un modo o nell'altro i dati devono stare
prima della data area del browser e poi devono essere spediti via HTTP al server.
Ciao,
luigi
-- 
/
+--[Luigi Rosa]--
\
Biology is the only science in which multiplication means
the same thing as division.

 sul file li ho in una variabile $var da PHP.
Ma se li hai tutti in una variabile $var, e` inutile che te li porti 
avanti e indietro.
Salvali in sessione, e al comando dell'utente prendili dalla sessione e 
salvali su file. Poi magari toglili dalla sessione, cosi` intasi meno il 
server, nel caso siano corposi.
Se sono tanti, mettili in un file temporaneo, magari con un nome basato 
sul sessionid, che e` gia` abbastanza univoco, e poi rinomina 
semplicemente il file. Questo ti consente di non doverli ricaricare dalla 
sessione ad ogni pagina che carichi.
ye.

 ye.
Mi sa che la tua soluzione è la più semplice. Ma se hai pazienza
dovresti indicarmi come salvare correttamente (trattati) questi dati
in una variabile di sessione.
Perché il problema con cui sto combattendo ora è sugli "accapi".
Sto provando con Ajax, ma non riesco a passare correttamente questa
stringa.
Con un esempio concreto, la form visualizzata a video contiene alla
fine tra gli altri, un campo così:
    <input type="hidden" name="txtFile" value="3336989625;100
\n3336989624;200
\n3336989623;300
\n" id="fileContent">
Quando io premo il bottone, non succede nulla...
Il codice Ajax che ho scritto, sarebbe questo:
	function scriviFile() {
		var txtData = document.getElementById('txtFile').value;
		var xmlHttp = new XMLHttpRequest();
		xmlHttp.open('GET','file_write.php?fileContent='+txtData ,true);
		if (xmlHttp.readyState == 4) {
			if (xmlHttp.status = 200) {
				displayConfirm();
			} else {
				alert('Si &egrave; verificato un problema nella scrittura del
file.');
			}
		}
		xmlHttp.send(null);
	}
	function displayConfirm() {
		var txtInfo = document.getElementbyId('txtInfo');
		txtInfo.innerHTML = 'File scritto correttamente';
		document.location.href("file_db_gest.php");
	}

 Perché il problema con cui sto combattendo ora è sugli "accapi".
Tema dell'altro thread. Ce l'hai perche` li passi avanti e indietro tra 
PHP e JS, e hanno codifiche diverse, che oltretutto vengono "imbrattate" 
dall'html e dai vari encoding che devi usare.
Anche per questo ti consigliavo di tenerle sul server.
Bye.