|
| Bestillingsformular Fra : Erik Ginnerskov |
Dato : 10-11-04 22:22 |
| | |
Per Rasmussen (10-11-2004)
| Kommentar Fra : Per Rasmussen |
Dato : 10-11-04 22:38 |
|
Erik Ginnerskov wrote in dk.edb.internet.webdesign.serverside.asp:
> Hej NG
>
> Scriptet kan ses på http://hjemmesideskolen.dk/test/mail_sender.html
>
> Men jeg er ikke så skarp til asp, som jeg gerne ville være. ;(
>
> Jeg behøver hjælp til at definere de variabler, der skal kunne vælges fra de
> to select-bokse og til at opsamle de rigtige variabler til videresendelse.
Prøv at kikke på: http://www.dimac.net/Products/w3Jmail/start.htm
der har jeg tidligere fundet god hjælp.
PerR
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
JH (11-11-2004)
| Kommentar Fra : JH |
Dato : 11-11-04 13:45 |
|
Erik Ginnerskov wrote:
> Jeg behøver hjælp til at definere de variabler, der skal kunne vælges fra de
> to select-bokse og til at opsamle de rigtige variabler til videresendelse.
Hej Erik
Først og fremmest kan jeg ikke rigtig gennemskue hvad
"w3.upload"-objektet skal bruges til? Jeg kender ikke dette objekt (og
heller ikke jmail.message), så jeg ved ikke hvad fx. upload.form("navn")
gør, udover jeg vil gætte på at du får værdien af input-feltet "navn".
Og derudover gætter jeg igen på at dette objekt bruges ifm. upload af filer.
Hvad sker der, hvis du fjerner alt undtaget:
<%
Set upload = Server.CreateObject( "w3.Upload" )
response.write "!" & upload("navn") & "!"
%>
En metode er at du i din HTML-side (med formularen) skal du give dine
formelementer en "name" attribut, fx:
<input id="navn" name="navn" type="text">
Derudover skal du i dine dropdownlister indsætte en "name"-attribut:
<select id="adr" name="adr">
og du skal indsætte en "value"-attribut i dine <option>-tags:
<option id="a01" value="a01">Nyborg</option>
<option id="a02" value="a02">Kerteminde</option>
Nu kan du så på din asp-side trække værdierne ud af felterne:
request("navn")
request("adr")
osv.
Og så kan det være at w3-objektet er overflødigt (så vidt jeg kan se).
Dvs dette:
name = upload.Form("navn")
title = upload.Form("titel")
senderEmail = upload.Form("mail")
tlf = upload.Form("tlf")
ptlf = upload.Form("ptlf")
mob = upload.Form("mob")
andet = upload.Form("andet")
info = upload.Form("info")
skal ændres til:
name = request("navn")
title = request("titel")
senderEmail = request("mail")
tlf = request("tlf")
ptlf = request("ptlf")
mob = request("mob")
andet = request("andet")
info = request("info")
Mvh
Jeppe
| |
Erik Ginnerskov (11-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 11-11-04 18:20 |
|
JH wrote:
> Først og fremmest kan jeg ikke rigtig gennemskue hvad
> "w3.upload"-objektet skal bruges til? Jeg kender ikke dette objekt (og
> heller ikke jmail.message), så jeg ved ikke hvad fx.
> upload.form("navn") gør, udover jeg vil gætte på at du får værdien af
> input-feltet "navn".
Jeg er som før nævnt ikke asp-haj. Koderne står i det asp-script, der kører
min egen kontaktside på http://hjemmesideskolen.dk/kontakt.asp
> Hvad sker der, hvis du fjerner alt undtaget:
> <%
> Set upload = Server.CreateObject( "w3.Upload" )
> response.write "!" & upload("navn") & "!"
> %>
Ingen ide, lige nu. det må jeg kigge på i morgen på arbejde.
> En metode er at du i din HTML-side (med formularen) skal du give dine
> formelementer en "name" attribut, fx:
>
> <input id="navn" name="navn" type="text">
Det vil jeg straks i morgen tidlig tilføje de respektive steder.
> Og så kan det være at w3-objektet er overflødigt (så vidt jeg kan se).
> Dvs dette:
> name = upload.Form("navn")
> title = upload.Form("titel")
> senderEmail = upload.Form("mail")
> tlf = upload.Form("tlf")
> ptlf = upload.Form("ptlf")
> mob = upload.Form("mob")
> andet = upload.Form("andet")
> info = upload.Form("info")
>
> skal ændres til:
>
> name = request("navn")
> title = request("titel")
> senderEmail = request("mail")
> tlf = request("tlf")
> ptlf = request("ptlf")
> mob = request("mob")
> andet = request("andet")
> info = request("info")
Det forenkler det hele lidt. Men nu et par tillægsspørgsmål:
Valgboksen med Afdelinger skal pege på nogle 'tolinjede' variabler, eks.:
Thomas B. Thrigesgade 586
5000 Odense C
Kan det så sættes i variabeldefinitionen sådan:
a03 = ("Thomas B. Thrigesgade 586") & vbCrLf & ("5000 Odense C")
.... og vil det så indsætte teksten i to linjer i den mail, der genereres af
asp-scriptet?
Og hvordan får jeg scriptet til - ud fra valget i valgboksen - at indsætte
den rigtige variabel i mailen?
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
JH (11-11-2004)
| Kommentar Fra : JH |
Dato : 11-11-04 19:07 |
|
Erik Ginnerskov wrote:
> Jeg er som før nævnt ikke asp-haj. Koderne står i det asp-script, der kører
> min egen kontaktside på http://hjemmesideskolen.dk/kontakt.asp
Nejnej, vi er jo alle startet et sted
>>Hvad sker der, hvis du fjerner alt undtaget:
>><%
>>Set upload = Server.CreateObject( "w3.Upload" )
>>response.write "!" & upload("navn") & "!"
>>%>
>
> Ingen ide, lige nu. det må jeg kigge på i morgen på arbejde.
OK, grunden til jeg gerne vil vide hvad der sker er, at jeg ikke kender
w3-objektet. Har du evt. et link dokumentation/producent?
> Det forenkler det hele lidt. Men nu et par tillægsspørgsmål:
>
> Valgboksen med Afdelinger skal pege på nogle 'tolinjede' variabler, eks.:
>
> Thomas B. Thrigesgade 586
> 5000 Odense C
Vi skal lige være enige om at ovenstående ikke er en variabel, men
derimod en værdi. Denne værdi kan så lægges i en variabel;
<%
minVar = "Thomas B."
%>
eller kan være en værdi i dir input-tag:
<input id="navn" name="navn" type="text" value="Thomas B.">
eller dit option-tag:
<option id="a01" value="Thomas B.">Odense</option>
> Kan det så sættes i variabeldefinitionen sådan:
>
> a03 = ("Thomas B. Thrigesgade 586") & vbCrLf & ("5000 Odense C")
>
> ... og vil det så indsætte teksten i to linjer i den mail, der genereres af
> asp-scriptet?
Det kommer lidt an på hvilken slags mail du vil sende. Hvis det er en
HTML-mail, kan du blot gøre sådan:
<select id="adr" name="adr">
<option id="a01" value="Thomas B. Thrigesgade 586<br>5000 Odense
C">Odense</option>
</select>
og så kan blot indsætte request("adr") direkte i din mail:
msg.Body = "Dato " & Date & " afdeling " & request("adr")
Jeg er ikke helt sikker på hvordan man laver linieskift hvis det er en
text-mail, men det ser ud til at "vbCrLf" kan bruges.
Alternativt kan du gøre:
<select id="adr" name="adr">
<option id="a01" value="Thomas B. Thrigesgade 586¤¤¤5000 Odense
C">Odense</option>
</select>
og så på din asp-side:
msg.Body = "Dato " & Date & " afdeling " & replace(request("adr"),
"¤¤¤", vbCrLf)
eller
msg.Body = "Dato " & Date & " afdeling " & replace(request("adr"),
"¤¤¤", "<br>")
hvis det er en HTML-mail
En 3. mulighed er blot at have "nøgler" som værdier i dine options:
<select id="adr" name="adr"><option>Vælg afdeling</option>
<option id="a01" value="1">Nyborg</option>
<option id="a02" value="2">Kerteminde</option>
<option id="a03" value="3">Odense</option>
<option id="a04" value="4">Bogense</option>
<option id="a05" value="5">Middelfart</option>
<option id="a06" value="6">Assens</option>
<option id="a07" value="7">Faaborg</option>
<option id="a08" value="8">Svendborg</option>
<option id="a09" value="9">Ringe</option>
</select>
og så i din asp-side:
vej = ""
by = ""
select case request("adr")
case "1":
vej = "..."
by = "..."
case "2":
vej = "..."
by = "..."
case "3":
vej = "Thomas B. Thrigesgade 586"
by = "5000 Odense C"
case "4":
vej = "..."
by = "..."
case "5":
vej = "..."
by = "..."
case "6":
vej = "..."
by = "..."
case "7":
vej = "..."
by = "..."
case "8":
vej = "..."
by = "..."
case "9":
vej = "..."
by = "..."
msg.Body = "Dato " & Date & vbCrLf
msg.Body = msg.Body & "Vej " & vej & vbCrLf
msg.Body = msg.Body & "By " & by & vbCrLf
Løsning nr. 3 kræver naturligvis at du skal rette 2 steder, når du
opretter en ny afdeling, men det giver måske lidt mere fleksibilitet.
Hvis nu du hentede listen over afdelinger fra en database, ville det
være løsning 3, der ville være at foretrække, og hele
"select..."-blokken kunne droppes til fordel fra et database-kald i stil
med:
"SELECT vej, by FROM navn_på_tabel_med_afdelinger WHERE id=" &
request("adr")
> Og hvordan får jeg scriptet til - ud fra valget i valgboksen - at indsætte
> den rigtige variabel i mailen?
name="adr" i dit select-tag, betyder at ved at bruge request("adr") i
dit asp-script, henter du den værdien fra value-atrributten i det
option-tag, der er valgt.
Håber det kunne bruges, ellers spørg bare løs, hvis noget skal uddybes.
Mvh
Jeppe
| |
Erik Ginnerskov (11-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 11-11-04 22:35 |
|
JH wrote:
> Nejnej, vi er jo alle startet et sted
Men jeg håber da på at komme lidt videre i løbet af vinteren.
> OK, grunden til jeg gerne vil vide hvad der sker er, at jeg ikke
> kender w3-objektet. Har du evt. et link dokumentation/producent?
Den kan du sikkert bladre dig frem til på azero.dk - søg på jmail
>> Thomas B. Thrigesgade 586
>> 5000 Odense C
>
> Vi skal lige være enige om at ovenstående ikke er en variabel, men
> derimod en værdi. Denne værdi kan så lægges i en variabel;
> En 3. mulighed er blot at have "nøgler" som værdier i dine options:
> <select id="adr" name="adr"><option>Vælg afdeling</option>
> <option id="a01" value="1">Nyborg</option>
> <option id="a02" value="2">Kerteminde</option>
> <option id="a03" value="3">Odense</option>
> <option id="a04" value="4">Bogense</option>
> <option id="a05" value="5">Middelfart</option>
> <option id="a06" value="6">Assens</option>
> <option id="a07" value="7">Faaborg</option>
> <option id="a08" value="8">Svendborg</option>
> <option id="a09" value="9">Ringe</option>
> </select>
> og så i din asp-side:
> vej = ""
> by = ""
> select case request("adr")
> case "1":
> vej = "..."
> by = "..."
> case "3":
> vej = "Thomas B. Thrigesgade 586"
> by = "5000 Odense C"
> case "4":
> vej = "..."
> by = "..."
> case "9":
> vej = "..."
> by = "..."
>
> msg.Body = "Dato " & Date & vbCrLf
> msg.Body = msg.Body & "Vej " & vej & vbCrLf
> msg.Body = msg.Body & "By " & by & vbCrLf
>
> Løsning nr. 3 kræver naturligvis at du skal rette 2 steder, når du
> opretter en ny afdeling, men det giver måske lidt mere fleksibilitet.
Det er den løsning, jeg er blevet bedt om at lave. Jeg selv ville bare lade
burgerne se et par simple inputfelter, men ledelsen frygter en masse rod med
ukorrekte adresser på medarbejdernes visitkort. Derfor skal man bare kunne
pege på den afdeling, man arbejder i, hvorefter en foruddefineret adresse
bliver skrevet på visitkortet.
> Hvis nu du hentede listen over afdelinger fra en database, ville det
> være løsning 3, der ville være at foretrække, og hele
> "select..."-blokken kunne droppes til fordel fra et database-kald
Så lang tid bliver jeg ikke undt til at få projektet op at køre. Det skulle
gerne være køreklar næste fredag :(
>> Og hvordan får jeg scriptet til - ud fra valget i valgboksen - at
>> indsætte den rigtige variabel i mailen?
>
> name="adr" i dit select-tag, betyder at ved at bruge request("adr") i
> dit asp-script, henter du den værdien fra value-atrributten i det
> option-tag, der er valgt.
>
> Håber det kunne bruges, ellers spørg bare løs, hvis noget skal
> uddybes.
Jeg er kommet i tanker om endnu et enkelt spørgsmål: Hvordan undgår jeg, at
scriptet fejler, hvis ikke alle felter er udfyldt? - det er kun de med *
markerede felter, der absolut skal udfyldes. En request vil vel ikke tillade
en tom værdi.
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
JH (12-11-2004)
| Kommentar Fra : JH |
Dato : 12-11-04 00:10 |
|
Erik Ginnerskov wrote:
>>OK, grunden til jeg gerne vil vide hvad der sker er, at jeg ikke
>>kender w3-objektet. Har du evt. et link dokumentation/producent?
>
>
> Den kan du sikkert bladre dig frem til på azero.dk - søg på jmail
Nej, ikke jmail-objektet, men w3-objektet:
Server.CreateObject( "w3.Upload" )
Dette objekt kan jeg ikke se hos Azero.
http://azero.dk/support/programmering/asp/komponenter/
Skal det køre på et site hostet af Azero?
Forøvrigt skriver Azero:
Server.CreateObject("JMail.SMTPMail")
og ikke
Server.CreateObject("JMail.Message")
som i din kode, ved du hvad forskellen er?
> Det er den løsning, jeg er blevet bedt om at lave. Jeg selv ville bare lade
> burgerne se et par simple inputfelter, men ledelsen frygter en masse rod med
> ukorrekte adresser på medarbejdernes visitkort. Derfor skal man bare kunne
> pege på den afdeling, man arbejder i, hvorefter en foruddefineret adresse
> bliver skrevet på visitkortet.
Det er altså løsning nr. 3 du vil lave? Det er i hvert fald den mest
robuste. En *rigtig* god grund til at vælge denne løsning er at du har
100% styr de værdier der sendes til din asp-side. Det er en del af
validering af userinput. Hvis du brugte een af de andre to metoder jeg
foreslog, kan du risikere at der bliver 'fusket' med værdierne.
> Så lang tid bliver jeg ikke undt til at få projektet op at køre. Det skulle
> gerne være køreklar næste fredag :(
Det er ellers meget simpelt, men alting er jo let når man ved hvordan,
så jeg synes du skal starte med ovenstående, så kan du jo altid
videreudvikle, hvis det skal være.
> Jeg er kommet i tanker om endnu et enkelt spørgsmål: Hvordan undgår jeg, at
> scriptet fejler, hvis ikke alle felter er udfyldt? - det er kun de med *
> markerede felter, der absolut skal udfyldes. En request vil vel ikke tillade
> en tom værdi.
En god ide er at starte med at læse alle værdierne ind i nogle variabler
(som du også har gjort), fx:
name = request("navn")
adr = request("adr")
Det næste er nu at tjekke at værdierne af disse variabler rent faktisk
indeholde det du mener de skal/kan indeholde, fx:
if len(name)<1 then
errMsg = "Navn skal udfyldes."
end if
eller:
if not isnumeric(adr) then
errMsg = "Du skal vælge en afdeling."
else
select case cint(adr)
case 1:
vej = "..."
by = "..."
case 2:
vej = "..."
by = "..."
case 3:
vej = "Thomas B. Thrigesgade 586"
by = "5000 Odense C"
case 4:
vej = "..."
by = "..."
case 5:
vej = "..."
by = "..."
case 6:
vej = "..."
by = "..."
case 7:
vej = "..."
by = "..."
case 8:
vej = "..."
by = "..."
case "9":
vej = "..."
by = "..."
case else:
errMsg = "Du må ikke fuske med værdierne "
end select
end if
end if
Det hele bliver pænest af at pakke det ind i nogle metoder, og så kan
jeg anbefale at samle det hele i 1 asp-side, så kan du nemt vise
fejlbeskeder fx ovenover din html-form.
Mvh
Jeppe
| |
Erik Ginnerskov (12-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 12-11-04 06:57 |
|
JH wrote:
>> Den kan du sikkert bladre dig frem til på azero.dk - søg på jmail
>
> Nej, ikke jmail-objektet, men w3-objektet:
> Server.CreateObject( "w3.Upload" )
> Dette objekt kan jeg ikke se hos Azero.
> http://azero.dk/support/programmering/asp/komponenter/
Jeg må prøve at finde det i løbet af weekenden.
> Skal det køre på et site hostet af Azero?
Nej, min klient kører sin egen server.
> Forøvrigt skriver Azero:
> Server.CreateObject("JMail.SMTPMail")
> og ikke
> Server.CreateObject("JMail.Message")
> som i din kode, ved du hvad forskellen er?
Ikke den ringeste anelse. Men det virker på min egen formular.
>> Så lang tid bliver jeg ikke undt til at få projektet op at køre. Det
>> skulle gerne være køreklar næste fredag :(
>
> Det er ellers meget simpelt, men alting er jo let når man ved hvordan,
> så jeg synes du skal starte med ovenstående, så kan du jo altid
> videreudvikle, hvis det skal være.
Det fremmer også porduktudviklingen, når man løbende kan afprøve øndringer,
hvilket jeg ikke har adgang til - endnu? ;(
Jeg er kun korttidsansat og der er åbenbart grænser for, hvad man vil betro
mig, uagtet projektets natur.
> Det hele bliver pænest af at pakke det ind i nogle metoder, og så kan
> jeg anbefale at samle det hele i 1 asp-side, så kan du nemt vise
> fejlbeskeder fx ovenover din html-form.
Så bliver det vel noget med at ændre i action til
action"visitkort.asp?id=submit" eller noget i den retning?
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
JH (12-11-2004)
| Kommentar Fra : JH |
Dato : 12-11-04 12:10 |
|
Erik Ginnerskov wrote:
> Så bliver det vel noget med at ændre i action til
> action"visitkort.asp?id=submit" eller noget i den retning?
Ja, det kan lade sig gøre, men når nu du bruger POST i din formular, vil
jeg foreslår du bruger et hidden field, fx:
<input type="hidden" name="command" value="send" />
Dvs. noget i retning af:
<%
if request("command")="send" then
'gør noget (validering, send mail osv)
end if
%>
....
<html>
....
<form method="post" action="mail_sender.asp">
<input type="hidden" name="command" value="send" />
....
</form>
....
</html>
Mht. at vise fejlbeskeder kan du gøre noget i retning af:
<%
if request("command")="send" then
dim errMsg, name, phone
errMsg = ""
name = request("name")
phone = request("phone")
function validate()
if len(name)<1 then
errMsg = errMsg & "Du skal indtaste dit navn.¤¤¤"
end
if len(phone)<1 then
errMsg = errMsg & "Du skal indtaste dit telefonnr.¤¤¤"
end
end function
function sendmail()
end function
if len(errMsg)<1 then
sendmail
end if
end if
%>
....
<html>
....
<%
if len(errMsg)>0 then
response.write replace(errMsg, "¤¤¤", "<br>")
end if
%>
<form method="post" action="mail_sender.asp">
<input type="hidden" name="command" value="send" />
<label for="navn">Navn: *</label><input id="navn" name="navn"
type="text"><br>
<label for="tlf">Tlf.: *</label><input id="tlf" name="tlf" type="text"><br>
....
</form>
....
</html>
Mvh
Jeppe
| |
Erik Ginnerskov (13-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 13-11-04 12:35 |
| | |
JH (13-11-2004)
| Kommentar Fra : JH |
Dato : 13-11-04 15:31 |
|
Erik Ginnerskov wrote:
> Jeg har nu fra egen server lavet en test af det foreløbige.
I din asp-side modtager du værdier som strings (request("xxx")), men du
laver en cint på adr. Enten skal du ændre din HTML og fjerne "0":
<option value="1">Nyborg</option>
og derudover lave:
case 1:
eller du skal fjerne isnumeric-if-sætningen og cint.
Prøv også og lav:
response.write "!" & msg.Body & "!"
umiddelbart inden du sender mail'en. Hvad siger dette?
Du skriver:
if len(tal)<1 then
men jeg kan ikke se variablen "tal" er defineret, så hvad indeholder "tal"?
Hvis det ikke virker, så prøv også at fjerne de aæt undtagen de mest
simple ting, fjern fx. al validering, select case o.lign, så du er
sikker på at du får overført værdierne rigtigt. Prøv derefter stille og
rolig at bygge een ting på ad gangen, mens du hele tiden tester at det
virker.
Mvh
Jeppe
| |
Erik Ginnerskov (13-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 13-11-04 22:24 |
| | |
Erik Ginnerskov (14-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 14-11-04 12:12 |
| | |
JH (14-11-2004)
| Kommentar Fra : JH |
Dato : 14-11-04 19:28 |
|
Erik Ginnerskov wrote:
> Jeg har nu forsøgt at opsamle data fra valget af antal. Men der sker hverken
> test af manglende valg eller registrering af et foretaget valg.
>
> formular:
> http://www.hjemmesideskolen.dk/test/visitkort.html
>
> mail_sender.asp:
> http://www.hjemmesideskolen.dk/test/mail_sender.html
>
> ... opdateret med de seneste ændringer.
>
> Tilføjelsen i asp sker efter linjen
> andet = request("andet")
> og slutter før linjen
> info = request("info")
> samt tilføjelsen af koden
> "Antal: " & antal & vbCrLf &
> i msg.Body
>
Problemet er at variablen "antal" er tom når du tjekker på hvad længden er:
if len(antal)<1 then
Hvis du havde lavet en response.write, ville du kunne se at den var tom:
response.write antal
Prøv dette:
name = request("navn")
titel = request("titel")
senderEmail = request("mail")
tlf = request("tlf")
ptlf = request("ptlf")
mob = request("mob")
andet = request("andet")
antal = request("antal")
select case antal
case "a":
antal = ("100 stk.")
case "b":
antal = ("200 stk.")
case "c":
antal = ("300 stk.")
case "d":
antal = ("400 stk.")
case "e":
antal = ("500 stk.")
case else:
errMsg = "Du skal vælge et antal."
end select
Denne linie er ændret:
select case antal
Disse linier er fjernet:
if len(antal)<1 then
errMsg = "Du skal vælge et antal."
end if
Denne linie er tilføjet:
antal = request("antal")
Iøvrigt er det rigtig god ide at tilføje disse linier øverst i dine scripts:
<%@ LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<%
'Her kommer dit script
%>
Option Explicit betyder at du SKAL erklære dine variabler, fx:
dim name, titel, senderEmail, tlf
inden du lægger værdier i dem. Dette er med til at sikre at din kode er
mere robust.
Mvh
Jeppe
| |
Erik Ginnerskov (14-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 14-11-04 20:35 |
|
JH wrote:
>> Jeg har nu forsøgt at opsamle data fra valget af antal. Men der sker
>> hverken test af manglende valg eller registrering af et foretaget
>> valg.
> Problemet er at variablen "antal" er tom når du tjekker på hvad
> længden er: if len(antal)<1 then
> Hvis du havde lavet en response.write, ville du kunne se at den var
> tom: response.write antal
Det havde jeg faktisk prøvet, men det gav en scriptfejl - jeg kan ikke se
hvorfor, det er lavet på samme måde som de øvrige Responce.write-sætninger.
> Prøv dette:
>
> name = request("navn")
> titel = request("titel")
> senderEmail = request("mail")
> tlf = request("tlf")
> ptlf = request("ptlf")
> mob = request("mob")
> andet = request("andet")
> antal = request("antal")
> select case antal
> case "a":
> antal = ("100 stk.")
> case "b":
> antal = ("200 stk.")
> case "c":
> antal = ("300 stk.")
> case "d":
> antal = ("400 stk.")
> case "e":
> antal = ("500 stk.")
> case else:
> errMsg = "Du skal vælge et antal."
> end select
Det har jeg nu gjort og får så det valgte antal med i den afsendte mail. Men
scriptet fanger ikke et manglende valg.
> Iøvrigt er det rigtig god ide at tilføje disse linier øverst i dine
> scripts: <%@ LANGUAGE="VBSCRIPT" %>
> <% Option Explicit %>
Det prøver jeg at sætte ind og ser, hvordan det så opfører sig.
Det kan den ikke li'. Jeg får en fejlmelding:
_____
Microsoft VBScript compilation error '800a0400'
Expected statement
/test/mail_sender.asp, line 13
Option Explicit
^_____
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
Erik Ginnerskov (14-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 14-11-04 20:43 |
| | |
JH (14-11-2004)
| Kommentar Fra : JH |
Dato : 14-11-04 21:19 |
|
Erik Ginnerskov wrote:
> Det har jeg nu gjort og får så det valgte antal med i den afsendte mail. Men
> scriptet fanger ikke et manglende valg.
Hvad var den fejl 40 du fandt?
Se iøvrigt mit svar fra 12.11 kl. 12:10 for at se hvordan du kommer
videre med at vise fejlmeddelelser.
>>Iøvrigt er det rigtig god ide at tilføje disse linier øverst i dine
>>scripts: <%@ LANGUAGE="VBSCRIPT" %>
>><% Option Explicit %>
>
>
> Det prøver jeg at sætte ind og ser, hvordan det så opfører sig.
>
> Det kan den ikke li'. Jeg får en fejlmelding:
> _____
> Microsoft VBScript compilation error '800a0400'
>
> Expected statement
>
> /test/mail_sender.asp, line 13
>
> Option Explicit
> ^_____
>
De to linier skal være det øverste på din side. Du må ikke have andre
statements før dem. Jeg kan se fra fejlmeddelelsen at det er i linie 13,
så hvad står der på linierne inden?
Husk også at erklære ALLE dine variabler.
Mvh
Jeppe
| |
Erik Ginnerskov (14-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 14-11-04 22:04 |
|
JH wrote:
> Hvad var den fejl 40 du fandt?
Responsc.write
> Se iøvrigt mit svar fra 12.11 kl. 12:10 for at se hvordan du kommer
> videre med at vise fejlmeddelelser.
Det gemmer jeg lige, indtil jag har fået den til at opsamle alle data uden
vrøvl.
>>> Iøvrigt er det rigtig god ide at tilføje disse linier øverst i dine
>>> scripts: <%@ LANGUAGE="VBSCRIPT" %>
>>> <% Option Explicit %>
>> Det kan den ikke li'. Jeg får en fejlmelding:
>> _____
>> Microsoft VBScript compilation error '800a0400'
>>
>> Expected statement
>>
>> /test/mail_sender.asp, line 13
>>
>> Option Explicit
>> ^_____
> De to linier skal være det øverste på din side. Du må ikke have andre
> statements før dem. Jeg kan se fra fejlmeddelelsen at det er i linie
> 13, så hvad står der på linierne inden?
Jeg havde indsat det i body, over det andet asp-script.
De to kodelinjer var linje 12 og 13 i dokumentet.
Hvis jeg flytter de to linjer op øverst i dokumentet, får jeg denne
fejlmelding:
_____
Microsoft VBScript runtime error '800a01f4'
Variable is undefined: 'msg'
/test/mail_sender.asp, line 15
_____
> Husk også at erklære ALLE dine variabler.
Det prøver jeg da at overholde. Jeg har i øvrigt nu forsøgt at få scriptet
til at sende adressen med i mailen. Men der sker ikke en hujende fis.
Stadig:
formular:
http://www.hjemmesideskolen.dk/test/visitkort.html
mail_sender.asp:
http://www.hjemmesideskolen.dk/test/mail_sender.html
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
JH (14-11-2004)
| Kommentar Fra : JH |
Dato : 14-11-04 22:12 |
|
Erik Ginnerskov wrote:
> Jeg havde indsat det i body, over det andet asp-script.
> De to kodelinjer var linje 12 og 13 i dokumentet.
>
> Hvis jeg flytter de to linjer op øverst i dokumentet, får jeg denne
> fejlmelding:
> _____
>
> Microsoft VBScript runtime error '800a01f4'
>
> Variable is undefined: 'msg'
>
> /test/mail_sender.asp, line 15
> _____
>
OK, nu har placeret dem det rigtige sted. Når du bruger "Option
Explicit" skal du sørge for at erklære dine variabler:
dim name, titel, senderEmail, tlf 'osv...
> Det prøver jeg da at overholde.
Synes jeg ikke jeg kan se i dit script. Jeg kan ikke se "dim ..."?
> Jeg har i øvrigt nu forsøgt at få scriptet
> til at sende adressen med i mailen. Men der sker ikke en hujende fis.
> Stadig:
>
Prøv og skriv:
response.write "msg.body indeholder: " & msg.Body & "<br>"
inden denne linie:
if not msg.Send("websmtp.domæne.dk") then
så vil du se om dine variabler indeholder det de skal. Alternativt kan
du udskrive dem enkeltvis:
response.write "recipient: " & recipient & "<br>"
response.write "name: " & name & "<br>"
response.write "titel: " & titel & "<br>"
response.write "tlf: " & tlf & "<br>"
osv.
Mvh
Jeppe
| |
Erik Ginnerskov (14-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 14-11-04 22:54 |
|
JH wrote:
> OK, nu har placeret dem det rigtige sted. Når du bruger "Option
> Explicit" skal du sørge for at erklære dine variabler:
>
> dim name, titel, senderEmail, tlf 'osv...
Er nu gjort. Mailen bliver afsendt uden vrøvl. Men jeg får stadig ikke
adressen med.
> Prøv og skriv:
> response.write "msg.body indeholder: " & msg.Body & "<br>"
Jeg har faktisk allerede i bunden af scriptet dette:
Response.write "Vej: " & vej & "<br><br>"
Response.write "By: " & by & "<br><br>"
Men variablerne kommer ikke med der heller.
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
JH (14-11-2004)
| Kommentar Fra : JH |
Dato : 14-11-04 23:07 |
|
Erik Ginnerskov wrote:
> JH wrote:
>
>
>>OK, nu har placeret dem det rigtige sted. Når du bruger "Option
>>Explicit" skal du sørge for at erklære dine variabler:
>>
>>dim name, titel, senderEmail, tlf 'osv...
>
>
> Er nu gjort. Mailen bliver afsendt uden vrøvl. Men jeg får stadig ikke
> adressen med.
Adressen er det senderEmail, eller vej/by?
Du mangler i hvert fald:
adr = request("adr") inden:
select case(adr)
ellers er variablen "adr" jo tom.
Her er i hvert fald en fejl (som ikke hænger sammen med ovenstående):
Responce.write "!" Response.write "<p>Bestilling afgivet den " & Date &
" klokken " & Time & "<br><br> <b>Fra: </b>" & name & "<br><br>"
skulle nok have været:
Responce.write "!" & "<p>Bestilling afgivet den " & Date & " klokken " &
Time & "<br><br> <b>Fra: </b>" & name & "<br><br>"
Denne linie bør også fjernes:
Set upload = Server.CreateObject( "w3.Upload" )
Hvis du udskriver alle dine variabler, fx:
response.write "recipient: " & recipient & "<br>"
response.write "name: " & name & "<br>"
response.write "titel: " & titel & "<br>"
response.write "tlf: " & tlf & "<br>"
osv.
indeholder de så alle de værdier du har indtastet på formen?
Mvh
Jeppe
| |
Erik Ginnerskov (15-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 15-11-04 07:17 |
|
JH wrote:
> Adressen er det senderEmail, eller vej/by?
Adressen er vej/by. SenderEmail er den adresse, som BCC skal sendes til og
som skal skrives på visitkortet.
> Du mangler i hvert fald:
> adr = request("adr") inden:
> select case(adr)
> ellers er variablen "adr" jo tom.
Det var lige det, der manglede. Nu kan jeg få adressen og postnr/by med.
> Her er i hvert fald en fejl (som ikke hænger sammen med ovenstående):
> Responce.write "!" Response.write "<p>Bestilling afgivet den " & Date
> & " klokken " & Time & "<br><br> <b>Fra: </b>" & name & "<br><br>"
Der var blevet byttet om på et par linjer kode der. Derfor så det
forvirrende ud. Det er rettet.
> Denne linie bør også fjernes:
> Set upload = Server.CreateObject( "w3.Upload" )
Det viser sig, at den kan undværes, så den er fjernet permanent.
> Hvis du udskriver alle dine variabler, fx:
> response.write "recipient: " & recipient & "<br>"
> response.write "name: " & name & "<br>"
> response.write "titel: " & titel & "<br>"
> response.write "tlf: " & tlf & "<br>"
> osv.
>
> indeholder de så alle de værdier du har indtastet på formen?
Ja, jeg får alle data med nu - ligee bortset fra, at recipient altså er den
adresse, mailen skal sendes til (sikkert trykkeriet), så den skal ikke med i
body. Og hvis jeg beder om at få dem udskrevet på svarsiden, kommer de også
med - det har jeg tjekket af undervejs, efterhånden som jeg føjede flere
variabler til.
Og ved tryk på 'Send bestilling' sendes både til recipient og senderEmail -
sidstnævnte som BCC.
Nu mangler jeg så bare at fange de eventuelt manglende indtastninger af
obligatoriske data. Det må jeg kigge på i aften.
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
JH (15-11-2004)
| Kommentar Fra : JH |
Dato : 15-11-04 19:18 |
|
Erik Ginnerskov wrote:
> Nu mangler jeg så bare at fange de eventuelt manglende indtastninger af
> obligatoriske data. Det må jeg kigge på i aften.
Dejligt, så mangler der lige det sidste.
Mvh
Jeppe
| |
Erik Ginnerskov (15-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 15-11-04 22:12 |
| | |
JH (15-11-2004)
| Kommentar Fra : JH |
Dato : 15-11-04 23:43 |
|
Erik Ginnerskov wrote:
> Jeg har nu forsøgt at indsætte de fejlfanger-funktioner, du beskrev 12/11.
>
> Jeg har på skift prøvet at lade alle fem obligatoriske felter være uden
> indhold/valg. Det fanger ikke noget. Ingen fejlmeddelelser vises. Mailen
> bliver bare sendt uden disse data. ;(
>
> Formular:
> http://hjemmesideskolen.dk/test/visitkort.asp
>
> Scripts:
> http://hjemmesideskolen.dk/test/mail_sender.html
>
Du skal flytte hele logikken til at sende mail ind i din
sendmail-funktion, eller du skal droppe funkionen. Under alle
omstændigheder skal det flyttes ind i din if...:
if request("command")="send" then
dim msg, name, titel.......
set msg = server......
name = request...
...
...
...
end if
Altså hele den blok du viser nederst her:
http://hjemmesideskolen.dk/test/mail_sender.html
Hele dit flow kan skrives med pseudokode:
Hvis der er klikket på Send (command="send")
erklær variabler
læg værdier i variabler
valider indhold af variabler
Hvis indhold af variabler OK
sæt værdier på mail-objektets variabler
hvis mail afsendt
gør noget (fx gå til anden side)
ellers
Sæt fejlbesked
end
ellers
Sæt fejlbesked
end
end
<html>
....
<%
if len(errMsg)>0 then
response.write replace(errMsg, "¤¤¤", "<br>")
end if
%>
<form>
....
</form>
....
</html>
Du kan også pakke din kode ind i funktioner, det gør det lidt pænere, og
så kan du måske genbruge dem:
<%@ LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<%
dim msg, name, titel, adr, vej, by, errMsg, recipient, senderEmail, web,
tlf, ptlf, mob, andet, antal, info, log
if request("command")="send" then
function validate()
if len(name)<1 then
errMsg = errMsg & "Du skal indtaste dit navn.¤¤¤"
end if
if len(adr)<1 then
errMsg = errMsg & "Du skal vælge en afdeling.¤¤¤"
end if
if len(tlf)<1 then
errMsg = errMsg & "Du skal indtaste dit telefonnr.¤¤¤"
end if
if len(mail)<1 then
errMsg = errMsg & "Du skal indtaste din email-adresse.¤¤¤"
end if
if len(antal)<1 then
errMsg = errMsg & "Du skal vælge et antal.¤¤¤"
end if
select case adr
case "1"
vej = "Nyborgvej 81"
by = "5800 Nyborg"
case "2"
vej = "Kertemindevej 82"
by = "5300 Kerteminde"
case "3"
vej = "Odensevej 83"
by = "5000 Odense C"
case "4"
vej = "Bogensevej 84"
by = "5400 Bogense"
case "5"
vej = "Middelfartvej 85"
by = "5500 Middelfart"
case "6"
vej = "Assensvej 86"
by = "5610 Assens"
case "7"
vej = "Faaborgvej 87"
by = "5600 Faborg"
case "8"
vej = "Svendborgvej 88"
by = "5700 Svendborg"
case "9"
vej = "Ringevej 89"
by = "5750 Ringe"
case "10"
vej = "Glamsbjergven 90"
by = "5620 Glamsbjerg"
case "11"
vej = "Tommerupvej 91"
by = "5690 Tommerup"
case "":
errMsg = errMsg & "Du skal vælge en afdeling."
end select
select case antal
case "a":
antal = ("100 stk. ")
case "b":
antal = ("200 stk. ")
case "c":
antal = ("300 stk. ")
case "d":
antal = ("400 stk. ")
case "e":
antal = ("500 stk. ")
case else:
errMsg = errMsg & "Du skal vælge et antal."
end select
if len(errMsg)>0 then
validate = false
else
validate = true
end if
end function
function sendmail()
set msg = Server.CreateOBject( "JMail.Message" )
msg.From = SenderEmail
msg.FromName = Name
msg.AddRecipient Recipient
msg.AddRecipientBCC senderEmail
msg.Subject = "Bestilling af visitkort"
msg.Body = "Bestilling afgivet den " & Date & " klokken " & Time & "
fra: " & recipient & vbCrLf & "Navn: " & name & vbCrLf & "Titel: " &
titel & vbCrLf & "Adresse: " & vej & vbCrLf & "Postnummer og by: " & by
& vbCrLf & "Telefon: +45 " & tlf & vbCrLf & "Mobil: +45 " & mob & vbCrLf
& "Telefon privat: +45 " & ptlf & vbCrLf & "E-mail: " & senderEmail &
vbCrLf & "Website:" & web & vbCrLf &"Særlige ønsker: " & andet & vbCrLf
& "Antal: " & antal & vbCrLf &"Noter: " & info & vbCrLf
if not msg.Send("websmtp.domæne.dk") then
msg.Send("mailrelay.webhotel.dk")
log = msg.log
set msg = nothing
sendmail = false
else
sendmail = true
end if
end function
errMsg = ""
name = request("name")
phone = request("phone")
titel = request("titel")
adr = request("adr")
tlf = reuqest("tlf")
mail = reuqest("mail")
antal= reuqest("antal")
web = (" www.hjemmesideskolen.dk")
ptlf = request("ptlf")
mob = request("mob")
andet = request("andet")
info = request("info")
recipient = ("navn@domæne.dk")
if(validate()) then
if(sendmail()) then
Response.write "<p>Bestilling afgivet den " & Date & " klokken " & Time
& "<br><br> <b>Fra: </b>" & name & "<br><br>"
Response.write "<b>Mail: </b><a href='mailto:" & senderEmail & "'>" &
senderEmail & "</a>"
Response.write "<br><br>Tak for din bestilling. Vi sender snarest et
korrektur til gennemsyn og godkendelse."
Response.write "</p>"
else
response.write log
end if
end if
end if
%>
<html>
....
<body>
<%
if len(errMsg)>0 then
response.write replace(errMsg, "¤¤¤", "<br>")
end if
%>
<form>
....
</form>
....
</html>
Mvh
Jeppe
| |
Erik Ginnerskov (16-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 16-11-04 15:59 |
|
JH wrote:
>> Formular:
>> http://hjemmesideskolen.dk/test/visitkort.asp
>>
>> Scripts:
>> http://hjemmesideskolen.dk/test/mail_sender.html
>>
>
> Du skal flytte hele logikken til at sende mail ind i din
> sendmail-funktion, eller du skal droppe funkionen. Under alle
> omstændigheder skal det flyttes ind i din if...:
>
> if request("command")="send" then
> dim msg, name, titel.......
> set msg = server......
> name = request...
> ...
> ...
> ...
> end if
Jeg har prøvet at flytte den kodeblok til forrest i mail_sender.asp lige
efter <% Option Explicit %> og jag har prøvet at flytte kodeblokken ind i
body lige før det script, der modtager og videresender data. Lige lidt hjælp
det. Ingen fejl bliver fanget.
> Du kan også pakke din kode ind i funktioner, det gør det lidt pænere,
> og så kan du måske genbruge dem:
> <%@ LANGUAGE="VBSCRIPT" %>
> <% Option Explicit %>
> <%
> dim msg, name, titel, adr, vej, by, errMsg, recipient, senderEmail,
> web, tlf, ptlf, mob, andet, antal, info, log
[klip en masse kode]
> end if
> end if
> end if
> %>
> <html>
> ...
> <body>
> <%
> if len(errMsg)>0 then
> response.write replace(errMsg, "¤¤¤", "<br>")
> end if
> %>
> <form>
Det har jeg også prøvet. Det giver denne fejl:
____
Microsoft VBScript runtime error '800a000d'
Type mismatch
/test/visitkort.asp, line 6
____
Linje 6 er:
if request("command")="send" then
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
JH (19-11-2004)
| Kommentar Fra : JH |
Dato : 19-11-04 19:12 |
|
Erik Ginnerskov wrote:
> Jeg har prøvet at flytte den kodeblok til forrest i mail_sender.asp lige
> efter <% Option Explicit %> og jag har prøvet at flytte kodeblokken ind i
> body lige før det script, der modtager og videresender data. Lige lidt hjælp
> det. Ingen fejl bliver fanget.
>
>
>>Du kan også pakke din kode ind i funktioner, det gør det lidt pænere,
>>og så kan du måske genbruge dem:
>
>
>><%@ LANGUAGE="VBSCRIPT" %>
>><% Option Explicit %>
>><%
>>dim msg, name, titel, adr, vej, by, errMsg, recipient, senderEmail,
>>web, tlf, ptlf, mob, andet, antal, info, log
>
> [klip en masse kode]
>
>>end if
>>end if
>>end if
>>%>
>><html>
>>...
>><body>
>><%
>>if len(errMsg)>0 then
>>response.write replace(errMsg, "¤¤¤", "<br>")
>>end if
>>%>
>><form>
>
>
> Det har jeg også prøvet. Det giver denne fejl:
> ____
>
> Microsoft VBScript runtime error '800a000d'
> Type mismatch
> /test/visitkort.asp, line 6
> ____
>
> Linje 6 er:
> if request("command")="send" then
>
Hej Erik
Hvor langt er du kommet med projektet?
Mvh
Jeppe
| |
Erik Ginnerskov (20-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 20-11-04 20:19 |
| | |
terje (13-11-2004)
| Kommentar Fra : terje |
Dato : 13-11-04 18:01 |
|
Erik Ginnerskov wrote:
> Når jeg prøver at sende en bestilling, returnerer scriptet den besked, at
> bestillingen er afsendt. Men den mail, der når frem, indeholder i body kun
> det ene ord 'Noter'.
>
> Forsøg med mangelfuld udfyldning af obligatoriske felter giver ingen
> fejlmelding retur.
Når du gjør en Response.Write på msg.Body *før* eposten sendes, er da
alle verdier med som de skal? I så fall må det være noe feil med JMail
koden nederst i skriptet.
terje
| |
Erik Ginnerskov (13-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 13-11-04 22:32 |
|
terje wrote:
> Når du gjør en Response.Write på msg.Body *før* eposten sendes, er da
> alle verdier med som de skal? I så fall må det være noe feil med JMail
> koden nederst i skriptet.
Responce.Write skriver ikke til den mail, der sendes, men til den svarside,
der sendes til browseren, når bestillingen afsendes.
Men lige nu fungerer asp-scriptet med de data, som det er sat til at modtage
fra formularen til behandling og videresendelse.
Jeg mangler bare at:
1. Få scriptet til at modtage de valgte data fra de to valgbokse (afdeling
og antal)
2. Få scriptet til at give en advarsel og nægte at sende mailen, hvis de
påkrævede (mærket med *) felter er udfyldt.
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk - http://html-faq.dk
http://ginnerskov.frac.dk
| |
Erik Ginnerskov (13-11-2004)
| Kommentar Fra : Erik Ginnerskov |
Dato : 13-11-04 22:39 |
| | |
|
|