[asp] array splitten

Pagina: 1
Acties:

  • Aakab
  • Registratie: November 2001
  • Laatst online: 17-09-2025
Ok het volgende is aan de hand, ik ben bezig met een webshop waarbij mensen dingen in hun winkelmand kunnen dumpen, deze winkelmand is een session waarin de produktnummer en een artikel inzitten gescheiden doormiddel van een a dus:

01a1

oftewel produkt 01 met het aantal 1

maar als iemand nog een produkt wilt dan komt er nog een z bij dus:

01a1z02a3

oftewel
produkt 1 met het aantal 1
produkt 2 met het aantal 3

dus dit is dan in die session aanwezig.

Wat ik dus wil is dat ik
-1 array krijg met alleen de produktcode
-1 array krijg met alleen de aantallen

deze wil ik dan later netjes in een tabel laten neerzetten.

Nu heb ik de code:
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
wwArray1=split(session("winkelmand"),"a")
            
Response.Write"<table border='0'>"
Response.Write"<tr><th>Aantal</th><th>Artikel</th><th>Prijs</th><th>Totaal</th><td>Bewerkingen</td>"
Dim J
For J=0 To ubound(wwArray1)-1 step 2
   set strtabel= Server.CreateObject("ADODB.recordset")
   strtabel.Open "SELECT * FROM artikel WHERE artikelnr="+wwArray1(J), oconn,2,2
                                        
artikelnaam=strtabel("naam")
merk=strtabel("omschrijving")
prijs=strtabel("prijs")
                
aantal=wwArray1(J+1)
                    
Response.Write"<tr><td align='center'>"+aantal+"</td><td>"+merk+" "+artikelnaam+"</td><td align='right'>"+toonPrijs(prijs)+"</td><td align='right'>"+toonPrijs(totaalprijs)+"</td><td><a href='wijzig.asp'>Wijzig</a><a href='verwijder.asp'>Verwijder</a></td></tr>"
        
                
Next
Response.Write"<tr><td></td><td></td><td></td><td><hr class='totaal'></hr></td><td></td></tr>"
Response.Write"<tr><td></td><td></td><td>Totaal:</td><td>"+toonPrijs(orderprijs)+"</td><td></td></tr>"
Response.Write"</table>"
            
Else
Response.Write"Uw winkelmand is leeg."
            
End If


zoals je kan zien split hij hem nu alleen maar op a dus alleen de eerste produkt geeft hij weer in het tabeltje want daarna komt hij een z tegen waardoor hij de produktcode niet meer kan opzoeken in de database.

Kan iemand me helpen hierbij?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12:28

Janoz

Moderator Devschuur®

!litemod

Waarom sla je in je sessie niet gewoon een array op ipv die string? Dat scheelt je waarschijnlijk een hoop werk.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Aakab
  • Registratie: November 2001
  • Laatst online: 17-09-2025
Janoz schreef op 21 January 2003 @ 15:15:
Waarom sla je in je sessie niet gewoon een array op ipv die string? Dat scheelt je waarschijnlijk een hoop werk.
Hoe bedoel je precies?
sorry ben een asp noob

Verwijderd

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dim s, a1, a2, s2
s = 01a1z02a3
a1 = split(s,"z")

'**********
' a1 = [01a1, 02a3]
'**********

for each s2 in a1
    a2 = split(s2, "a")

'********
' 1st a2 = [01,1]
' 2nd a2 = [02,3]
'********

next


succes

[ Voor 41% gewijzigd door Verwijderd op 21-01-2003 15:55 ]


  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 17:26

BlackBurn

One Ring To Rule Them All

Het kan nog veel makkelijker in mijn ogen, waarom niet de gegevens tijdelijk in een tabel opslaan, dan sla je ze gewoon zo op en dan elke keer als een gebruiker een nieuw artikel bestelt maak je een nieuw record aan, wel even zorgen dat elke gebruiker een unieke ID krijgt en even checken of UserID+ProductID al voorkomt, want dan moet aantal met eentje verhoogt worden.

UserID - ProductID - Aantal

Als je intresse in de code hebt, dan moet je het maar laten weten, heb geloof ik het pakketje nog wel ergens liggen.

If it is broken, fix it. If it ain't broken, make it better!


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:24

gorgi_19

Kruimeltjes zijn weer op :9

offtopic:
/me vraagt zich trouwens af waarom dit in een session moet en niet in een cookie....
Lijkt me dat je de server niet wil vervelen met winkelmandjes; zo 'veilig' hoeven die gegevens toch ook weer niet te zijn? En je voorkomt zo een session timeout

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • syllaz
  • Registratie: Mei 2002
  • Laatst online: 20-04 17:01
Ik ga voor BlackBurns optie. Je maakt gewoon een tijdelijke database aan waar je het winkelwagentje van je klant in dumpt. Zodra er een bestelling is bewaar je deze info, zo niet dan gooi je de records weg.
Gebruik zo ie zo geen sessions om artikelinfo in te bewaren (onnodige serverload).
En cookies is niet helemaal veilig natuurlijk (ligt eraan wat je erin bewaard) ;)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:24

gorgi_19

Kruimeltjes zijn weer op :9

