webForumDet fria alternativet

Olika priser beroende på vilket val man gjort

ASP

29 svar · 753 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej! :)

Hur gör man för att kunna välja vilka priser man vill se på en webplats. Exempelvis inklusive eller exklusive moms. Vill att sql-satsen skall vara olika beroende på vilket val man gjort. Valet skall också gälla "hela webplatsen" global kanske det heter???

Tänkte att man antingen kunde klicka på en länk eller använda sig av radiobutton.

Vill att när man skiftar radiobutton skall sidan laddas om...

Några ideér??? :p

Edit.
Såg att Jmedata.se har det jag efterfrågar...

mvh

Medlem sedan juni 200032 967 inlägg
#2

Något sånt här hade nog jag gjort:

<%
if isnumeric(Request.QueryString("pricesetting")) then
	Session("pricesetting") = Cint(Request.QueryString("pricesetting"))
else
	if session("pricesetting") = "" then session("pricesetting") = 0
end if

if session("pricesetting") = 0 then
	' här kör vi SQL-fråga för priser exkl.moms
else
	' SQL-fråga för priser inkl. moms
end if

%>
<form action="sidan.asp" method="get">	
<input type="radio" name="pricesetting" value="1" onclick="this.form.submit();"> inkl. moms<br>
<input type="radio" name="pricesetting" value="0" onclick="this.form.submit();"> exkl. moms<br>
</form>

Men jag hade nog använt en cookie istället för en sessionsvariabel, dock.

mvh

Medlem sedan jan. 20013 582 inlägg
#3

Vad hade jag gjort utan dig.......... :p

Jag funderade just på om jag skulle välja session eller cookie.

Session har ju nackdelen att man kan bli utslängd...

Om jag väljer cookie lagras värdet då tills nästa gång användaren kommer till webplatsen?

Och då kommer ju nästa fråga....

Hur ser cookielösningen ut??
Mvh

Medlem sedan juni 200032 967 inlägg
#4

Om du använder cookies väljer du själv hur länge den ska gälla. För att skapa en session-cookie:

Response.Cookies("sydostel")("pricesetting") = Request.Querystring("pricesetting")

För att själv bestämma giltighetstiden använder du Expires.

Response.Cookies("sydostel").Expires = #2006-01-01#

(Var det sydostel det hette? minns inte så noga, men du vet nog! ;-) )

En session cookie gäller tills webbläsaren stängs, och påverkas alltså inte av timeouter och dylikt.

För att hämta kakvärde:

pricesetting = Request.Cookies("sydostel")("pricesetting")

mvh

Medlem sedan jan. 20013 582 inlägg
#5

:p

...och var ska jag lägga koden??? Har inte jobbat något med cookies innan... :r

Hur får jag hela sidan att laddas om när jag skiftar radiobutton???

Med redirect???

mvh

Medlem sedan juni 200032 967 inlägg
#6

devotion skrev:

...och var ska jag lägga koden??? Har inte jobbat något med cookies innan... :r

Det spelar inte så stor roll, egentligen. I mitt kodexempel ovan kan du byta delen som sätter sessionsvariabel till kod som sätter kaka istället. Jag skulle lagt koden överst på sidan.

Hur får jag hela sidan att laddas om när jag skiftar radiobutton???

Har du testat formuläret i mitt kodexempel?

Medlem sedan jan. 20013 582 inlägg
#7

Nooooooooooooooooop.....

Har inte gjort det än... Mistänkte att du tänkt på det men frågade ändå :r Sorry...

Det är ju tre kodrader

Ska alla läggas överst???

Mycket frågor men jag kan inget om cookies

mvh

Medlem sedan jan. 20013 582 inlägg
#8

Är cookies globala eller vad det heter??? Så jag kan använda dom som vilkor på flera sidor???

mvh

Medlem sedan juni 200032 967 inlägg
#9

En cookie gäller för hela webbplatsen.

Nytt kodexempel:

<%
if isnumeric(Request.QueryString("pricesetting")) then
	Response.Cookies("sydostel")("pricesetting") = Request.QueryString("pricesetting")
	Response.Cookies("sydostel").Expires = #2006-01-01#
end if

if Request.Cookies("sydostel")("pricesetting") = "" then
	pricesetting = 0
else
	pricesetting = cint(Request.Cookies("sydostel")("pricesetting"))
end if

if pricesetting = 0 then
	' här kör vi SQL-fråga för priser exkl.moms
else
	' SQL-fråga för priser inkl. moms
end if

%>
<form action="sidan.asp" method="get">	
<input type="radio" name="pricesetting" value="1" onclick="this.form.submit();"> inkl. moms<br>
<input type="radio" name="pricesetting" value="0" onclick="this.form.submit();"> exkl. moms<br>
</form>
Medlem sedan jan. 20013 582 inlägg
#10

:D

Funkar perfekt!!!

En sista fråga innan jag klarmarkerar denna tråden;

Kan jag välja en av knapparna som "checked" initialt??

Mvh

Medlem sedan juni 200032 967 inlägg
#11

devotion skrev:

Kan jag välja en av knapparna som "checked" initialt??

Ja då!

<input type="radio" name="pricesetting" value="0" onclick="this.form.submit();" checked="checked"> exkl. moms<br>

Men formuläret kommer postas / sidan läses om även om du klickar på den radioknapp som redan är markerad.

Men det kanske du kan leva med?

Medlem sedan jan. 20013 582 inlägg
#12

Jo, det kan jag leva med.... Det spelar inte så stor roll. Ingen alls faktisk!!!

Men jag kom på en annan sak.....

