Newsgroup: it.comp.www.php
Titolo: HTTP_POST_VARS - Passaggio variabili da form a script

Saluti a tutti,
premesso che sono un novizio di PHP, vorrei il vostro aiuto per risolvere
qualche problema.
Cerco di spiegare quello che ho fatto e quello che non funziona.
Ho creato un index.html che contiene una sezione <FORM ACTION....
METHOD....> ho usato il METODO POST. Questo punta allo script PHP da me
chiamato calcolo.php.
Ho creato due caselle di testo nelle quali inserirň valori per una semplice
operazione di addizione o sottrazione <INPUT TYPE="text" NAME="val1"> <INPUT
TYPE="text" NAME="val2"> ho inserito due bottoni di opzione con relativo
codice ed un bel tasto <INPUT TYPE="submit" NAME="calc" VALUE="Calcolo">
</FORM>.
Nello scipt calcolo.php ho semplicemente inserito codice che somma o fa la
differenza tra
i valori contenuti in $val1 e $val2 (ovviamente ho usato un ciclo IF, ELSE
IF).
Ho anche inserito il comando header per far ricaricare la pagina index.html
qualora
uno dei campi non sia riempito con un numero o nessun pulsante di opzione
non sia selezionato.
1° problema---
Avviando index.html e cliccando sul tasto (dopo aver inserito i valori nelle
relative
caselle ed aver cliccato su uno dei bottoni di opzione x sommare o
sottrarre) mi ricarica
la pagina. Perchč?
2°problema---
Ho tolto il comando header per vedere il risultato. Quando clicco sul
pulsante Calcolo
mi apre la pagina calcolo.php ma non visualizza il risultato.
Sembra che non passi il valore delle variabili. Perchč? come posso
risolvere?
Ho letto su una guida che i valori vengono passati allo script tramite
l'array
associativo HTTP_POST_VARS (nel mio caso) e che questo č disponibile solo se
č
presente l'opzione di configurazione track_vars.
Che vuol dire? Cosa devo fare? Sapete aiutarmi passo per passo? SO WIN98;
APACHE 1.3.2; PHP 4.
Grazie a tutti quelli che risponderanno.
Michele
Reply to 
vas...@libero.it
--------------------------------
Inviato via 
http://usenet.libero.it

 presente l'opzione di configurazione track_vars.
non è che hai un manuale vecchio?
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.netmeister.org/news/learn2quote.html


ciao


 $HTTP_POST_VARS[xxxx]. E se non dovesse funzionare?
si. occhio che gli indici degli array vanno messi tra 'apicini'.
se non dovesse funzionare, posti il codice al completo (possibilmente prima 
provalo con error_reporting(E_ALL) in testa) e poi qualcuno (me compreso) 
può vedere se c'è qualche errore...
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/gnu/manifesto.it.html

Prima di tutto grazie, sei veramente veloce nelle risposte.
Scusa se non sono preciso ma non avendo esperienza ho qualche difficoltà
nello spiegarmi.
Ci riprovo.
Riguardo al passaggio delle variabili penso di aver capito, ma devo ancora
provare, ti farò sapere.
Come già detto nel mio primo messaggio con l'header ricaricavo la pagina
index.html qualora uno dei textbox o entrambi fossero vuoti o se non era
stata scelta l'operazione da fare (scegliendo un optionbutton). Altrimenti
carico (o meglio dovrei caricare) calcolo.php nella quale dovrei
visualizzare il risultato. invece lasciando nel codice header(....) non
riesco mai a caricare calcolo.php ma ricarico sempre e soltanto index.html e
ovviamente le textboxes si azzerano. Non dovrebbe funzionare così!!! Non so
proprio come fare.
Spero di essermi spiegato bene. Comunque grazie. Domani posterò il codice.
Ciao Michel


 so proprio come fare.
non hai nessun if che eventualmente ti skippa l'header()?
posta un po' di codice così ci arrivo...
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/philosophy/free-sw.it.html

Ho applicato i tuoi consigli e adesso funziona tutto.
Adesso vorrei far apparire i valori delle variabili nallo scripr php; io ho
scritto:
echo "<p>Valore 1: $HTTP_POST_VARS['var1']</p>" ma a video non vedo nessun
valore. Ho sbagliato qualcosa?
Ultima domanda: che differenza c'è tra il metodo POST ed il GET?
Grazie Michele


 valore. Ho sbagliato qualcosa?
