3 messaggi dal 31 gennaio 2006
Ciao, dovrei memorizzare in un campo (testo) il risultato di una select multipla, esce fuori una cosa del tipo (26, 35, 95, 46, 39), ora questi valori come posso utilizzarli per fare vedere come SELECTED una volta che devo modificare nuovamente i record? ho cercato di convertirli da stringa a char, a int, ecc.. ma non riesco proprio. Qualche idea per la gestione di queste select multiple?
11.886 messaggi dal 09 febbraio 2002
Contributi
Quando recuperi dal post i valori della select multipla fai così:

Dim valori
valori = Replace(Request.Form("selectmultipla"), " ", "")

così con il replace ti sbarazzi degli spazi che ci sono in mezzo. In questo modo non solo riduci di qualche byte la lunghezza della stringa ma ti faciliti le cose per quando poi dovrai andare a reimpostare gli elementi selezionati nella select multipla.

Ecco come:

'recuperi la stringa valori dal database
valori = rs("valoreElementiSelezionati")

'e usi la funzione Instr per capire se un certo id è contenuto nella stringa valori.

if Instr("," & valore & ",", ",5,") > 0 then
'bene, l'id 5 è stato trovato nella stringa valori
'genera il codice html che serve a selezionare l'elemento della select multipla
else
'l'id 5 non è stato trovato, scrivi l'elemento senza selezionarlo
end if

esempio pratico con i giorni del mese. L'utente deve selezionare i giorni in cui vuole richiedere le ferie.
Dim valori
Dim outputSelectMultipla
rs.Open "SELECT * FROM Impiegati WHERE id=2", cn, 0, 1
valori = rs("ferie")

outputSelectMultipla = "<select id=""ferie"" name=""ferie"" multiple=""multiple"" size=""6"">" & vbCrLf
for i = 1 to 31
selezionato = ""

if Instr("," & valori & ",", "," & i & ",") then
selezionato = " selected=""selected"""
end if

outputSelectMultipla = outputSelectMultipla & "<option" & selezionato & " value=""" & i & """>" & i & "</option>" & vbCrLf
next
outputSelectMultipla = outputSelectMultipla & "</select>"

Response.Write(outputSelectMultipla)


ok?
Modificato da BrightSoul il 01 febbraio 2006 14.59 -

Enjoy learning and just keep making
3 messaggi dal 31 gennaio 2006
Mi era sfuggita quella funzione, gira benissimo grazie
2 messaggi dal 25 marzo 2004
"...ora questi valori come posso utilizzarli per fare vedere come SELECTED una volta che devo modificare nuovamente i record..."

Non è molto chiaro quello che vuoi fare, cmq visto il titolo del post se hai bisogno di ricavare un Array da quella stringa usa Split() in questo modo:
arrValori = Split(miaStringa,", ")

Anche se miaStringa fosse completametne vuota arrValori, come tipo di dato, sarebbe un Array a tutti gli effetti.
Mia stringa ovviamente può provenire da qualsiasi fonte secondo necessità: Request.Form("mio Campo"), database etc.

.: Un suggerimento :.
Il separatore ", " (virgola+spazio) viene usato normalmente da VBScript nella restituzione di campi form multipli ma conincide anche con una regola fondamentale della lingua italiana (in quello che ho scritto si ripete parecchie volte  ).
Capita infatti a volte in siti multilingua di dover raccogliere valori da campi multipli che contengono non solo ID, numeri o parole singole ma frasi e testi un po' più articolati dove potrebbe già essere presente la combinazione vista sopra.
In questi casi conviene elaborare i dati prima di inviarli tramite form alla pagina di processo, raccogliendo in un unico campo nascosto...
<input type="hidden" name="nomeCampo" value="valoreCampo">

... con un javascript tutti i valori concatenandoli in un'unica stringa e separandoli con qualcosa di "più sucuro", ad esempio <brk> o <$brk$>, una specie di metatag. Quindi utilizzando ancora Split() avrai:
arrValori = Split(miaStringa,"<$brk$>")

Un salutone a tutti

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.