Avatar billede fedtmuledk Nybegynder
26. september 2001 - 12:58 Der er 20 kommentarer og
1 løsning

eksperthjælp i asp ønskes - form

jeg er låst fast, jeg har følgende problem:

dette script fungerer som jeg ønsker det, men skal kunne vælge forskellig hardware som hentes fra en database \"konfig.mdb\" og det fungerer som sagt fint. MEN jeg skál nu have lavet en \"bestil\" knap, som sender den besøgende videre til en side som hedder bestil.asp, det er dette som giver mig gråt hår.
På denne side skal man kunne se sin bestilling og trykke på en \"send ordre\" knap, som så sender det valgte i en email til mig.
Er det muligt og hvordan?
-------------




<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<HTML><HEAD><TITLE>dolphin.asp</TITLE>
<META http-equiv=Content-Type content=\"text/html; charset=windows-1252\">
<META content=\"Microsoft FrontPage 4.0\" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId></HEAD>
<BODY topMargin=0><!
<html>
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"DRIVER={Microsoft Access Driver (*.mdb)}; \"
DSN = DSN & \"DBQ=\" & Server.MapPath (\"konfig.mdb\")
Conn.Open DSN
%>
<FORM name=dummy>
<TABLE borderColor=#00ff00 cellSpacing=0 cellPadding=0 align=center border=0>
  <TBODY>
  <%
  strSQL = \"Select * from data Where kode = \'1\'\"
\' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)
%> 
<TR><TD>CPU / Mhz</TD>
      <TD><SELECT style=\"WIDTH: 280px; POSITION: relative\" onchange=opdater() size=1 name=cpu>
