cs_Benz
Messages postés196Date d'inscriptionjeudi 3 janvier 2002StatutMembreDernière intervention 7 juin 2007
-
30 août 2002 à 09:48
cs_Benz
Messages postés196Date d'inscriptionjeudi 3 janvier 2002StatutMembreDernière intervention 7 juin 2007
-
3 sept. 2002 à 08:36
Salut,
J'ai un problème de compréhension des tableaux (Array).
J'ai besoin de les utiliser dans le cadre du développement de gestion d'un petit panier virtuel.
Dans un premier temps, je serais heureux que quelqu'un puisse m'expliquer un peu les dimensions. Je peux concevoir qu'on déclare un tableau à deux ou trois dimensions, mais au delà, je n'y arrive pas.
J'ai lu plein de trucs sur les tableaux, mais rien de très explicite.
Si quelqu'un à un exemple clair d'utilisation, je suis preneur.
Voici ce que je suis capable de faire :
Dans un premier fichier :
Dim Tab()
'Là, je dimensionne un tableau à 1 colonne mais 2 lignes ???
Redim Tab(1)
'J'affecte des valeurs arbitrairement sinon j'ai une erreur
Tab(0)=10
Tab(1)=20
Session("MonTab")=Tab
Quand je clique sur un produit, je passe l'ID du produit au fichier ajouter_panier.asp. Dans ce fichier le récupère l'ID du produit et je fais :
Tablo=Session("MonTab")
Tablo(0)=ID
Tablo(1)=1
'1, c'est le nombre d'exemplaire de produit commandé.
'Et là, j'affiche les valeurs
Response.Write(Tablo(0))
Response.Write(Tablo(1))
Mais si vous avez bien suivi, vous vous êtres rendu compte que j'ai fait n'importe quoi. Je ne pourrais pas aller bien loin avec mon panier virtuel de cette manière. Et c'est là que vous intervenez.
Paxcal
Messages postés42Date d'inscriptionsamedi 24 août 2002StatutMembreDernière intervention 3 octobre 2005 2 sept. 2002 à 21:17
Le plus simple pour gérer cette fonctionnalité est de tavailler avec un tableau à une dimension que nous appelerons panier (original !). Ce tableau stockera des tableaux à une dimension que nous appellerons article
sub ajoutPanier( id , qte )
dim arPanier
arPanier = Session("panier")
if ( vartype( arPanier ) = 8204 ) then ' vrai si arPanier est un tableau de variant
arPanier = array( array( cstr(id) , cstr(qte) )) ' on 'initialise avec un nouveau tableau aui contient le tableau des valeur
'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( id )
dim arPanier
dim lastIndex
dim i
arPanier = Session("panier")
if ( vartype( arPanier ) = 8204 ) then
lastIndex = ubound( arPanier )
for i = 0 to lastIndex
article = arPanier( i )
if vartype( article ) = 8204 then ' vrai si article est un tableau de variant
if article(0) = 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
end sub
sub printPanier()
dim arPanier
dim article
arPanier = Session("panier")
if ( vartype( arPanier ) <> 0 ) then
for each article in arPanier
if vartype( article ) = 8204 then ' vrai si article est un tableau de variant
Response.Write "id : " & article(0) & " - qte : " & article(1) & "
"
end if
next
end if
end sub