Avatar billede sesam Nybegynder
19. januar 2004 - 11:33 Der er 18 kommentarer og
1 løsning

Session sprg?

Jeg har en session der hedder buy hvori der gemmes x antal varer som er seperet med ;

Hvordan kan jeg fjerne en vare fra denne session uden at slette session helt?
Avatar billede sbm Nybegynder
19. januar 2004 - 12:41 #1
Jeg tror du blander begreberne lidt. En session er noget der startes ligeså snart en browser slår en side op på dit site. Det du så har oprettet er en sessions-variabel ved navn buy som så har værdi vare1;vare2;vare3 osv...

Værdien kan manipuleres med alm. strenghåndtering.

// Vi laver en variabel
tmpString = "vare1;vare2;vare3;vare4;vare5"

// Navnet på den vare der skal fjernes
vareDerSkalFjernes = "vare3";

// Vi fjerne alle instanser af varen.
// Også selv om der skulle være flere af den.
tmpString = Replace(tmpString,vareDerSkalFjernes,"")

// Hvis vi har efterladt et tomrum med to semikolonner efter hinanden,
// rydder vi lige op efter os, og erstatter ;; med ;
tmpString = Replace(tmpString,";;",";")



Nu skal du bare gøre det med en Sessions-variabel istedet. :-)
Avatar billede sesam Nybegynder
19. januar 2004 - 12:45 #2
Jeg forstår ikke helt hvad du mener, hvordan for jeg ovenstående til at virke på min session("buy") der indeholde de forskellige vare?

Nu skal du bare gøre det med en Sessions-variabel istedet. :-)??? forstår jeg heller ikke helt???
Avatar billede sbm Nybegynder
19. januar 2004 - 12:46 #3
Hov.... Jeg bliver lige i tvivl.... Hvis du kan have den samme vare stående mange gange efter hinanden, er jeg ikke sikker på det bliver behørigt ryddet op.

Hvis du har buy = "vare1;vare2;vare2;vare2;vare2;vare3;vare4"
vil du så få buy = "vare1;;;;;vare3;vare4"
og efter semikolon-oprydning buy = "vare1;;;vare3;vare4"

Eller hvad? Nogen der kan sige hvordan Replace(tmpString,";;",";") arbejder? Vil den reducere ";;;;;;" til ";;;" eller til ";" ????
Avatar billede sbm Nybegynder
19. januar 2004 - 12:48 #4
Med forbehold for det jeg har skrevet kl. 12:46:08, så vil din kode skulle se således ud når du vil fjerne en vare:

dim tmpString
tmpString = Session("buy")
vareDerSkalFjernes = Request("vareDerSkalFjernes");
tmpString = Replace(tmpString,vareDerSkalFjernes,"")
tmpString = Replace(tmpString,";;",";")
Session("buy") = tmpString

Her har jeg så antaget, at den parameter der fortæller hvilken vare der skal fjernes hedder "vareDerSkalFjernes"
Avatar billede sbm Nybegynder
19. januar 2004 - 13:16 #5
Den skal lige justeres....

dim tmpString
tmpString = Session("buy")
vareDerSkalFjernes = Request("vareDerSkalFjernes");
tmpString = Replace(tmpString,vareDerSkalFjernes,"")
dim tmpString2
tmpString2 = Replace(tmpString,";;",";")
while (tmpString != tmpString2) do
    tmpString = tmpString2
    tmpString2 = Replace(tmpString,";;",";")
