Script asp: Prelevare campi di un form senza conoscerne il nome
difficoltà:

Download
Script simili
28/5/2007
Questo scipt può risultare utile se dobbiamo prelevare una certa quantità di valori da un form, magari senza conoscere con precisione il nome dei campi. Creeremo quindi in automatico una serie di variabili con lo stesso nome dei campi del form prelevandone il valore dai campi stessi.
Vediamo un esempio base di form di invio dati
<form action="ricevi.asp" method="POST">Se nella pagina ricevi.asp avessimo:
<input type="text" name="nome" value="Fabio">
<input type="text" name="cognome" value="Xxxxx">
<input type="text" name="telefono" value="012345678">
<input type="Submit" value="Invia">
</form>
<%La variabile ElencoPost risulterebbe una stringa con tutti i dati inviati dal form in stile querystring:
ElencoPost = Request.Form
%>
nome=Fabio&cognome=Xxxxx&telefono=012345678avremo quindi l'elenco di tutte le variabili e dei rispettivi valori.
Con la funzione split potremo dividere la stringa usando come separatore & creando un array ArrayDati contenete i valori:
ArrayDati = Split(Request.Form, "&")che restituirà:
ArrayDati(0) = "nome=Fabio"Ottenuto questo array potremmo suddividere ancora ciascun array con la funzione split usando come separatore =. Avremo quindi per ogni voce:
ArrayDati(1) = "cognome=Xxxxx"
ArrayDati(2) = "telefono=012345678"
ArrayValori = Split(ArrayDati(0), "=")che in questo caso restituirà un array:
ArrayValori(0)= "nome"Il primo valore conterrà la chiave, il secondo il valore relativo.
ArrayValori(1)= "Fabio"
Come usare questi dati?
La funzione Execute ci da la possibilità di trasformare una stringa in un operazione, per cui scrivere:
Execute("nome = ""Fabio""")
valuta l'espressione nome = "Fabio" e assegna alla variabile nome il valore Fabio, per cui facendo lo stesso per ogni valore dell'array otterremo Execute(ArrayValori(0) & "=""" & ArrayValori(1) & """")Così per tutti i valori associando al nome variabile il rispettivo valore, con l'accortezza di trasformare i caratteri di tipo url in caratteri standard con la funzione URLDecode
Vediamo lo script completo:
<%Avremo creato quindi una serie di assegnazioni valutate dalla funzione Execute del tipo:
function URLDecode(stringa)
for ch = 1 to 255
stringa = Replace(stringa, Server.URLEncode(chr(ch)),chr(ch))
next
URLDecode = stringa
end function
Dim FormVoice
Set FormVoice = CreateObject("Scripting.Dictionary")
ArrayDati = Split(Request.Form, "&")
for a=0 to ubound(ArrayDati)
ArrayValori = Split(ArrayDati(a), "=")
Execute(URLDecode(ArrayValori(0)) & " = """ & URLDecode(ArrayValori(1)) & """")
next
%>
nome = "Fabio"Questo script può risultare particolarmente utile nel caso non conoscessimo con esattezza il numero dei campi del form e il loro nome
cognome = "Xxxxx"
telefono = "012345678"
Se dovessimo inserire i dati in un database bisognerà anche stare attenti a possibili SQL injection per cui potremmo avere:
Execute(URLDecode(ArrayValori(0)) & " = """ & replace(URLDecode(ArrayValori(1)),"'","''") & """")
Social:
Donazione:
Se questo script ti grave; stato utile e ti ho fatto risparmiare tempo e denaro fai una
qualsiasi cifra è ben accetta! 1€, 3€, 5€ ,10€, 50€ ;-) fai te!
Permalink:
Tag:
Script Simili:
Script javascript: Form di invio mail lato client
Script ajax: Form method post e chiamata asincrona con ahah
Script ajax: Edit in place e modifica dati in loco
Script javascript: Inviare i dati di un form a una popup
Script ajax: Calcolare il percorso con google maps sul sito
Script ajax: Form method post e chiamata asincrona con ahah
Script ajax: Edit in place e modifica dati in loco
Script javascript: Inviare i dati di un form a una popup
Script ajax: Calcolare il percorso con google maps sul sito
Permalink:
Link utili:
Vota:

Feed Rss
13/11/2008 9:45:33
ciao,
ho verificato che questo script non funziona con i checkbox nel caso quest'ultimo non viene selezionato. Puoi aiutarmi?