Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/06/2006, 12h47   #1
Nouveau Membre du Club
 
Inscription : juillet 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 97
Points : 32
Points : 32
Par défaut Tri d'un tableau ASP (2 colonnes)

Bonjour,

J'ai un bête tableau ASP à deux colonnes. J'aimerais tout simplement trier la première colonne et que la deuxième suive le mouvement (si vous voyez ce que je veux dire

J'ai trouvé un sujet similaire sur le forum, mais ça me paraissait bien compliqué. Y'a-t-il un moyen simple ?
yoyot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 13h06   #2
Membre chevronné
 
Avatar de ryan
 
Inscription : juin 2003
Messages : 766
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 766
Points : 760
Points : 760
Yop!

Un petit bubble sort?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
numrows = Ubound(myarray)
for i = 0 to numrows
  for j = i + 1 to numrows
    if myarray(0,i) <= myarray(0,j) then
      col0 = myarray(0,j)
      col1 = myarray(1,j)
      myarray(0,j) = myarray(0,i)
      myarray(1,j) = myarray(1,i)
      myarray(0,i) = col0 
      myarray(1,i) = col1 
    end if
  next
next
Pour changer l'order du tri, il suffit de changer le sens de l'inégalité dans le If

Ryan
Bib bubbles, no troubles
ryan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 14h21   #3
Nouveau Membre du Club
 
Inscription : juillet 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 97
Points : 32
Points : 32
Salut, déjà merci pour le code. J'ai essayé de le faire fonctionner, mais je ne suis pas sûr que c'est ce dont j'ai besoin.

Je m'explique un peu mieux :
J'ai un tableau comme tel avec deux colonnes :
ARTICLE,QUANTITÉ
54,1
90,2
9,1
14,5

J'aimerais qu'il trie la colonne article et donc que les quantités restent avec les bons articles.
Le code que tu m'as donné fonctionne pour ce genre de tri ?
yoyot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 14h31   #4
Membre chevronné
 
Avatar de ryan
 
Inscription : juin 2003
Messages : 766
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 766
Points : 760
Points : 760
Voui!

Ryan
Laconique..
ryan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 15h14   #5
Nouveau Membre du Club
 
Inscription : juillet 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 97
Points : 32
Points : 32
J'ai réutilisé ton code pour le mettre ici :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
'Créer un tableau pour le trier par la suite
tab_products=Split(v_products,",")
tab_qty=Split(v_qty,",")
Dim myarray()
Redim myarray(ubound(tab_products),ubound(tab_products))
FOR i=0 TO ubound(tab_products)
 myarray(0,i)=Cint(tab_products(i))
 myarray(1,i)=Cint(tab_qty(i))
NEXT
 
'Tourner dans les articles pour les trier par ordre croissant de la clé primaire pro_no
numrows = Ubound(myarray)
for i = 0 to numrows
  for j = i + 1 to numrows
	if myarray(0,i) <= myarray(0,j) then
	  col0 = myarray(0,j)
	  col1 = myarray(1,j)
	  myarray(0,j) = myarray(0,i)
	  myarray(1,j) = myarray(1,i)
	  myarray(0,i) = col0 
	  myarray(1,i) = col1 
	end if
  next
next
 
'Passer pr recréer les variables products et quantités
response.write ubound(myarray)
FOR i=0 TO ubound(myarray)
	IF i=0 THEN
		v_products=myarray(0,i)
		v_qty=myarray(1,i)
	ELSE
		v_products=v_products&","&myarray(0,i)
		v_qty=v_qty&","&myarray(1,i)
	END IF
NEXT
Je pense avoir une erreur lorsque je dimensionne mon tableau au départ :
Redim myarray(ubound(tab_products),ubound(tab_products))
J'ai essayé Redim myarray(2,ubound(tab_products))
puis
Redim myarray(ubound(tab_products),2)
Mais rien ne semble fonctionner.

Si j'ai deux colonnes et admettons 10 enregistrements, ça fait
Redim myarray(2,10) ?
ou
Redim myarray(1,10) ? (en admettant qu'il parte à zéro)
ou... ?
yoyot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 15h16   #6
Membre confirmé
 
Avatar de pmboutteau
 
Inscription : février 2005
Messages : 504
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 504
Points : 267
Points : 267
pourquoi tu bosses pas avecune base de données?
__________________
ours ours !! Au début elle est froide mais après elle est bonne!
pmboutteau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 15h17   #7
Nouveau Membre du Club
 
Inscription : juillet 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 97
Points : 32
Points : 32
Et autre question :
if myarray(0,i) <= myarray(0,j) then

Si je veux que la première colonne soit dans un ordre croissant je laisse ça comme ça ?
yoyot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 15h20   #8
Nouveau Membre du Club
 
Inscription : juillet 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 97
Points : 32
Points : 32
Citation:
Envoyé par pmboutteau
pourquoi tu bosses pas avecune base de données?
Après je récupère ça dans une requête SQL.

En fait j'ai v_products="94,44,11,159" mais quand je fais :
Code :
SQL="SELECT * FROM t_products WHERE pro_no IN ("& v_products &")"
Ca me trie tout par ordre croissant, comme je le veux, mais ma variable v_quantites reste non triée. C'est à dire que les quantités ne correspondent plus aux bons articles.
yoyot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 15h25   #9
Membre confirmé
 
Avatar de pmboutteau
 
Inscription : février 2005
Messages : 504
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 504
Points : 267
Points : 267
tu as une clé primaire dans ta base?
__________________
ours ours !! Au début elle est froide mais après elle est bonne!
pmboutteau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 15h45   #10
Nouveau Membre du Club
 
Inscription : juillet 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 97
Points : 32
Points : 32
La clé primaire de la table t_products, c'est justement pro_no.
C'est ce qui se trouve dans v_products="12,24,53,etc."
yoyot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h35.


 
 
 
 
Partenaires

Hébergement Web