se non posti il form e un po' di codice non posso saperlo!
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/philosophy/motivation.it.html

 valore. Ho sbagliato qualcosa?
Soluzione: 
echo "<p>Valore 1: {$HTTP_POST_VARS['var1']}</p>"
Spiegazione:
Le parentesi graffe forzano il PHP a trattare il testo racchiuso come 
fosse una variabile.
Ipotesi di causa:
Probabilmente le parentesi quadre, per accedere all'elemento dell'array, 
vengono interpretate come testo normale, quindi il PHP cerca di inserire 
nella stringa il valore della variabile $HTTP_POST_VARS che non essendo 
ovviamente compatibile con la stringa... non inserisce nulla 
(comportamento di default del PHP in casi ambigui/errati).
Enjoy, ;)
Luke650.

Il codice non sarà precisissimo, ho cercato di ricordare!
codice nel mio index.html: FUNZIONA!!!!!
<html>
<body>
<FORM ACTION="calcola.php" METHOD="POST">
<INPUT TYPE="text" NAME="val1">
<INPUT TYPE="text" NAME="val2">
<INPUT TYPE="radio" NAME="calc" VALUE="addizione">
<INPUT TYPE="radio" NAME="calc" VALUE="sottrazione">
ecc. per moltiplicazione e divisione
<INPUT TYPE="submit" NAME="submit" VALUE="calcola">
</FORM>
</BODY>
</HTML>
Questo codice funziona perfettamente
codice nel mio calcolo.php: FUNZIONA!!!!!
<?
if(($HTTP_POST_VARS['val1']=="") || ($HTTP_POST_VARS['val2']=="") ||
($HTTP_POST_VARS['calc']=="")) {
	header.........;fa ricaricare la pagina index.html qualora uno dei campi
testo o
			optionbutton sia vuoto.
	exit;
}
//Vorrei mostrare i valori di val1 e val2 che sono i dati inseriti nelle
text in index.html
echo "$HTTP_POST_VARS['val1']"; Questa linea non visualiza niente a video
echo "$HTTP_POST_VARS['val2']"; Questa linea non visualiza niente a video
if ($HTTP_POST_VARS['calc']=="addizione") {
	$risultato=$HTTP_POST_VARS['val1']+$HTTP_POST_VARS['val2'];
else if ecc. per sottrazione, moltiplicazione e divisione......
}
echo "$risultato";non ricordo bene la sintassi ma comunque funziona!!!!
?>
Grazie mille


 Luke650.
Applicherņ i tuoi consigli e ti farņ sapere il risultato.
Intanto ti ringrazio,


 echo "$HTTP_POST_VARS['val2']"; Questa linea non visualiza niente a video
gli apici doppi non servono se non stampi altro.
puoi usare:
echo $HTTP_POST_VARS['valx'];
inoltre questo tipo di variabile andrebbe messo fuori dagli apici per via 
delle parentesi quadre, usando il '.' di concatenazione oppure come ha 
suggerito LUKE650 (sintassi che peraltro ignoravo, non si finisce mai di 
scoprire cose nuove).
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.gnu.org/gnu/manifesto.it.html

 scoprire cose nuove).
Proverò e ti farò sapere.
Per quanto riguarda la differenza tra METHOD="POST" e METHOD="GET" che avevo
postato qualche messaggio fa, che cosa mi sai dire?
Grazie,


 Michele
quando effettui telnet sulla porta http di un webserver,
puoi richiedere una pagina con
GET /pagina.html?variabili
e il server prende le variabili dall'url, ma è "come se non gliele passasti 
veramente"
nel metodo POST, invece gliele spedisci propriamente e non vengono 
visualizzate nell'url.
(non saprei adesso la sintassi http)
in questo modo puoi anche spedire oggetti più lunghi che ti darebbero 
problemi con la lunghezza dell'url.
ciao
-- 
Punkarruso
mail:punkarruso chiocchiolona despammed punto com
pubblicità progresso:
http://www.efluxa.it/netiquette/dis.html

 > Proverò e ti farò sapere.
Grazie per la soluzione, è tutto O.K.
Grazie veramente.


 fosse una variabile.
Grazie per la soluzione, tutto O.K.
Grazie ancora,
