Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684

    Assegnare array multidimensionale ad una session

    Vorrei assegnare ad una session un array multidimensionale a tre indici.

    Ecco l'array come è composto:
    DIM carrello(0,2)
    carrello(0,0) = idprodotto
    carrello(0,1) = quantita
    carrello(0,2) = gusto

    E' possibile creare una session mantenendo l'array multidimensionale così composto.

  2. #2
    Certo. Lo salvi così:
    codice:
    session("carrello") = carrello
    e lo rileggi così:
    codice:
    carrello = session("carrello")
    e te lo leggi con un ciclo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    la session è vuota.

    Proseguo in questo modo:
    codice:
    carrello(0,0) = request.form("IDPRODOTTO") & " - 02":carrello(0,1) = request.form("QUANTITA") & " - 02":carrello(0,2) = request.form("GUSTO") & " - 02"
    session("carrello") = carrello
    seconda pagina:
    codice:
    carrello = session("carrello")
    response.write ("PRODOTTO ID: " & carrello(0,0))
    Non mi stampa nulla a video!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Nessuno mi può indicare come memorizzare e/o recuperare, da una variabile session, il contenuto di un array muldimensionale.

  5. #5
    Originariamente inviato da dreaman74
    la session è vuota.

    Proseguo in questo modo:
    codice:
    carrello(0,0) = request.form("IDPRODOTTO") & " - 02":carrello(0,1) = request.form("QUANTITA") & " - 02":carrello(0,2) = request.form("GUSTO") & " - 02"
    session("carrello") = carrello
    seconda pagina:
    codice:
    carrello = session("carrello")
    response.write ("PRODOTTO ID: " & carrello(0,0))
    Non mi stampa nulla a video!
    Prima verifica che qualcosa venga salvato nel carrello.
    codice:
    carrello(0,0) = request.form("IDPRODOTTO") & " - 02":carrello(0,1) = request.form("QUANTITA") & " - 02":carrello(0,2) = request.form("GUSTO") & " - 02"
    response.write carrello(0,0)
    session("carrello") = carrello
    seconda pagina:
    codice:
    carrello = session("carrello")
    response.write ("PRODOTTO ID: " & carrello(0,0))

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Ho effettuato le prove di controllo e giustamente se ridimensioni l'array perdo i dati. Con il preserve ricevo questo errore:
    "Indice non incluso nell'intervallo
    /sito/aggiungi.asp, line 16"

    linea 16: reDim preserve carrello(1,2)
    .

    ecco il codice della pagina:
    codice:
    Dim carrello(0,2)
    response.write ("PRODOTTO ID: " & request.form("IDPRODOTTO") & "
    ")
    response.write ("QUANTITA: " & request.form("QUANTITA") & "
    ")
    response.write ("GUSTO: " & request.form("GUSTO") & "
    
    ")
    
    carrello(0,0) = request.form("IDPRODOTTO"):carrello(0,1) = request.form("QUANTITA"):carrello(0,2) = request.form("GUSTO")
    reDim preserve carrello(1,2)
    carrello(1,0) = request.form("IDPRODOTTO"):carrello(1,1) = request.form("QUANTITA"):carrello(1,2) = request.form("GUSTO")
    response.write ("CARRELLO(0,0): " & carrello(0,0) & "
    
    ")
    response.write ("CARRELLO(1,0): " & carrello(1,0) & "
    
    ")
    session("carrello") = carrello
    
    response.write ("prosegui")

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    l'unico modo è qusto ma devo ogni volta creare un ciclo per reinserire tutti i valori per tutte le dimensioni dell'array una volta ridimensionato, visto che il preserve mi restituisce errore.

    ecco il codice:
    codice:
    ...
    x = 0
    reDim carrello(x,2)
    response.write ("PRODOTTO ID: " & request.form("IDPRODOTTO") & "
    ")
    response.write ("QUANTITA: " & request.form("QUANTITA") & "
    ")
    response.write ("GUSTO: " & request.form("GUSTO") & "
    
    ")
    
    carrello(0,0) = request.form("IDPRODOTTO"):carrello(0,1) = request.form("QUANTITA"):carrello(0,2) = request.form("GUSTO")
    
    x = x + 1
    reDim carrello(x,2)
    carrello(0,0) = request.form("IDPRODOTTO"):carrello(0,1) = request.form("QUANTITA"):carrello(0,2) = request.form("GUSTO")
    carrello(1,0) = request.form("IDPRODOTTO"):carrello(1,1) = request.form("QUANTITA"):carrello(1,2) = request.form("GUSTO")
    response.write ("CARRELLO(0,0): " & carrello(0,0) & "
    
    ")
    response.write ("CARRELLO(1,0): " & carrello(1,0) & "
    
    ")
    session("carrello") = carrello
    ...
    Come vedete, leggevo tempo fa in qualche forum, che il DIM sugli array multidimensionali ha un bug; consigliavano di usare il REDIM anche in fase di dichiarazione dell'array...

    Questa soluzione non mi soddisfa, la reputo un modo per evitare il problema.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    Non capisco perchè, provando con un array monodimensionale, funziona:
    codice:
    <%
    'ARRAY monodimensionale
    DIM carrello()
    
    reDim carrello(0)
    carrello(0) = "Francesco"
    
    i = 10
    
    FOR x = 1 TO (i - 1)
    reDim preserve carrello(x)
    carrello(x) = "Francesco" & x
    NEXT
    %>
    Mentre con la stessa procedura non va:
    codice:
    <%
    'ARRAY MULTIDIMENSIONALE
    DIM carrelloMulti()
    
    reDim carrelloMulti(0,1)
    carrelloMulti(0,0) = "array 0,0"
    carrelloMulti(0,1) = "array 0,1"
    
    a = 10
    FOR y = 1 TO (a - 1)
    reDim preserve carrelloMulti(y,1)
    'reDim preserve carrelloMulti(y,1)
    carrelloMulti(y,0) = "array " & y & ",0"
    carrelloMulti(y,1) = "array " & y & ",1"
    NEXT
    %>
    Mi restituisce l'errore:
    Errore di run-time di Microsoft VBScript (0x800A0009)
    Indice non incluso nell'intervallo
    /sitoLocale/proveScript/provaArray.asp, line 23dove la riga 23:
    codice:
    reDim preserve carrelloMulti(y,1)
    Ovviamente eliminando "preserve" il tutto funziona ma perdo il valore assegnato alla prima dimensione!

    Non riesco a capire dove sbaglio, Grazie per l'aiuto.

  9. #9

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    684
    scusami ma non mi è chiaro questo concetto:

    'nell'esempio seguente viene illustrato come aumentare l'ultima dimensione di una matrice dinamica senza cancellare i dati esistenti.
    ReDim X(10, 10, 10)
    . . .
    ReDim Preserve X(10, 10, 15)


    un array multidimensionale non viene dichiarato in questo modo:
    codice:
    reDim x(2,2)
    il primo valore tra parentesi è la dimensione ed il secondo l'indice?

    grazie per i link che approfondirò..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.