Newsgroup: it.comp.www.php
Titolo: [<form>] Inviare una form a se stesso

Forse la domanda č banale, ma dopo aver cercato
sia sul newsgroup che sulla guida PHP non ho ancora trovato
risposta.
Io devo passare le variabili di una form ad un programma PHP.
Per il momento sono riuscito ad ottenere un risultato positivo
utilizzando la seguente istruzione <form>.
<form action="NOME_PROGRAMMA_PHP " method="post">
Il mio problema č che in questo modo devo avere un programma
per ogni action (ho diverse form nella mia pagina).
E' possibile fare in modo che la action si riferisca ad una funzione
PHP presente nello stesso file di partenza, oppure ad una funzione PHP
di un altro file (in questo modo potrei crearmi una libreria di funzioni)??
Thanks
LuKe

 ha scritto nel messaggio
news:NZRG7.51195$sq5.2...@news.infostrada.it...

facendo il submit di uno dei form non puoi richiamare direttamente la
funzione, pero' puoi fare in modo che, a seconda di una variabile $funzione
lo script eregua una determinata funzione o meno (dopo il submit) in questo
modo puoi tenere tutte le funzioni in uno stesso file, anche nella stessa
pagina dei forms se vuoi.
Esempio:
<form action="thispage.php?funzione=tizio" method="post">
<form action="thispage.php?funzione=caio" method="post">
<form action="thispage.php?funzione=sempronio" method="post">
<?
if (isset($funzione)) {
    $funzione();
}
function tizio() {
// codice funzione
}
function caio() {
// codice funzione
}
function sempronio() {
// codice funzione
}
?>
Questo modo pero' va bene se non passi argomenti alle funzioni... (puoi
gobalizzare le funzioni che ti serovno per usarle dentro le function)
Altrimenti, non ti resta che andare a if..else...
Esempio:
<?
if ($funzione=="tizio") {
    tizio(argomento1,argo2,argo3,);
}elseif ($funzione=="caio") {
    caio(argo1);
} elseif ($funzione=="sempronio") {
    sempronio();
}
?>
in questo modo richiami le funzioni (e passi argomenti) come ti pare e
piace, il metodo precedente invece č piů generalizzato per fare infretta (=
scrivere meno codice :-)
Ciao
Alex

 di un altro file (in questo modo potrei crearmi una libreria di
funzioni)??
Potresti fare cosě, nella action ci metti il nome del file php che stai
editando (quindi invia il form a se stesso) e poi all'inizio della funzione
alla quale devi passare le variabili ci metti:
<?
if ($variabile)
   {
     funzione ($variabile)
   }
?>
in questo modo questa porzione di codice viene eseguita solo ed
esclusivamente quando viene fatta la submit del form.
Ciao
Andrea

[cut]
Forse non ho capito bene la tua richiesta.. ma daiun occhiata se ti va bene
una cosa del genere
ciao
********************
<html>
<head>
 <title>Untitled</title>
</head>
<body>
 <form action=<?php echo $PHP_SELF?> method="post">
 Inserisci il tuo nome:<br>
 <input type="text" name="nome"><br><br>
 <input type="hidden" name="inviato" value="ok">
 <input type="submit">
 </form>
 <hr>
 <form action=<?php echo $PHP_SELF?> method="post">
 Inserisci il tuo cognome:<br>
 <input type="text" name="cognome"><br><br>
 <input type="hidden" name="inviato2" value="ok">
 <input type="submit">
 </form>
</body>
</html>
<?php
if ($inviato=="ok") {
 echo "Ciao $nome";
 }
if ($inviato2=="ok") {
 echo "Ciao $cognome";
 }
?>

Il mio problema è che in questo modo devo avere un programma


per ogni action (ho diverse form nella mia pagina).
Il modo piu' semplice e' questo:
1. Nel tuo file PHP, aggiungi all'inizio inizio:
<?
	$COMMAND = "";
	if (isset($HTTP_POST_VARS["COMMAND"]))
	{
		$COMMAND = $HTTP_POST_VARS["COMMAND"];
		unset($HTTP_POST_VARS["COMMAND"]);
	}
	switch($COMMAND)
	{
		case "":
			// Qui le cose da fare se non e' stato dato
			// alcun comando
			break;
		case "SEARCH1":
			...
			exit();
			break;
		case "SEARCH2":
			include "search2.php";
			exit();
			break;
		...
	}
e poi:
	<FORM NAME="FORM1" METHOD="POST" ACTION="$PHP_SELF">
	<INPUT TYPE="HIDDEN" NAME="COMMAND" VALUE="SEARCH1">
	...
	</FORM>
In questo modo hai UN UNICO FILE, che viene richiamato con un parametro in
piu' ($COMMAND). Il parametro e' invisibile al codice sottostante, e cosi'
puoi riciclare tutto il codice eventualmente gia' scritto (non si sputtana
un costrutto tipo while(list($key,$val)=each($HTTP_POST_VARS)){ ... } ).
Inoltre, alcune funzioni (vedi "search2.php") sono incluse pari pari, e tu
puoi richiamarle anche direttamente:
	FORM METHOD="POST" ACTION="search2.php"
e magari, solo in un secondo tempo, inserirle nel file principale.
Leonardo
-- 
Nior thainig ar major i dtus an lae chugainn,
is ni rabhamar fein ann i gcoir na gceart
ach mar sheolfai aoireacht bo gan aoire,
ar thaobh na greine de Sliabh na mBan.