inserimento valori checkbox in db

  • Creatore Discussione Creatore Discussione Sirio
  • Data di inizio Data di inizio

Sirio

Nuovo Utente
17 Nov 2011
28
1
1
Buonasera a tutti,
credo sia un argomento che è già stato trattato molto volte ma cercando sul forum non ho trovato discussioni a riguardo, magari non ho affinato la ricerca, in tal caso mi scuso...

Dunque, il problema è il seguente: io ho un form con diversi campi tra cui un gruppo di checkbox; tutti i dati compilati vengono passati ad una seconda pagina in cui vengono mostrati come riepilogo e successivamente memorizzati in un db.

Questo il codice html delle checkbox:
Codice:
<input type="checkbox" name="settore" id="settore" value="settore1" /> settore1<br />
<input type="checkbox" name="settore" id="settore" value="settore2" /> settore2<br />
<input type="checkbox" name="settore" id="settore" value="settore3" /> settore3<br />
<input type="checkbox" name="settore" id="settore" value="settore4" /> settore4<br />
<input type="checkbox" name="settore" id="settore" value="settore5" /> settore5<br />
Eventualmente i value delle checkbox posso renderli numerici (id record) ed estrapolarli dal db

Questo è il codice di recupero di ciò che è stato checkato:
Codice:
dim settore_arr
settore_arr = split(request.form("settore"),",")

Per mostrare il contenuto dell'array contenente le scelte uso:
Codice:
for i = 0 to ubound(settore_arr)
response.Write("- " & settore_arr(i) & "<br>")

Fin qui tutto bene ... Il problema sorge quando voglio popolare il/i campo/i della tabella corrispondente/i al/ai settori scelti.

Ho provato integrando il codice valorizzando delle varibili per poi passare questo valore al record, 1 checkato, 0 non checkato (valore predefinito impostato anche nel db):
Codice:
for i = 0 to ubound(settore_arr)
response.Write("&nbsp;&nbsp;&nbsp;&nbsp; - " & settore_arr(i) & "<br>")
if settore_arr(i)="settore1" then
settore1 = 1
else
settore1 = 0
end if
....
if settore_arr(i)="settoren" then
settoren = 1
else
settoren = 0
end if
Se il valore dell'array è uguale ai diversi settori, allora la variabile corrispondente al settore è valorizzata a 1, altrimenti a 0.

L'inserimento, poi, lo eseguo in questo modo, ma con esito negativo
Codice:
rs.Open "tabella", cn, 3, 3
rs.AddNew
...
...
rs("settore_settore1") = settore1
rs("settore_settore2") = settore2
rs("settore_settoren") = settoren
...
rs.Update
rs.Close

Ho pensato anche di impostare, nella tabella, un campo unico contenente tutti i valori checkati separati da virgola (settore1,settore4,settoren) ma se poi dovessi filtrare i risultati ed estrapolare solo i record contenenti determinati settori credo che avrei qualche problema, o sbaglio?

Spero di essere riuscito a spiegare la questione
Rimango in attesa di vostre preziose delucidazioni
Grazie
Sirio
 
Aggiornamento: ho risolto in questo modo

Codice:
<input type="checkbox" name="settore1" id="settore1" value="settore1" /> settore1<br />
<input type="checkbox" name="settore2" id="settore2" value="settore2" /> settore1<br />
<input type="checkbox" name="settore3" id="settore3" value="settore3" /> settore1<br />
<input type="checkbox" name="settore4" id="settore4" value="settore4" /> settore1<br />
<input type="checkbox" name="settore5" id="settore5" value="settore5" /> settore1<br />

e recuperando i dati così

Codice:
if request.Form("settore1")="settore1" then
settore1 = 1
else
settore1 = 0
end if
...
if request.Form("settoren")="settoren" then
settoren = 1
else
settoren = 0
end if

per poi memorizzarli nel db così

Codice:
rs("settore_settore1") = settore1

vorrei comunque approfondire se, e nel caso come, è possibile effettuare la stessa operazione attraverso un array nel caso in cui le checkbox avessero il medesimo name come indicato in apertura discussione.

Grazie
Sirio
 
Ciao,
potresti ridurre il codice così facendo:
Codice:
<input type="checkbox" name="settore1" id="settore1" value="1" /> settore1<br />
<input type="checkbox" name="settore2" id="settore2" value="1" /> settore1<br />
<input type="checkbox" name="settore3" id="settore3" value="1" /> settore1<br />
<input type="checkbox" name="settore4" id="settore4" value="1" /> settore1<br />
<input type="checkbox" name="settore5" id="settore5" value="1" /> settore1<br />
<%
	
	Settore1 = request.Form("settore1")
	
%>
Oppure direttamente:
<%

	rs("settore_settore1") = request.Form("settore1")
	
%>
...comunque bravo per esserci riuscito da solo :)
 
Ciao Paolo, ti ringrazio per la risposta, cercherò di ottimizzare il codice come suggerito.
Invece, per quanto riguarda il mio tentativo inziale con gruppo di checkbox con stesso name in questo caso ha poco senso ... mi sa che è meglio utilizzare lo stesso name solo nel caso in cui si utilizzino i radio button ... poi sicuramente c'è il modo anche con le checkbox ma non riesco proprio a capire come rielaborare i dati acquisiti per poi assegnarli al campo corretto della tabella

Grazie ancora
Sirio
 
Ti può interessare questo script?

Codice:
<p>Cosa ti interessa acquistare?</p>
<form method="post" action="script.asp">
<input type="checkbox" name="settore1" value="Maglia" />Maglia
<input type="checkbox" name="settore1" value="Camicia" />Camicia
<input type="checkbox" name="settore1" value="Pantalone" />Pantalone
<input type="checkbox" name="settore1" value="Mutante" />Mutante
<input type="submit" value="Submit">
</form>
<%

Dim mode, mode_a, i
mode = Request("settore1")
If Request("settore1") <> "" Then
	mode_a = split(mode,",")
	
		Response.Write("<p>Acquisto:</p>")
	For i=LBound(mode_a) to UBound(mode_a)
	
' qua inserisco il codice che aggiorna il DB
		Response.Write mode_a(i) + "<br>"
	Next

End If

%>

Paolo
 

Discussioni simili