Laddas hela frameseten om eller bara den sidan som jag angivit???

Sidan är uppbyggd med ramar och valet ska ligga i bottomFrame. Nu är det väl så att priserna kommer att visas i mainFrame i de flesta fall. Men hur fungerar det?

Mvh

Medlem sedan jan. 2005108 inlägg
#13

Inflik från amatören... :)

Men formuläret kommer postas / sidan läses om även om du klickar på den radioknapp som redan är markerad.

Borde inte detta lösa det?

<%IF pricesetting = 0 THEN %>
<input type="radio" name="pricesetting" value="1" onclick="this.form.submit();"> inkl. moms<br>
<input type="radio" name="pricesetting" value="0" checked="checked"> exkl. moms<br>
<%ELSE%>
<input type="radio" name="pricesetting" value="1" checked="checked"> inkl. moms<br>
<input type="radio" name="pricesetting" value="0" onclick="this.form.submit();"> exkl. moms<br>
<%END IF%>
Medlem sedan jan. 20013 582 inlägg
#14

Hmmmm..

Har inte testat det...

mvh

Medlem sedan jan. 20013 582 inlägg
#15

:(
Får inte ihop det!!!! x(

Sidan är uppbyggd av tre olika frames; menuFrame.asp, bottomFrame.asp och mainFrame.asp.

bottomFrame har en listmeny som är "kundvagn" , här skall också valet mellan avtal- och nettopriser ligga. I mainFrame presenteras sökresultat och sammanställning av kundvagnen. Dessa filer heter searchResult.asp och cart.asp

När man skiftar mellan avtal- och nettopriser skall mainFrame laddas om med de nya värdena. I varukorgen lagras inga priser så den behöver inte uppdateras.

SQL-satserna ligger i searchResult.asp och cart.asp.

Hur skall koden läggas ut i de olika filerna för att det skall fungera???

Help!!

Mvh

Medlem sedan jan. 2005108 inlägg
#16

Det löser vi. :)

Börja med att lagra adressen till aktuell sida i mainframen i en session.

I början av varje sida som öppnas i mainframe:

<%
sQ = Request.QueryString
sPath = "http://" & Request.ServerVariables("server_name") & Request.ServerVariables("path_info")
if sQ <> "" then sPath = sPath & "?" & sQ
Session.timeout = 120
Session("MainFrameContent") = sPath
%>

Sen tar vi itu med bottom. Där lägger vi till följande:

<%
dim swap
swap = Request.Querystring("swap") & ""
%>
<body
<%IF swap = 1 THEN %>
 onLoad="parent.mainFrame.location.href = '<%=Session("MainFrameContent")%>';"
<%END IF%>
>

Vidare ändrar du följande i bottomFrame:

<form action="sidan.asp?swap=1" method="get">

Vad händer (eller bör hända, jag är inte bombsäker :) )?

Första stycket gör att vi vet vilken sida som för tillfället hör hemma i mainframen. Andra stycket säger att om swap = 1, så öppnar vi den aktuella sidan i mainframen. Eller uppdaterar, som det egentligen blir. :) Och formen säger vi bara till att gå till sidan.asp?swap=1, så bodytaggen hoppar igång. Detta gör att sidan.asp hinner exekveras och pricesetting cookien hinner ändras innan mainframen laddas om.

- Jag hoppas att du har förstått.
- Javisst. Tack Baloo.

Berätta om det funkar. :)

Medlem sedan jan. 20013 582 inlägg
#17

:)
Hej!

Tack för hjälpen!

Det låter logiskt.....

Har dock ej hunnit testa än... Tar tag i det i morgonbitti. Lägger mig nu...

God natt!!

mvh

Medlem sedan jan. 2005108 inlägg
#18

Natti natti. :)

Medlem sedan juni 200032 967 inlägg
#19

... eller, så slänger man ut ett javascript som laddar om mainframen när man bytt pristyp.

<script>parent.window.frames['mainframeellervaddennuheter'].location.reload(true);</script>

- - - - - - - - -

Donatello skrev:

sQ = Request.QueryString
sPath = "http://" & Request.ServerVariables("server_name") & Request.ServerVariables("path_info")
if sQ <> "" then sPath = sPath & "?" & sQ

Jag tycket mig känna igen de kodraderna... ;)

Medlem sedan jan. 20013 582 inlägg
#20

:)
Ny dag. nya tag!!!

Denna kod ligger i bottomFrame

if isnumeric(Request.QueryString("pricesetting")) then
	Response.Cookies("sydostel")("pricesetting") = Request.QueryString("pricesetting")
	Response.Cookies("sydostel").Expires = #2006-01-01#
end if

if Request.Cookies("sydostel")("pricesetting") = "" then
	pricesetting = 0
else
	pricesetting = cint(Request.Cookies("sydostel")("pricesetting"))
end if

%>
<form action="searchresult.asp" method="get">	
<input type="radio" name="pricesetting" value="1" onclick="this.form.submit();"> inkl. moms<br>
<input type="radio" name="pricesetting" value="0" onclick="this.form.submit();"> exkl. moms<br>

Denna ligger i searchResult.asp (mainFrame)

if pricesetting = 0 then
	' här kör vi SQL-fråga för priser exkl.moms
else
	' SQL-fråga för priser inkl. moms
end if

Är detta rätt??

Var ska jag lägga in:

<script>parent.window.frames['mainframeellervaddennuheter'].location.reload(true);</script>

Som cdet är nu så "pekar" formtaggen på en viss sida i exemplet searchresult.asp

nvh

262 ms totalt · 3 externa anrop · v20260731065814-full.767b4345
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)