<%do%>
<OPTION value=<%Response.Write rs(\"pris\") & \">\" %><% Response.Write rs(\"produkt\") %></OPTION>
<%rs.MoveNext
Loop While Not rs.EOF
%>
</SELECT></TD><TD><INPUT size=9 value=0 name=cpupris> </TD></TR>
<%
\' SQL forespørgsel
strSQL = \"Select * from data Where kode = \'3\'\"
\' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)
%>   
<TR><TD>Ram</TD>
      <TD><SELECT style=\"WIDTH: 280px; POSITION: relative\" onchange=opdater() size=1 name=ram>
<%
do
%>
<OPTION value=<%Response.Write rs(\"pris\") & \">\" %><% Response.Write rs(\"produkt\") %></OPTION>
<%rs.MoveNext
Loop While Not rs.EOF
%>
</SELECT>
</TD>
    <TD><INPUT size=9 value=0 name=rampris> </TD></TR>
<%
\' SQL forespørgsel
strSQL = \"Select * from data Where kode = \'6\'\"
\' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)
%> 
<TR><TD>Harddisk</TD>
      <TD><SELECT style=\"WIDTH: 280px; POSITION: relative\" onchange=opdater() size=1 name=harddisk>
<%
do
%>
<OPTION value=<%Response.Write rs(\"pris\") & \">\" %><% Response.Write rs(\"produkt\") %></OPTION>
<%rs.MoveNext
Loop While Not rs.EOF
%>
</SELECT>
</TD>
    <TD><INPUT size=9 value=0 name=harddiskpris> </TD></TR> 
  <TR>
    <TD colSpan=2><B><FONT color=#ff0000>UDSALG PRIS INCL.
      MOMS</FONT></B></TD>
    <TD><INPUT style=\"FONT-WEIGHT: bold; COLOR: #ff0000\"
      size=8 value=0 name=incl></TD></TR></TBODY></TABLE>
<DIV align=center>
<CENTER>
<P><INPUT onclick=\"return nulstil();\" type=reset value=NULSTIL>
</P></CENTER></DIV></FORM>
<SCRIPT language=javascript>
<!--
function opdater()
{
dummy.cpupris.value          = dummy.cpu.options[dummy.cpu.selectedIndex].value;
dummy.rampris.value          = dummy.ram.options[dummy.ram.selectedIndex].value;
dummy.harddiskpris.value    = dummy.harddisk.options[dummy.harddisk.selectedIndex].value;
dummy.incl.value            = (Math.round(dummy.cpupris.value) + Math.round(dummy.rampris.value)+ Math.round(dummy.harddiskpris.value));

}

opdater();

function nulstil()
{
    document.dummy.reset();
    opdater();
    return false;
}
-->
</SCRIPT>
</BODY></HTML>


Avatar billede mora Nybegynder
26. september 2001 - 13:01 #1
<FORM name=dummy> skal laves om så den sender til en fil <FORM name=dummy action=\"bestil.asp\" method=\"post\">

Lav så en knap til t bestille, <input type=\"submit\" value=\"Bestil\">, evt ved siden af din reset.

i bestil.asp skal du havde en mail sendt ud, hvilke mail komponenter er der på serveren ?

Avatar billede nute Nybegynder
26. september 2001 - 13:04 #2
du requester alle verdiene på neste side  på helt vanlig måte, men tricket er at du kopierer ditt formular, men omgjør alle formelementer til <input type=\"hidden\">. Deretter legger du alle valgte/spesifiserte verdier inn i dine hidden fields samtidig som du skriver dem ut som en liste over valgte/spesifiserte verdier. Så har du så en \"OK\" knapp som igjen submitter ditt formular til en side som sender en mail til deg...

/nute
Avatar billede fedtmuledk Nybegynder
26. september 2001 - 13:05 #3
serveren har jmail, men den skal jo gerne indeholde det valgte resultat
Avatar billede fedtmuledk Nybegynder
26. september 2001 - 13:14 #4
øøøøhh den har også AspMail kunne jeg lige se, hvis det er bedre.
kan jeg ikke lige få dig til at skrive en simpel opsat \"bestil.asp\" side for mig? so jeg kan se princippet.
Avatar billede nute Nybegynder
26. september 2001 - 13:17 #5
et eksempel:

<%
cpu = Request.Form(\"cpu\")
cpupris = Request.Form(\"cpupris\")
ram = Request.Form(\"ram\")
harddisk = Request.Form(\"harddisk\")
harddiskpris = Request.Form(\"harddiskpris\")
incl = Request.Form(\"incl\")
if( Request.ServerVariables(\"REQUEST_METHOD\") = \"post\" ) then
  Set JMail          = Server.CreateObject(\"JMail.SMTPMail\")
  JMail.ServerAddress = \"websmtp.dit-domaene.dk\"
  JMail.Subject      = \"Bestilling\"
  JMail.AddRecipient  \"admin@dit-domaene.dk\"
 
  JMail.Body = \"Harddisk: \" & harddisk & vbcrlf & \"Pris: \" & harddiskpris & vbcrlf & \"Incl: \" & incl & _
                            \"CPU: \" & cpu &  vbcrlf & \"CPUPris: \" & cpupris & vbcrlf & \"ram: \" & ram
 
  JMail.Execute
 
  Set JMail = Nothing
    response.write \"Bestillingen er sendt\"
else
  %>
    Du har bestilt følgende:<br>
    Harddisk: <%= harddisk %><br>
    Pris: <%= harddiskpris %><br>
    incl: <%= incl %>
    CPU: <%= cpu %>
    pris: <%= cpupris %>
    ram: <%= ram %>
    <form name=\"form\" action=\"\" method=\"post\">
    <input type=\"hidden\" name=\"cpu\" value=\"<%= cpu %>\">
    <input type=\"hidden\" name=\"cpupris\" value=\"<%= cpupris %>\">
    <input type=\"hidden\" name=\"ram\" value=\"<%= ram %>\">
    <input type=\"hidden\" name=\"harddisk\" value=\"<%= harddisk %>\">
    <input type=\"hidden\" name=\"harddiskpris\" value=\"<%= harddiskpris %>\">
    <input type=\"hidden\" name=\"incl\" value=\"<%= incl %>\">
    <input type=\"submit\" value=\"Send bestilling\">
    </form>
    <%
end if
%>

/nute
Avatar billede nute Nybegynder
26. september 2001 - 13:18 #6
hov....ser du skrev det var ASPMail istedenfor....well....prinsippet er det samme...

/nute
Avatar billede fedtmuledk Nybegynder
27. september 2001 - 09:57 #7
ØV- det så lige ud til at virke, MEN jeg modtager kun PRIS på \"bestil.asp\" ikke produkt.
hvad er der galt ???
Avatar billede nute Nybegynder
27. september 2001 - 10:35 #8
i denne blokk med kode:

cpu = Request.Form(\"cpu\")
cpupris = Request.Form(\"cpupris\")
ram = Request.Form(\"ram\")
harddisk = Request.Form(\"harddisk\")
harddiskpris = Request.Form(\"harddiskpris\")
incl = Request.Form(\"incl\")

så skal det som står imellom parentesene i Request.Form(\"\") stemme overens med navnene på formfeltene på siden du poster fra.

Har du en side jeg kan se dette på ? Så er det kanskje enklere å dbugge

/nute
Avatar billede fedtmuledk Nybegynder
27. september 2001 - 12:13 #9
kan jeg sende dem til dig pr. mail???
Avatar billede nute Nybegynder
27. september 2001 - 12:25 #10
knut@xperimentum.com
Avatar billede nute Nybegynder
27. september 2001 - 13:34 #11
hmmm....det fungerer da fint for meg...
Avatar billede fedtmuledk Nybegynder
27. september 2001 - 14:40 #12
problemet er, at jeg ikke kan se HVILKET bundkort, HVILKEN ram osv. der er valgt jeg kan kun se pris og samlet pris.
Avatar billede nute Nybegynder
27. september 2001 - 15:55 #13
jo....men det er da klart...i dine selectboxer, så legger du jo prisene i dine \'value\' attributter. Fx i denne loop:

<%
do
%>
<OPTION value=<%Response.Write rs(\"pris\") & \">\" %><% Response.Write rs(\"produkt\") %> ( kr.<% Response.Write rs(\"pris\") %> )</OPTION>
<%rs.MoveNext
Loop While Not rs.EOF
%>

skal du bytte ut:

<OPTION value=<%Response.Write rs(\"pris\") & \">\"

med:

<OPTION value=<%Response.Write rs(\"produkt\") & \">\"

*så* vil du kunne requeste hvilket fx bundkort du har valgt.

/nute
Avatar billede fedtmuledk Nybegynder
27. september 2001 - 16:40 #14
klart klart,
MEN så virker pris sammenlægningen ikke :-(
kan man lave en dobbelt value ?
Avatar billede nute Nybegynder
27. september 2001 - 16:52 #15
oki....så kan du gjøre noe ála dette:

<OPTION value=<%Response.Write rs(\"pris\") & \"#\" & Response.Write rs(\"produkt\") & \">\" %>

Så vil din value attrubutt inne holde noe ála:

100#enTypeMotherboard

det du kan gjøre så , er å splitte opp den verdien du henter ut, ved tegnet #. Så har du plutselig både pris og type i samme request.

Forstår du hvor jeg vil hen ?

/nute
Avatar billede fedtmuledk Nybegynder
28. september 2001 - 00:27 #16
på en måde ja.
men hvordan Request-er du en del af resultatet

????
cpu = Request.Form(\"cpu\")
vil jo give hele strengen, både pris og produkt, og prissammenlægningen på celeron.asp siden skal jo også gerne virke (java scriptet)
er du sikker på at det kan gøres på denne måde??
Avatar billede nute Nybegynder
28. september 2001 - 10:10 #17
du requester hele strengen, ikke bare deler av den, men resultatet du får vil bli noe ála:

100#enTypeMotherBoard

deretter kan du i ASP utføre en SPLIT() på den stringen du får, og referere til prisen og navnet ved å henvise til hhv indexnummer 0 og 1:

<%
arr = SPLIT(Request.Form(\"cpu\"),\"#\")
response.write( \"Cpu pris: \" & arr(0) & \"<br>\")
response.write( \"Cpu: \" & arr(1) & \"<br>\")
%>

Les om SPLIT metoden i ASP her:
http://www.activeserverpages.dk/iishelp/vbscript/htm/vsfctsplit.htm

i JavaScript kan du gjøre det samme, men du skal gjøre det på en litt annen måte:

<script>
val = \"100#enTypeMotherboard\"; // tilsvarer verdien fra din selectedIndex
pris = parseInt(val.substr(0, val.indexOf(\"#\") ) ) + 12;
type = val.substr( val.indexOf(\"#\") + 1 );
</script>

/nute
Avatar billede fedtmuledk Nybegynder
28. september 2001 - 11:47 #18
hej det er bare mig igen, nu bliver det lidt for \"langhåret\" for mig.
TILBUD : du har modtaget de 3 filer fra mig, hvis jeg nu forhøjer pointene til 500 point kunne jeg så ikke lokke dig til at kikke på mine koder og lige strikke det sammen for mig , please ;-)
/fedtmule
Avatar billede nute Nybegynder
28. september 2001 - 11:48 #19
gi meg 20 minutter...
Avatar billede fedtmuledk Nybegynder
29. september 2001 - 13:26 #20
tak for hjælpen.
nu virker det som ønsket
velfortjente point
Avatar billede nute Nybegynder
29. september 2001 - 13:30 #21
det var da godt :)

takk for points...
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