syllaz schreef op 21 januari 2003 @ 16:14:
Gebruik zo ie zo geen sessions om artikelinfo in te bewaren (onnodige serverload).
En cookies is niet helemaal veilig natuurlijk (ligt eraan wat je erin bewaard) ;)
Ik weet het niet... Wat zou er anders in moeten staan dan aantallen en artikelnummers? Lijkt me vrij veilig nog.. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 24-08 14:46

LauPro

Prof Mierenneuke®

gorgi_19 schreef op 21 January 2003 @ 16:01:
offtopic:
/me vraagt zich trouwens af waarom dit in een session moet en niet in een cookie....
Lijkt me dat je de server niet wil vervelen met winkelmandjes; zo 'veilig' hoeven die gegevens toch ook weer niet te zijn? En je voorkomt zo een session timeout
Op deze mannier kan je in weze (als je er ook nog een database bij betrekt) het winkelmandje 'opslaan' (als klant zijnde). Dit is erg handig omdat je dan niet meer alles hoeft toe te voegen e.d.. Maar dit kan idd wel efficiënter ;).
offtopic:
edit: HET wachtwoord :X

[ Voor 9% gewijzigd door LauPro op 21-01-2003 16:42 ]

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • Aakab
  • Registratie: November 2001
  • Laatst online: 17-09-2025
uhh de wachtwoord en gebruikersid komen erook in te staan...
maari k ga effe spelen met de oplossing van 5371.

Thnx allemaal!!!

  • Aakab
  • Registratie: November 2001
  • Laatst online: 17-09-2025
LauPro schreef op 21 January 2003 @ 16:24:
[...]

offtopic:
edit: HET wachtwoord :X
hehe sorry ben nog altijd een allochtoon ;)

overigens 5371 uhh hoe kan ik dat beste in me code wegschrijven want nu krijg ik fouten enz?

ik ga nu effe werken..ik kijk morgen wel weer..thnx!

  • Aakab
  • Registratie: November 2001
  • Laatst online: 17-09-2025
Ok het volgende is aan de hand. Ik heb van een of ander voorbeeld site een stuk code gepakt om de array's in tabellen te tonen, dit omdat ik dan dingen kan uitsluiten en kan zien waar me fouten zitten.

Als ik dat samenvoeg met de code van 5371 dan krijg ik het volgende:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<%
dim s, a1, a2, s2
s = session("winkelmand")
a1 = split(s,"z")

'**********
' a1 = [01a1, 02a3]
'**********

for each s2 in a1
    a2 = split(s2, "a")

'********
' 1st a2 = [01,1]
' 2nd a2 = [02,3]
'********

next
ShowArrayInTable(a2)
                end if
Sub ShowArrayInTable(ArrayToShow)
    Dim I           ' Simple Looping Var
    Dim iArraySize  ' Var to store array size

    ' If you want to know how big an array is, you can use this
    ' to find out. This even works in VB where they don't have
    ' to be zero-based.  The LBound and UBound return the
    ' indecies of the lowest and highest array elements so to
    ' get the size we take the difference and add one since you
    ' can store a value at both end points.
    iArraySize = (UBound(ArrayToShow) - LBound(ArrayToShow)) + 1

    Response.Write "<p>The array has " & iArraySize _
        & " elements.  They are:</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
    
    ' Simple loop over a table outputting a row for each element
    For I = LBound(ArrayToShow) To UBound(ArrayToShow)
        Response.Write "<tr>" & vbCrLf
        ' Write out the index of the element we're currently on
        Response.Write "<td>" & I & "</td>" & vbCrLf
        ' Write out the value of the element we're currently on
        Response.Write "<td>" & ArrayToShow(I) & "</td>" & vbCrLf
        Response.Write "</tr>" & vbCrLf
    Next 'I
    Response.Write "</tbody>" & vbCrLf

    Response.Write "</table>" & vbCrLf
End Sub

        %>


Het uitkomst van ShowArrayInTable(a2) is:

The array has 0 elements. They are:

oftewel de tabel bevat geen info.
Als ik ShowArrayInTable(a1) doe(om te kijken of hij dat wel goed doet) dan krijg ik het wel netjes te zien:

The array has 3 elements. They are:

Index Value
0 21a1
1 23a1
2

oftewel bij de 2de split gaat het mis. Wie kan me hierbij helpen?

  • BlackBurn
  • Registratie: Juni 2001
  • Laatst online: 17:26

BlackBurn

One Ring To Rule Them All

Aakab schreef op 21 januari 2003 @ 16:29:
uhh de wachtwoord en gebruikersid komen erook in te staan...
maari k ga effe spelen met de oplossing van 5371.

Thnx allemaal!!!
Dan is zo'n winkelmandje in een tabel juist extreem handig imo, dan koppel je gewoon de tblusers aan tbltmpmandje en dan kan iemand, altijd verder gaan(of hij nou op vakantie is geweest of een crash heeft gehad) met z'n winkelwagentje vol te gooien tot hij uiteindelijk besluit te bestellen.

Maar goed welke oplossing je ook kiest, veel succes!

If it is broken, fix it. If it ain't broken, make it better!


Verwijderd

showArray in table moet voor de next

De for -> next maakt van string s weer een array... deze wordt elke loop opniew gevuld.

http://www4.apo.tudelft.nl/array.asp

[ Voor 74% gewijzigd door Verwijderd op 22-01-2003 13:52 ]

Pagina: 1