Utilisateur anonyme
-
25 mars 2005 à 12:35
cs_Nurgle
Messages postés1642Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention28 avril 2011
-
5 avril 2005 à 22:12
Comment faire pour tester si un session est créé en sachant que celle-ci si elle est créé contient une class.
Si la session n'est pas créé mon test marche
Session.Contents("MonPanier") = ""
par contre si la session est créé et que je retest ca me met ça comme erreur.
Dans ma session je met ça si elle est pas créé :
Session.Contents("MonPanier") = Panier()
Panier() c'est ma class
Operator is not valid for type 'Panier' and string ""
cs_Nurgle
Messages postés1642Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention28 avril 20114 25 mars 2005 à 18:22
Dans ce cas c'est une méthode, et tu ne peux pas stoquer une méthode dans une variable de Session ! Tu peux y stocker uniquement une variable (comme son nom l'indique...)!
Mais je comprends pas ce que tu fait avec les Sessions : le principe d'une classe étant d'éviter d'avoir des fonctions et des variables de sessions...
Si j'ai bien compris tu veux tester si la classe a été lancée ou si elle ne l'a pas été ?
Nurgle C'est une grande folie que de vouloir être sage tout seul !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Oui c possible mais je ne veut pas instancier ma class à chaque
chargement de la page c pour cette raison que je test si ma session
contien déjà quelque chose.
cs_Nurgle
Messages postés1642Date d'inscriptionsamedi 6 novembre 2004StatutMembreDernière intervention28 avril 20114 26 mars 2005 à 20:09
Tu es obligé de l'instancier à chaque chargement de la page...
Ou tu peux peut être le faire dans le global.asa ?
(ça marche bien pour des objets comme les bases de données, alors pourquoi pas pour une classe dans ce genre là...)
Tu pourrais l'instancier dans le Application_OnStart comme ça ta classe 'Panier' est accessible depuis toutes tes pages (enfin, je crois...).
Nurgle C'est une grande folie que de vouloir être sage tout seul !
cs_Yopyop
Messages postés586Date d'inscriptionlundi 7 janvier 2002StatutMembreDernière intervention10 février 20101 27 mars 2005 à 03:51
Ok,
Au risque de me répéter un peu, en ASP 3.0 tu ne peux pas mettre une classe en session...(en fait dans uncun language que je connaisse)... tu ne peux pas non plus y charge une instance d'une classe...
En effet, les classes que tu crées ASP ne sont pas des "vrais" objets (pas comme une connection ou un recordset, ...)..
Lorsque tu mets ta connection en mémoire, tu ne mets pas un objet vbs (ASP) mais un objet issu d'une dll (Server.CreateObject(".....")).
Ce que tu peux faire, c'est ajouter une méthode à ton objet qui se sauve et se retrouve dans la variable session. Pour cela tu dois transformer toutes tes données en string.
Public Function SaveToSession()
Dim strValues
strValue = Cstr(_IDUser) & "#" & Join(_iArticle,"**") & "#" Join(_iNBArticle,"**") & "#" & CStr(_iPosition)
Session("monPanier") = strValues
End Function
Public Function LoadFromSession()
Dim strValues()
If Trim("" & Session("monPanier"))<>"" Then
strValues = Split(Session("Panier"),"#")
_IDUser = strValues(0)
_iArticles = Split(strValues(1),"**")
_iNBArticle = Split(strValues(2),"**")
_iPosition = strValues(3)
End If
End Fucnction
Ou alors tu crées une dll pour ton objet et là tu pourras le mettre directement dans la variable session (tout comme une connection, un recordset, ...)
PS:
je suis pas sûr à 100% du code mais il devrait fonctionner.
Il fo que je teste si la session est lançé ou pas...
Ragarde le test que g pour le moment
If Session.Contents("MonPanier") = ""
Session.Contents("MonPanier") = New Panier()
End if
En fait il ne fo pas que ma session se lance plusieurs fois qu 'une
fois pour chaque visiteur. Sinon tout les articles kil auras commendé
seront supprimé.