Avatar billede meyer Nybegynder
20. august 2003 - 09:32 Der er 22 kommentarer og
2 løsninger

sammentælling og videreførsel af variabler

Hvordan lister jeg en stribe varer fra databasen og laver en sammentælling af pris on the fly på samme side når brugeren skriver antal i inputfeltet. Derefter skal den videreføre antal og pris til ny side???
Avatar billede medions Nybegynder
20. august 2003 - 09:37 #1
Du ligger det ned i en kommasepareret variabel og derefter ligger dem i en Session variabel og så har dudem stillet til rådighed i 20 min.!

Fx. sådan her:

strStreng = ""
While Not objRs.EOF
  strStreng = strStreng & objRs("pris") & ","
objRs.MoveNext()
Wend

Session("Priser") = strStreng

_________________________________

Når så du skal bruge dem igen gør du sådan her:

strPriser = Left(Session("Priser"), Len(Session("Priser")) -1)
arrPriser = Split(strPriser, ",")
For i = 0 To UBound(arrPriser)
  Response.Write(arrPriser(i) & "<br>")
Next

//>Rune
Avatar billede meyer Nybegynder
20. august 2003 - 09:49 #2
De skal først lægges ned i variablen når brugeren har skrevet antal ind i inputfeltet. dvs at både varenummer, antal og pris skal lægges ned i variablen, kan man det??
Avatar billede dk_akj Nybegynder
20. august 2003 - 09:55 #3
Jeg ville lave det i javascript

På onchange af inputfelt (antal) vil jeg summere ved at løbe alle antal felter igennem og gange med den pris der står i en hidden lige "bag" antal feltet.

Var det noget ??

//akj
Avatar billede medions Nybegynder
20. august 2003 - 09:58 #4
Ja. Du laver bare 2 variabler :o)

//>Rune
Avatar billede eagleeye Praktikant
20. august 2003 - 10:00 #5
Hvis du vil undgå siden reloades hver gang man indtaster et nyt antal for en vare så brug Javascript, det er relativt let at lave i javascript og lave nogle fuktioner som kan ligge og gange et par tal sammen..
Avatar billede meyer Nybegynder
20. august 2003 - 10:04 #6
Det lyder meget fornuftigt, men hvordan laver jeg det??... jeg kunne forestille mig at man måske lavede javascript-delen så den regnede sammen og viser en subtotal på samme side og at man først smider varerne i variablerne når der er valgt antal.
Avatar billede eagleeye Praktikant
20. august 2003 - 10:10 #7
dk_akj har mere eller mindre tilbudt at vise et forslag til hvordan det kan laves. Jeg har ikke mulighed for at vise et eks før i eftermiddag/aften.

Ja du kan så javascript til at regne de hele ud for dig både pris for et antal stk, og sub total.

Så jeg syntes du skal sige til dk_akj at det var noget ;)
Avatar billede meyer Nybegynder
20. august 2003 - 10:11 #8
dk_akj>> ja helt klart, har du noget liggende??
Avatar billede dk_akj Nybegynder
20. august 2003 - 10:27 #9
Her er et eksempel.

Der er IKKE taget højde for at der indtastes bogstaver i antal felter.

//akj

<form action="side.asp" method="post" name="form1" id="form1">
<%
response.write "<table>"
for i = 1 to 3
    response.write "<tr>"
    response.write "<td>Vare " & i &"</td>" & vbcrlf
    response.write "<td>Antal <input onChange=fsum();  type=text value=0 name=vare"&i&"antal></td>" & vbcrlf
    response.write "<td>Pris <Input type=text name=vare"&i&"pris readonly value="&i&"></td>" & vbcrlf
    response.write "</tr>"
next
response.write "<tr>"
    response.write "<td colspan=3>Ialt <Input type=text name=sum readonly value=0></td>"
response.write "</tr>"

response.write "</table>"
%>

</form>

<script language=javascript>
function fsum(){
var mysum = 0;
var antal;
var pris;

<%

for i = 1 to 3
    response.write "antal = document.form1.vare" & i & "antal.value;" & vbcrlf
    response.write "pris = document.form1.vare" & i & "pris.value;" & vbcrlf
    response.write "mysum = mysum + ( antal * pris);" & vbcrlf
next
%>

document.form1.sum.value= mysum;
}


</script>
Avatar billede meyer Nybegynder
20. august 2003 - 13:02 #10
dk_akj>> Den virker fint hvis der ikke er , i prisen - hvad kan det skyldes?? f.eks. 15,10
Avatar billede dk_akj Nybegynder
20. august 2003 - 13:03 #11
prøv med . (punktum) istedet

//akj
Avatar billede meyer Nybegynder
20. august 2003 - 13:06 #12
det går ikke, der er , i basen ved øre
Avatar billede dk_akj Nybegynder
20. august 2003 - 13:16 #13
Kan du ikke lave en replace(pris,",",".") når du udskriver prisen ??

//akj
Avatar billede meyer Nybegynder
20. august 2003 - 13:22 #14
Jo jeg prøver lige :-)

Hvordan laver jeg "mysum" om til en variabel jeg kan udskrive direkte  via ASP??
Avatar billede dk_akj Nybegynder
20. august 2003 - 13:26 #15
mysum er en javascript variabel (clientside).
Den kan du ikke umiddelbart overføre til asp (serverside)

Du kan dog submitte siden og på side.asp tage fat i den med request.form("sum")

//akj
Avatar billede meyer Nybegynder
20. august 2003 - 13:29 #16
ja det er klart, jeg ville ellers bare gerne ha' undgået input feltet på totalen :-(
Avatar billede meyer Nybegynder
20. august 2003 - 13:34 #17
Kan man lave replace & formatnumber på værdien af sum-feltet??
Avatar billede dk_akj Nybegynder
20. august 2003 - 13:35 #18
Du kan bare lave den som type=hidden istedet for type=text.

//akj
Avatar billede meyer Nybegynder
20. august 2003 - 13:37 #19
Den skal ikke gemmes, bare skrives normalt ud på siden.
Avatar billede dk_akj Nybegynder
20. august 2003 - 14:13 #20
tilføj denne linie i fsum funktionen:
document.getElementById('sumtext').innerText= mysum;

og denne linie hvor du vil have vist summen.

//akj
Avatar billede dk_akj Nybegynder
20. august 2003 - 14:14 #21
denne linie :-)
response.write "<td><p id=""sumtext"">0</p></td>"
Avatar billede meyer Nybegynder
21. august 2003 - 13:36 #22
dk_akj >> Det virker fint :-)

gider du lige lave et svar ??
Avatar billede dk_akj Nybegynder
21. august 2003 - 13:42 #23
Det er jeg glad for at høre :-)

//akj
Avatar billede medions Nybegynder
21. august 2003 - 15:23 #24
Thx 4 Poinz

//>Rune
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