Avatar billede gommasch Nybegynder
14. juli 2004 - 19:33 Der er 40 kommentarer og
2 løsninger

Sende flere values fra dropdown box.

Hej

Jeg har en asp-side som benytter 4 values som sendes fra en Form.

ProductID=Request.QueryString("ProductID")
ProductName=Request.QueryString("ProductName")
Quantity=Request.QueryString("Quantity")
Price=Request.QueryString("Price")

Nu skal værdierne sendes fra en dropdown box istedet. Jeg kan bare ikke få dropdown box'en til at sende de rigtige værdier. Den sender sidst fundne vare uanset hvad jeg vælger i dropdownbox'en.

Kan nogen gennemskue sagen ? (Helst ikke noget med Onchange, vil helst benytte en Send-knap).

Har forsøgt at hente inspiration fra:
http://www.eksperten.dk/spm/517407
http://www.experts-exchange.com/Web/Web_Languages/ASP/Q_20931336.html#10674554

Min kode:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kabinet</title>
</head>
<body>

<form method="GET" action="shopcart.asp" target="_self">
<select name="D1">"
<%
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/database/hovedmenu.mdb")
Set myCon = Server.CreateObject("ADODB.Connection")
myCon.Open strDSN

Varenr = request.querystring("varenr")

SQL = "SELECT (SELECT pris  FROM produkter where config.varenr=produkter.varenr) AS Prispc, (SELECT varenavn  FROM produkter WHERE varenr=kabinet) AS Kabinet, (SELECT pris  FROM produkter where varenr=kabinet) AS Priskabinet, (SELECT pris FROM produkter WHERE varenr=xkabinet) AS Prisxkabinet, (SELECT Varenr FROM produkter where varenr=kabinet) AS Varenrkabinet FROM Produkter INNER JOIN Config ON Produkter.Varenr=Config.Varenr WHERE Config.Varenr='" & varenr & "' AND (SELECT webstatus FROM produkter WHERE varenr=kabinet)='www'"

Set rs = mycon.Execute(SQL)

If not (rs.BOF or rs.EOF) Then

Response.Write "Pris før ændringer: Kr. " & rs("prispc")*1.25 & ",00" & " ( " & FormatNumber(rs("prispc"),2) & " )" & "<BR>" & "<BR>"
Response.Write "Kabinet" & "<BR>"

response.write "<option selected>Vælg</option>"

Do while not rs.EOF
    prispc=rs("prispc")*1.25
    Prismoms = FormatNumber(((rs("priskabinet")-rs("prisxkabinet"))*1.25),2)
    Prismomsex = FormatNumber(rs("priskabinet")-rs("prisxkabinet"),2)
    kabinet = rs("kabinet")
    varenrkabinet = rs("Varenrkabinet")
%>

<option value="<%=rs("kabinet")%>"><%=rs("kabinet")%> <%=Prismoms%> ( <%=Prismomsex%> )</option>

<%
rs.movenext
loop
Else

Response.write "Ingen opgraderinger tilgængelige, ring for opgradering."

End if
%>

<input type="hidden" name="Quantity" value="1">
  <input type="hidden" name="Action" value="AddItem">
  <input type="hidden" name="Price" value="<%=Prismomsex%>">
  <input type="hidden" name="ProductID" value="<%=Varenrkabinet%>">
  <input type="hidden" name="ProductName" value="*<%=kabinet%>">
  <input type="submit" value="Send"><input type="reset" value="Nulstil" name="B2">
</select>
</form>

</body>
</html>
Avatar billede eagleeye Praktikant
14. juli 2004 - 20:38 #1
Fordi man kun kan vælge en værdi en en drop down listen så skal den laves som multi select så prøv at rette denne linje:

<select name="D1">"

Til dette:

<select name="D1"  multiple>"
Avatar billede gommasch Nybegynder
14. juli 2004 - 21:04 #2
Der må ikke være mulighed for at vælge mere end éen. Men den ene repræsenterer jo både et ProductID, ProductName, Price og Quantity. Quantity er iøvrigt altid lig 1.
Alle disse fire skal kunne hentes fra næste side shopcart.asp på følgende måde:

ProductID=Request.QueryString("ProductID")
ProductName=Request.QueryString("ProductName")
Quantity=Request.QueryString("Quantity")
Price=Request.QueryString("Price")
Avatar billede eagleeye Praktikant
14. juli 2004 - 21:35 #3
Ja du har jo et hidden felt Quantity som er lig med 1
<input type="hidden" name="Quantity" value="1">

Vil du havde alle de andre felter opdatere sig når du væger en vare i drop-down menuen?
Avatar billede gommasch Nybegynder
14. juli 2004 - 22:00 #4
Ja, der vil være et ukendt antal varer i dropdown menuen. Den vare jeg vælger skal sende sit ProductID, ProductName, Price og Quantity til shopcart.asp ved tryk på Send.
Avatar billede gommasch Nybegynder
14. juli 2004 - 22:03 #5
Jeg skal iøvrigt have flere dropdown bokse på samme side som skal kunne det samme. Og så er planen at ved tryk på send opdateres totalprisen på samme side med prisen på den valgte vare. Men det ser jeg på senere.
Avatar billede eagleeye Praktikant
14. juli 2004 - 22:16 #6
hvis du vil havde den til at opdatere felterne skal du gemme alt indholder fra database på siden og lave et javascript som ud fra det valgt man har gjort fylder felterne med de rigtige data.

Kan siden shopcart.asp ikke selv hente de informationer fra databasen?
Avatar billede gommasch Nybegynder
14. juli 2004 - 22:29 #7
Måske. Men Price er forskelsprisen på den valgte vare og en standardvare. Problemet er nok lidt det, at der også er andre sider som sender info til shopcart på denne måde, så hvis det rimeligt nemt kunne lade sig gøre at sende disse fire værdier ville det være rart.
Havde håbet på at kunne tage et lille skridt ad gangen.
Avatar billede gommasch Nybegynder
14. juli 2004 - 22:45 #8
Problemet er jo nok, at input værdierne ligger uden for loop'et og derfor altid indeholder sidst fundne vare.

Kan altså ikke gennemskue hvordan de skal få værdierne fra den valgte vare.
Avatar billede eagleeye Praktikant
14. juli 2004 - 22:49 #9
Ja det kan man, men man skal ud i sådan noget som dette:
http://www.eksperten.dk/spm/446339

Her er koden som gemmer data på siden og ud fra to select viser det i input felterne:

<html>
<head>
<title></title>
</head>
<body>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
connStr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db101.mdb")
Conn.Open connStr

SQL = "SELECT fra_by, til_by&'|'&pakke_nr FROM flight ORDER BY fra_by, til_by"
Set rs = Conn.Execute(SQL)
rsArr = rs.GetRows()
'Så er [fra_by] i rsArr(0,i), [til_by] er i rsArr(1,i)
for i = 0 to ubound(rsArr,2)
  Response.write rsArr(0,i) & "  " & rsArr(1,i) & "<br>"
next

SQL = "SELECT pakke_nr, afgangs_dato, afgangs_tid, ankomst_tid, fly_selskab, billet_pris, antal FROM flight ORDER BY pakke_nr"
Set rs = Conn.Execute(SQL)
dataArr = rs.GetRows()

rs.Close
Conn.Close
%>

<script language="javascript" type="text/javascript">
var arr1 = [
<%
oldValg1 = ""
for i = 0 to ubound(rsArr,2)
  if oldValg1 <> rsArr(0,i) then
    Response.write "['" & rsArr(0,i) & "', ["
    oldValg1 = rsArr(0,i)
  end if

  Response.write "'" & rsArr(1,i) & "'"
 
  t = i+1
  if t <= ubound(rsArr,2) then
    endValg = false
    if oldValg1 <> rsArr(0,t) then
      Response.write "]]"
      endValg = true
    end if
    Response.write ","
    if endValg = true then response.write vbCrLf
  else
    Response.write "]]"
  end if

next
%>
];


