Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

matheus.goc

Session("carro") = umaArray

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Ola,

 

To com uma duvida aqui.

Tenho uma session que armazena uma Array.

Gostaria de saber como atribuir um novo valor a esse

Array quando ele já está armazenado na session.

Fiz um exemplo:

 

ASP

[*]

 

[*]<%

 

[*]Dim arr, i

 

[*]arr Array(0,1,2,3,4)

 

[*]session("carro"= arr 

 

[*]session("carro")(6) = 5 '<-----O erro ocorre aqui!

 

[*]for i=0 to UBound(session("carro"))

 

[*] response.write(session(i)&"<br />")

 

[*]next

 

[*]session.Abandon()

 

[*]%>

 

[*]

 

O erro que ocorre é esse:

 

Subscript out of range: '[number: 6]'

 

Num sei o que ocorre!

 

Estou tratando a sessão como se ela fosse uma array

e fiz um teste antes sem atribuir um valor a sessão

 

session("carro")(6) = 5

 

e esta funcionou mesmo com o loop "For" tratando a sessão como uma Array.

 

O problema esta mesmo ao ser atribuido uma variavel ao session("carro").

 

Será que o problema é na session ou no próprio Array?

 

Estou achando que o problema é no Array.

Talvez eu tenha que aumentar os indices desse array.

Mais não sei fazer isso!

 

Estou fazendo este teste pois preciso usar uma Array dentro de uma session em

um sistema de e-comerce que armazenará códigos de produtos ao serem

adicionados ao carrinho de compras, ou seja, no momento em que a pessoa está

fazendo a compra mais não concluiu. Se por acaso essa pessoa sair do Browser

ou a sessão fecha inesperadamente será feita uma atualização no banco de dados

pelo método session_OnEnd no Global.asa utilizando esta session.

 

Muito obrigado, qualquer ajuda é bem vinda!

 

Matheus Garcia

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara...

Um Array deve ter uma definição da quantidade de índices antes de você iniciar sua população, portanto, se você tem inicialmente um array com 5 posições (0,1,2,3,4), para incluir a sexta você terá que dar um "Redim" novamente, só que esse comando, apaga os valores das variaveis.

 

Existe um comando que se chama "Preserve", isto indicará ao array que preserve os valores anteriormente informados.

 

Portanto seu exemplo ficaria assim

 

ASP

[*]

 

[*]<%

 

[*]

 

[*]Dim arr, i

 

[*]

 

[*]arr Array(0,1,2,3,4)

 

[*]

 

[*]session("carro"= arr 

 

[*]

 

[*]Redim Preserve Session("carro")(6)

 

[*]

 

[*]Session("carro")(6) "bla"

 

[*]

 

[*]session.Abandon()

 

[*]

 

[*]%>

 

[*]

 

[*]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.