en premier lieu vartype permet de déterminer le type de la variable, s'il retourne 8204 (variant array). Je ne connais pas le reste du code et cela aiderai grandement, car comment que la variable session sesssion("panier") est elle remplis. Je t'ai fais qqchose qui fonctionne et une sub qui test le contenu de ta array selon la sub appeler, a toi maintenant a integrer le tout !
<%
sub ajoutPanier(arPanier,id,qte)
'dim arPanier(10)
'arPanier = Session("panier")
if ( vartype( arPanier ) = 8204 ) then ' vrai si arPanier est un tableau de variant
arPanier = Array(id, qte) ' on 'initialise avec un nouveau tableau aui contient le tableau des valeur
dim txt
txt = " sub ajoutPanier"
AfficherArray txt, arPanier
'j'utilise la fonction cstr pour forcer le type de la valeur en String.
'Le tableau est de type variant. Un variant est un type spécial qui peut stocker tous les types ( string, date , time , int, etc ).
'Il peut y avoir un pb lors de comparaison entre deux variable variant de sous type différents ( voir retirePannier) .
'En forcant le variant en str, on évite ce pb.
else ' arPanier contient déjà des infos
dim nextIndex
nextIndex = UBound( arPanier )+1 'on determine le prochain index
redim preserve arPanier( nextIndex ) ' on redimensionne la tableau
arPanier( nextIndex ) = array(id,qte) ' on affecte les valeurs
end if
Session("panier") = arPanier ' on stock le tableau
end sub
sub retirePannier(arPanier,id)
dim lastIndex
dim i
if ( vartype( arPanier ) = 8204 ) then
lastIndex = UBound( arPanier )
for i = 0 to lastIndex
session("article") = arPanier( i )
if vartype( arPanier ) = 8204 then ' vrai si article est un tableau de variant
if session("article")= id then
arPanier( i ) = 0 'on remplace le tableau article par 0
' le test vartype( article ) = 8204 ne sera plus vrai pour cette ligne
exit for
end if
end if
next
end if
Session("panier") = arPanier ' on stock le tableau
dim txt
txt = " sub retirePannier"
AfficherArray txt, arPanier
end sub
sub printPanier(arPanier)
dim article
if ( vartype( arPanier ) <> 0 ) then
article = session("article")
Response.Write "<br><br><b>Pour la sub printPanier :</b><br>"
for i = 0 to article
if vartype( arPanier ) = 8204 then ' vrai si article est un tableau de variant
Response.Write "id : " & i
Response.Write " - qte : " & arPanier(i) & "<br>"
end if
next
end if
end sub
Sub AfficherArray(txt, ArrayToShow)
Dim I
Dim iArraySize
iArraySize = (UBound(ArrayToShow) - LBound(ArrayToShow)) + 1
Response.Write "<p><b>Il y a " & iArraySize _
& " pour :" & txt &"</b></p>" & vbCrLf
Response.Write "<table border=""1"">" & vbCrLf
Response.Write "<thead>" & vbCrLf
Response.Write "<tr>" & vbCrLf
Response.Write "<th>Index</th>" & vbCrLf
Response.Write "<th>Value</th>" & vbCrLf
Response.Write "</tr>" & vbCrLf
Response.Write "</thead>" & vbCrLf
Response.Write "<tbody>" & vbCrLf
For I = LBound(ArrayToShow) To UBound(ArrayToShow)
Response.Write "<tr>" & vbCrLf
Response.Write "<td>" & I & "</td>" & vbCrLf
Response.Write "<td>" & ArrayToShow(I) & "</td>" & vbCrLf
Response.Write "</tr>" & vbCrLf
Next 'I
Response.Write "</tbody>" & vbCrLf
Response.Write "</table>" & vbCrLf
End Sub
r_id = cstr(Request.Form("id"))
r_qte = cstr(Request.Form("qte"))
dim arPanier(10)
arPanier(0) = "1"
arPanier(1) = "2"
arPanier(2) = "3"
arPanier(3) = "4"
Session("panier") = arPanier
'panier total ajouter au debut
dim txt
txt = " Array du debut"
AfficherArray txt, Session("panier")
'ajouter les element du form
ajoutPanier Session("panier"), r_id, r_qte
'retirer les element du tableau deja entrer
retirePannier Session("panier"), r_id
'afficher resultat
printPanier(Session("panier"))
response.Write ("<br>Nombre d'element dans le panier: " & session("article"))
%>