<%
for i = 0 to ubound(dataArr,2)
  'Response.write "var arrData" & dataArr(0,i) & " = new Array("
  Response.write "var arrData" & dataArr(0,i) & " = """
  for x = 0 to 6
    if ""&dataArr(x,i) <> "" then
      Response.write dataArr(x,i)
      'Response.write "'" & dataArr(x,i) & "'"
    else
      Response.write " "
      'Response.write "' '"
    end if
    if x < 6 then Response.write "||"
  next   
  'Response.write ");" & vbCrLf
  Response.write """;" & vbCrLf
next
%>


function initSels(){
    createOpts(document.getElementById('sel1'));
}

function createOpts(sel){
    var s = new Array();
    var num = 0, txt = "arr1";
    var ar = opt = null;
    var n = sel.selectedIndex;
    var args = createOpts.arguments.length;
    for(var i=1;args>i;i++){
        s[i-1] = document.getElementById(createOpts.arguments[i]);
        if(s[i-1]==sel)num=i;
    }
    if(args>1){
        if(s[num])sel = s[num];
        else return;
    }
    if(n==0&&args>1){
        for(i=num;args>i+1;i++){
            s[i].length = 0;
            opt = document.createElement('OPTION');
            s[i].appendChild(opt);
            opt.value = "";
            opt.text = "\74-- Vælg --";
        }
        return true
    };
    for(i=0;num>i;i++){
        txt+="["+(s[i].selectedIndex-1)+"][1]";
    }
    ar = eval(txt);
    sel.length = 0;
    opt = document.createElement('OPTION');
    sel.appendChild(opt);
  opt.value = "";
  opt.text = "-- Vælg --";
    for(i=0;ar.length>i;i++){
        opt = document.createElement('OPTION');
        sel.appendChild(opt);
        if(typeof ar[i] == 'object'){
          opt.value = ar[i][0];
            opt.text = ar[i][0];
        }else{
          str = ar[i];
          if (str.indexOf("|")!=-1) {
            str = str.substr(0,str.indexOf("|"));
          }
            opt.value = ar[i];
          opt.text = str;
        }
    }
    if(args>num+2){
        for(i=num+1;args-1>i;i++){
            s[i].length = 0;
            opt = document.createElement('OPTION');
            s[i].appendChild(opt);
            opt.value = "";
            opt.text = "\74-- Vælg --";
        }
    }
}

function showdata(theform,sel) {
  str = sel;
  if (str.indexOf("|")!=-1) {
    str = str.substr(str.indexOf("|")+1);
  }
  str = eval("arrData"+str)
  var myArr = (""+str).split("||");
  theform.pakke_nr.value = myArr[0];
  theform.afgangs_dato.value = myArr[1];
  theform.afgangs_tid.value = myArr[2];
  theform.ankomst_tid.value = myArr[3];
  theform.fly_selskab.value = myArr[4];
  theform.billet_pris.value = myArr[5];
  theform.antal.value = myArr[6];
}
</script>

</head>
<body style="font-size:12px;" onload="initSels()">
<div style="text-align:left;">
<form name="sels">
<select name="sel1" id="sel1" onchange="createOpts(this,'sel1','sel2');">
<option value="">Vis alle</option>
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<select name="sel2" id="sel2" onchange="showdata(this.form,this.value);">
<option value="">Vis alle</option>
</select>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<br>
Pakke nr:<input type="text" name="pakke_nr" value=""><br>
afgangs_dato:<input type="text" name="afgangs_dato" value=""><br>
afgangs_tid:<input type="text" name="afgangs_tid" value=""><br>
ankomst_tid:<input type="text" name="ankomst_tid" value=""><br>
fly_selskab:<input type="text" name="fly_selskab" value=""><br>
billet_pris:<input type="text" name="billet_pris" value=""><br>
antal:<input type="text" name="antal" value=""><br>
</form>
</div>
</body>
</html>
Avatar billede eagleeye Praktikant
14. juli 2004 - 22:57 #10
men det skal jo så passes til kun at havde en drop-down menu.
Er det sådan noget du leder efter?
Avatar billede gommasch Nybegynder
14. juli 2004 - 23:02 #11
Tror det, kigger lige på det...
Avatar billede eagleeye Praktikant
14. juli 2004 - 23:04 #12
ok, jeg smutter for i aften
Avatar billede gommasch Nybegynder
14. juli 2004 - 23:58 #13
Har svært ved at gennemskue den. Jeg kan se den ene dropdown er afhængig af den anden, og at der først ved valg i den anden sendes endelige data til felterne.

Jeg skal jo kun bruge éen dropdown hvis valg sendes videre. Har prøvet at rette koden til uden større held.

Tror du den kan bruges til, ved valg af vare at tillægge prisen til en totalpris i et synligt felt og fratrække den igen ved fravalg ? - Og så først ved tryk på SEND at sende values til shopcart.asp ?
Avatar billede cesil Nybegynder
15. juli 2004 - 08:42 #14
kan du ikke kommaseparere dine værdier i din dropdown og på næste side så hente værdierne med en split.
Avatar billede gommasch Nybegynder
15. juli 2004 - 21:17 #15
Har du et forslag til hvordan det nogenlunde kunne se ud ?
Avatar billede eagleeye Praktikant
15. juli 2004 - 21:30 #16
Ja jeg kan lave et.
Avatar billede cesil Nybegynder
15. juli 2004 - 21:37 #17
<option value="<%=rs("kabinet")%>,<%=Prismoms%>,<%=Prismomsex%>"><%=rs("kabinet")%> <%=Prismoms%> ( <%=Prismomsex%> )</option>

på shopcart.asp kan du så hente værdierne ud således:

tabel = split(request.querystring("D1"),",")
kabinet = tabel(0)
prismoms = tabel(1)
prismomsex = tabel(2)
Avatar billede cesil Nybegynder
15. juli 2004 - 21:38 #18
hovsa. Den her linie skal lige ændres
tabel = split(request.querystring("D1"),",")

til

tabel = split(request.form("D1"),",")
Avatar billede eagleeye Praktikant
15. juli 2004 - 21:41 #19
ja det vist det nemeste :) bar  brug en skille karakter som ikke er i et af felterne.
Avatar billede gommasch Nybegynder
15. juli 2004 - 22:14 #20
Jeg kan godt nok heller ikke få metoden til at fungere.

Kan det ikke lade sig gøre uden at skulle ændre modtagersiden, den er så dejlig simpel ? - Der er jo flere sider som sender til denne side, og hvis jeg ændrer modtagersidens måde at trække data ud på skal jeg vel også til at ændre de andre siders måde at sende deres data, eller ?
Avatar billede cesil Nybegynder
15. juli 2004 - 22:21 #21
du skal kun ændre for det felt.
Hvad får du for en fejlmeddelelse
Avatar billede gommasch Nybegynder
15. juli 2004 - 22:29 #22
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 0]'
/shopcart.asp, line 42


Modtagende del af shopcart:
Line 42 er denne: kabinet = tabel(0)



<%
If Action="AddItem" then
tabel = split(request.form("D1"),",")
kabinet = tabel(0)
prismoms = tabel(1)
prismomsex = tabel(2)
    ProductID=Request.QueryString("ProductID")
    ProductName=Request.QueryString("ProductName")
    Quantity=Request.QueryString("Quantity")
    Price=Request.QueryString("Price")
    CartItems = Session("CartItems")
    TempArray = Session("Cart")
    NewCartItems=CartItems+1
    Dim TempArray2()
    ReDim TempArray2(NewCartItems,3)
    For I = 0 to CartItems
        TempArray2(I,0)=TempArray(I,0)
        TempArray2(I,1)=TempArray(I,1)
        TempArray2(I,2)=TempArray(I,2)
        TempArray2(I,3)=TempArray(I,3)
    Next
    TempArray2(NewCartItems,0)=ProductID
    TempArray2(NewCartItems,1)=ProductName
    TempArray2(NewCartItems,2)=Quantity
    TempArray2(NewCartItems,3)=Price
    Session("Cart") = TempArray2
    Session("CartItems")=NewCartItems
    Response.Write "<font size=2 color=000080 face=verdana>Vare lagt i kurv...</font>"
End If
Avatar billede gommasch Nybegynder
15. juli 2004 - 22:33 #23
Ja, jeg har vist bare ukritisk tilføjet dine fire linjer i shopcart :-(

Kan session (global.asa) have indflydelse på det ?

Sub Session_OnStart
    FrontPage_StartSession '==FrontPage Generated==
    ' ---------- Initialize ShoppingCart ----------
dim Cart ()
redim Cart (0,3)
Cart(0,0) = "ProductID"
Cart(0,1) = "ProductName"
Cart(0,2) = "Quantity"
Cart(0,3) = "Price"
Session("Cart") = Cart
Session("CartItems") = 0
End Sub
Avatar billede gommasch Nybegynder
15. juli 2004 - 23:55 #24
Det er godt nok belastende det her, jeg er vist kørt på vildspor denne gang. Jeg vil med glæde give både 200 og 300 points for en løsning hvis det skal være...
Avatar billede cesil Nybegynder
16. juli 2004 - 08:37 #25
tabel = split(request.form("D1"),",")
kabinet = tabel(0)
prismoms = tabel(1)
prismomsex = tabel(2)

Du skal prøve og udskrive request.form("D1") for at se hvad den indeholder. Hedder din dropdown D1?
Hvis ikke skal du lave en request på det rigtige navn.

Det er en lille ting det her. Du skal bare lige have fat i det rigtige felt på modtagersiden, derefter
er det en smal sag at få lavet resten.
Avatar billede gommasch Nybegynder
16. juli 2004 - 10:02 #26
Lavede lige en shopcart2 og sender til den istedet:

<body>
<%
tabel = split(request.form("D1"),",")
kabinet = tabel(0)
prismoms = tabel(1)
prismomsex = tabel(2)

response.write(request.form("price")) & "<BR>"
response.write(request.form("productid")) & "<BR>"
response.write(request.form("productname")) & "<BR>"

response.write "<HR>"

response.write(request.form("kabinet")) & "<BR>"
response.write(request.form("prismoms")) & "<BR>"
response.write(request.form("prismomsex")) & "<BR>"
%>

</body>

Med GET som normalt benyttes fås følgende fejl:
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 0]'
/shopcart2.asp, line 11

Line 11 er denne: kabinet = tabel(0)

Med POST fås data for sidst fundne vare i loop'et på disse linjer:
response.write(request.form("price")) & "<BR>"
response.write(request.form("productid")) & "<BR>"
response.write(request.form("productname")) & "<BR>"

Men intet på disse:
response.write(request.form("kabinet")) & "<BR>"
response.write(request.form("prismoms")) & "<BR>"
response.write(request.form("prismomsex")) & "<BR>"
Avatar billede cesil Nybegynder
16. juli 2004 - 11:08 #27
jo men den der er vigtig for dig er den her request.form("D1")
Hvad får du ud af at lave en response.write på den?

Hedder din select stadig D1? ellers skal du ændre request.form("D1") til det den hedder nu.
Avatar billede cesil Nybegynder
16. juli 2004 - 11:10 #28
Fejlen får du fordi D1 er tom. Så mit gæt er at den ikke findes på den side du submitter.
Avatar billede gommasch Nybegynder
16. juli 2004 - 11:15 #29
Jo, den hedder D1. Laver jeg ikke en rigtig response.write på den som jeg gjorde før ?

Her er hele koden:
<body>

<form method="get" action="shopcart2.asp" target="_self">
<select name="D1">"
<%
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/database/hovedmenu.mdb")
Set myCon = Server.CreateObject("ADODB.Connection")
myCon.Open strDSN

Varenr = request.querystring("varenr")

SQL = "SELECT (SELECT pris  FROM produkter where config.varenr=produkter.varenr) AS Prispc, (SELECT varenavn  FROM produkter WHERE varenr=kabinet) AS Kabinet, (SELECT pris  FROM produkter where varenr=kabinet) AS Priskabinet, (SELECT pris FROM produkter WHERE varenr=xkabinet) AS Prisxkabinet, (SELECT Varenr FROM produkter where varenr=kabinet) AS Varenrkabinet FROM Produkter INNER JOIN Config ON Produkter.Varenr=Config.Varenr WHERE Config.Varenr='" & varenr & "' AND (SELECT webstatus FROM produkter WHERE varenr=kabinet)='www'"

Set rs = mycon.Execute(SQL)

If not (rs.BOF or rs.EOF) Then

Response.Write "Pris før ændringer: Kr. " & rs("prispc")*1.25 & ",00" & " ( " & FormatNumber(rs("prispc"),2) & " )" & "<BR>" & "<BR>"
Response.Write "Kabinet" & "<BR>"

response.write "<option selected>Vælg</option>"

Do while not rs.EOF
    prispc=rs("prispc")*1.25
    Prismoms = FormatNumber(((rs("priskabinet")-rs("prisxkabinet"))*1.25),2)
    Prismomsex = FormatNumber(rs("priskabinet")-rs("prisxkabinet"),2)
    kabinet = rs("kabinet")
    varenrkabinet = rs("Varenrkabinet")
%>

<option value="<%=rs("kabinet")%>,<%=Prismoms%>,<%=Prismomsex%>"><%=rs("kabinet")%> <%=Prismoms%> ( <%=Prismomsex%> )</option>

<%
rs.movenext
loop
Else

Response.write "Ingen opgraderinger tilgængelige, ring for opgradering."

End if
%>

<input type="hidden" name="Quantity" value="1">
  <input type="hidden" name="Action" value="AddItem">
  <input type="hidden" name="Price" value="<%=Prismomsex%>">
  <input type="hidden" name="ProductID" value="<%=Varenrkabinet%>">
  <input type="hidden" name="ProductName" value="*<%=kabinet%>">
  <input type="submit" value="Send"><input type="reset" value="Nulstil" name="B2">
</select>
</form>

</body>
Avatar billede cesil Nybegynder
16. juli 2004 - 11:22 #30
har du en url hvor jeg kan se det. jeg vil gerne lige se den html du får genereret.
Avatar billede cesil Nybegynder
16. juli 2004 - 11:23 #31
ellers post lige html'en her
Avatar billede gommasch Nybegynder
16. juli 2004 - 11:35 #32
Kan du bruge en "Vis kilde" på den ?
Avatar billede cesil Nybegynder
16. juli 2004 - 11:35 #33
ja nemlig
Avatar billede gommasch Nybegynder
16. juli 2004 - 11:38 #34
Her er configframe.asp før jeg sender til shopcart.

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kabinet</title>
</head>
<body>

<form method="get" action="shopcart2.asp" target="_self">
<select name="D1">"
Pris før ændringer: Kr. 7395,00 ( 5.916,00 )<BR><BR>Kabinet<BR><option selected>Vælg</option>

<option value="Aopen H700B, FullTower, ATX, sort/sølv,200,00,160,00">Aopen H700B, FullTower, ATX, sort/sølv200,00 ( 160,00 )</option>



<option value="Aopen QF50A, MidiTower, ATX, sort/sølv,-300,00,-240,00">Aopen QF50A, MidiTower, ATX, sort/sølv-300,00 ( -240,00 )</option>



<option value="Aopen H450B MicroTower, MATX, sort/sølv,-400,00,-320,00">Aopen H450B MicroTower, MATX, sort/sølv-400,00 ( -320,00 )</option>



<input type="hidden" name="Quantity" value="1">
  <input type="hidden" name="Action" value="AddItem">
  <input type="hidden" name="Price" value="-320,00">
  <input type="hidden" name="ProductID" value="kab-h450b">
  <input type="hidden" name="ProductName" value="*Aopen H450B MicroTower, MATX, sort/sølv">
  <input type="submit" value="Send"><input type="reset" value="Nulstil" name="B2">
</select>
</form>

</body>
</html>
Avatar billede cesil Nybegynder
16. juli 2004 - 11:46 #35
du skal have rettet html fejl først. Din form skal se sådan her ud når du er færdig. Før kan vi ikke være sikre på at du får værdierne over som du skal

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kabinet</title>
</head>
<body>

<form method="get" action="shopcart2.asp" target="_self">

Pris før ændringer: Kr. 7395,00 ( 5.916,00 )<BR><BR>Kabinet<BR>

<select name="D1">"
    <option selected>Vælg</option>
    <option value="Aopen H700B, FullTower, ATX, sort/sølv,200,00,160,00">Aopen H700B, FullTower, ATX, sort/sølv200,00 ( 160,00 )</option>
    <option value="Aopen QF50A, MidiTower, ATX, sort/sølv,-300,00,-240,00">Aopen QF50A, MidiTower, ATX, sort/sølv-300,00 ( -240,00 )</option>
    <option value="Aopen H450B MicroTower, MATX, sort/sølv,-400,00,-320,00">Aopen H450B MicroTower, MATX, sort/sølv-400,00 ( -320,00 )</option>
</select>


<input type="hidden" name="Quantity" value="1">
  <input type="hidden" name="Action" value="AddItem">
  <input type="hidden" name="Price" value="-320,00">
  <input type="hidden" name="ProductID" value="kab-h450b">
  <input type="hidden" name="ProductName" value="*Aopen H450B MicroTower, MATX, sort/sølv">
  <input type="submit" value="Send"><input type="reset" value="Nulstil" name="B2">
</form>

</body>
</html>

overskriften stod inde i din select
afslut af select stor forkert

en anden ting er at skilletegnet skal skiftes ud med fx ;
Hvis der er komma i det du fører med over vil den tro den skal splitte der og det vil give en fejl.

<option value="<%=rs("kabinet")%>;<%=Prismoms%>;<%=Prismomsex%>"><%=rs("kabinet")%> <%=Prismoms%> ( <%=Prismomsex%> )</option>

tabel = split(request.querystring("D1"),";")
kabinet = tabel(0)
prismoms = tabel(1)
prismomsex = tabel(2)
Avatar billede gommasch Nybegynder
16. juli 2004 - 12:05 #36
Ny HTML efter ændringer:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Kabinet</title>
</head>
<body>

<form method="get" action="shopcart2.asp" target="_self">

Pris før ændringer: Kr. 7395,00 ( 5.916,00 )<BR><BR>Kabinet<BR><select name="D1"><option selected>Vælg</option>

<option value="Aopen H700B, FullTower, ATX, sort/sølv;200,00;160,00">Aopen H700B, FullTower, ATX, sort/sølv200,00 ( 160,00 )</option>

<option value="Aopen QF50A, MidiTower, ATX, sort/sølv;-300,00;-240,00">Aopen QF50A, MidiTower, ATX, sort/sølv-300,00 ( -240,00 )</option>

<option value="Aopen H450B MicroTower, MATX, sort/sølv;-400,00;-320,00">Aopen H450B MicroTower, MATX, sort/sølv-400,00 ( -320,00 )</option>

</select>
<input type="hidden" name="Quantity" value="1">
  <input type="hidden" name="Action" value="AddItem">
  <input type="hidden" name="Price" value="-320,00">
  <input type="hidden" name="ProductID" value="kab-h450b">
  <input type="hidden" name="ProductName" value="*Aopen H450B MicroTower, MATX, sort/sølv">
  <input type="submit" value="Send"><input type="reset" value="Nulstil" name="B2">

</form>
</body>
</html>
Avatar billede gommasch Nybegynder
16. juli 2004 - 12:10 #37
Stadig samme fejl ved tryk på SEND:
Microsoft VBScript runtime error '800a0009'
Subscript out of range: '[number: 0]'
/shopcart2.asp, line 11


Hvis jeg på fejlsiden højreklikker og lægger genvej på skrivebord bliver URL'en:

http://mit.domæne/shopcart2.asp?D1=Aopen+H700B%2C+FullTower%2C+ATX%2C+sort%2Fs%F8lv%3B200%2C00%3B160%2C00&Quantity=1&Action=AddItem&Price=-320%2C00&ProductID=kab-h450b&ProductName=*Aopen+H450B+MicroTower%2C+MATX%2C+sort%2Fs%F8lv

Så den skiller vel egentlig godt nok. Den sender bare values på sidst fundne vare.
Avatar billede cesil Nybegynder
16. juli 2004 - 21:31 #38
prøv lige i din form at æmdre method til post istedet for get.
Avatar billede gommasch Nybegynder
16. juli 2004 - 23:20 #39
Sorry, er lige kommet ind ad døren.

Ved POST:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ny side 1</title>
</head>

<body>
-320,00<BR>kab-h450b<BR>*Aopen H450B MicroTower, MATX, sort/sølv<BR><HR><BR><BR><BR>

</body>
</html>
Avatar billede cesil Nybegynder
18. juli 2004 - 20:13 #40
Hvad er det du poster der?
er det indeholdet af D1?
Hvis det er er vi da ved at være der.
Prøv lige som jeg skrev tidligere at ændre skilletegnet til ;  både i din select og når værdierne hives ud med en split.
Avatar billede gommasch Nybegynder
19. juli 2004 - 07:17 #41
Er allerede gjort.

Siden som poster:

<body>
<form method="post" action="shopcart2.asp" target="_self">

<%
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/database/hovedmenu.mdb")
Set myCon = Server.CreateObject("ADODB.Connection")
myCon.Open strDSN

Varenr = request.querystring("varenr")

SQL = "SELECT (SELECT pris  FROM produkter where config.varenr=produkter.varenr) AS Prispc, (SELECT varenavn  FROM produkter WHERE varenr=kabinet) AS Kabinet, (SELECT pris  FROM produkter where varenr=kabinet) AS Priskabinet, (SELECT pris FROM produkter WHERE varenr=xkabinet) AS Prisxkabinet, (SELECT Varenr FROM produkter where varenr=kabinet) AS Varenrkabinet FROM Produkter INNER JOIN Config ON Produkter.Varenr=Config.Varenr WHERE Config.Varenr='" & varenr & "' AND (SELECT webstatus FROM produkter WHERE varenr=kabinet)='www'"

Set rs = mycon.Execute(SQL)
If not (rs.BOF or rs.EOF) Then

Response.Write "Pris før ændringer: Kr. " & rs("prispc")*1.25 & ",00" & " ( " & FormatNumber(rs("prispc"),2) & " )" & "<BR>" & "<BR>"
Response.Write "Kabinet" & "<BR>"

response.write "<select name=""D1"">"
response.write "<option selected>Vælg</option>"

Do while not rs.EOF
    prispc=rs("prispc")*1.25
    Prismoms = FormatNumber(((rs("priskabinet")-rs("prisxkabinet"))*1.25),2)
    Prismomsex = FormatNumber(rs("priskabinet")-rs("prisxkabinet"),2)
    kabinet = rs("kabinet")
    varenrkabinet = rs("Varenrkabinet")
%>

<option value="<%=rs("kabinet")%>;<%=Prismoms%>;<%=Prismomsex%>"><%=rs("kabinet")%> <%=Prismoms%> ( <%=Prismomsex%> )</option>

<%
rs.movenext
loop
Else
Response.write "Ingen opgraderinger tilgængelige, ring for opgradering."
End if
%>

</select>
<input type="hidden" name="Quantity" value="1">
  <input type="hidden" name="Action" value="AddItem">
  <input type="hidden" name="Price" value="<%=Prismomsex%>">
  <input type="hidden" name="ProductID" value="<%=Varenrkabinet%>">
  <input type="hidden" name="ProductName" value="*<%=kabinet%>">
  <input type="submit" value="Send"><input type="reset" value="Nulstil" name="B2">
</form>
</body>

Siden som modtager:
<body>
<%
tabel = split(request.form("D1"),";")
kabinet = tabel(0)
prismoms = tabel(1)
prismomsex = tabel(2)

response.write(request.form("price")) & "<BR>"
response.write(request.form("productid")) & "<BR>"
response.write(request.form("productname")) & "<BR>"

response.write "<HR>"

response.write(request.form("kabinet")) & "<BR>"
response.write(request.form("prismoms")) & "<BR>"
response.write(request.form("prismomsex")) & "<BR>"
%>

</body>
Avatar billede gommasch Nybegynder
20. juli 2004 - 07:37 #42
Jeg har løst problemet på anden vis, måtte undvære dropdown box :-(
Men tak for indsatsen alligevel.
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