loop
Session("buy") = tmpString
Avatar billede sbm Nybegynder
19. januar 2004 - 13:19 #6
Ups. Sorry. Jeg retter lige igen-igen. :-(

dim tmpString
tmpString = Session("buy")
vareDerSkalFjernes = Request("vareDerSkalFjernes");
tmpString = Replace(tmpString,vareDerSkalFjernes,"")
dim tmpString2
tmpString2 = Replace(tmpString,";;",";")
do while (tmpString != tmpString2)
    tmpString = tmpString2
    tmpString2 = Replace(tmpString,";;",";")
loop
Session("buy") = tmpString
Avatar billede sesam Nybegynder
19. januar 2004 - 13:59 #7
Undskyld jeg først svarer nu, han lige været ved tandlægen og fået revet en visdomtand ud ;o(

Men der er en fejl:

Expected ')'
do while (tmpString != tmpString2)
Avatar billede sbm Nybegynder
19. januar 2004 - 14:08 #8
dim tmpString
tmpString = Session("buy")
vareDerSkalFjernes = Request("vareDerSkalFjernes");
tmpString = Replace(tmpString,vareDerSkalFjernes,"")
dim tmpString2
tmpString2 = Replace(tmpString,";;",";")
do until (tmpString = tmpString2)
    tmpString = tmpString2
    tmpString2 = Replace(tmpString,";;",";")
loop
Session("buy") = tmpString
Avatar billede sesam Nybegynder
19. januar 2004 - 14:14 #9
Når jeg sletter en vare fra stringen efterlades der en ;
Avatar billede sbm Nybegynder
19. januar 2004 - 14:23 #10
Øhm.... Det må så være hvis du har slettet alle varer, og den i princippet er tom? Det vil så sige at du også indsætter et ; selv om der kun er EN vare i din variabel?
Avatar billede sbm Nybegynder
19. januar 2004 - 14:27 #11
Jeg forstod det bare som om du SEPAREREDE med semikolon. Det du gør, er at du altid indsætter et ; bagefter - uanset antal. Ikke det store, men hvis jeg vidste det fra starten, kunne opgaven løses lidt enklere...

dim vareDerSkalFjernes
vareDerSkalFjernes = Request("vareDerSkalFjernes") & ";"
Session("buy") = Replace(Session("buy"),vareDerSkalFjernes,"")
Avatar billede sbm Nybegynder
19. januar 2004 - 14:29 #12
...eller som oneliner. Så er det bare lidt mere langhåret at forstå hvad der sker.

Session("buy") = Replace(Session("buy"),Request("vareDerSkalFjernes")&";","")
Avatar billede sesam Nybegynder
19. januar 2004 - 14:35 #13
Hvordan skal den endelige kode så se ud?
Avatar billede sbm Nybegynder
19. januar 2004 - 14:42 #14
Hele afsnittet før som så omtrent således ud:

dim tmpString
tmpString = Session("buy")
vareDerSkalFjernes = Request("vareDerSkalFjernes");
tmpString = Replace(tmpString,vareDerSkalFjernes,"")
dim tmpString2
tmpString2 = Replace(tmpString,";;",";")
do until (tmpString = tmpString2)
    tmpString = tmpString2
    tmpString2 = Replace(tmpString,";;",";")
loop
Session("buy") = tmpString




kan istedet erstattes med

dim vareDerSkalFjernes
vareDerSkalFjernes = Request("vareDerSkalFjernes") & ";"
Session("buy") = Replace(Session("buy"),vareDerSkalFjernes,"")
Avatar billede sesam Nybegynder
19. januar 2004 - 14:52 #15
Hvis jeg fx bestiller 3 vare:

vare1
vare2
vare3

kommer strengen til at sådan her ud
Tilføjer Vare1

vare1

Tilføjer vare2
vare1;vare2

Tilføjer vare2
vare1;vare2;vare3

Dvs hvis der er en vare tilbage vil jeg ikke kunne slette den...?
Avatar billede sbm Nybegynder
19. januar 2004 - 15:15 #16
Ok... Lad-mig-nu-se....

Prøv at skifte det hele ud med

dim tmpString
tmpString = Session("buy")
vareDerSkalFjernes = Request("vareDerSkalFjernes");
tmpString = Replace(tmpString,vareDerSkalFjernes,"")
dim tmpString2
tmpString2 = Replace(tmpString,";;",";")
do until (tmpString = tmpString2)
    tmpString = tmpString2
    tmpString2 = Replace(tmpString,";;",";")
loop
if (tmpString = ";") then
    tmpString=""
end if
Session("buy") = tmpString
Avatar billede sesam Nybegynder
19. januar 2004 - 15:29 #17
Samme problem... ???
Avatar billede sbm Nybegynder
19. januar 2004 - 15:48 #18
At den stadig rummer et enkelt semikolon?

Prøv lige at udskrive din session variabel mellem to andre tegn, så man kan se om der skulle være mellemrum el.lign.
Avatar billede sesam Nybegynder
19. januar 2004 - 16:31 #19
Kan man ikke tjekke om stringen indeholder tegnet ; og hvis den gør bruge
dim vareDerSkalFjernes
vareDerSkalFjernes = Request("vareDerSkalFjernes") & ";"
Session("buy") = Replace(Session("buy"),vareDerSkalFjernes,"")

ellers bruge

dim vareDerSkalFjernes
vareDerSkalFjernes = Request("vareDerSkalFjernes")
Session("buy") = Replace(Session("buy"),vareDerSkalFjernes,"")

Hvordan er det nu man tjekker om strengen indeholder et bestemt tegn?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester