ورود

View Full Version : حفظ مقادیر فرم و session در هنگام ارسال فرم



hassan1365
جمعه 24 آذر 1385, 17:59 عصر
سلام
من یه صفحه دارم که دو تا فرم توشه که هردو شونم به همون صفحه ارسال میشن.بعد مقادیر هردو فرم رو در دو session ذخیره میکنم که باهاش اطلاعات رو از بانک لود کنم.
حالا مشکل اینجاست که وقتی فرم submit میشه یکی از session ها پاک میشن.مثلا وقتی نام شهر رو انتخاب میکنی session("usercode") پاک میشه و وقتی نام کاربر رو انتخاب میکنی citycode پاک میشه.برای اینکه بهتر منظورم رو متوجه بشین سورس صفحه رو میذارم.


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="css1.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
body,td,th {
font-family: Tahoma;
}
-->
</style>
<!--#include file="date.asp"-->
</head>
<body topmargin="0" bottommargin="0" rightmargin="0" leftmargin="0" bgcolor="#efefef">
<br />
<center><span dir="rtl" class="formtitle">test</span></center>
<hr width="70%" color="#FF0099"/>
<table width="768" height="" border="0" align="center" cellpadding="0" cellspacing="0">
<%
'if session("membertype")="siteadmin1" then
DIM objConn
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "Driver={SQL Server}; Server=(local); Database=amar; UID=@RK_BUS2006*; PWD=@RK_BUS2006*;"
objConn.Open
dim objrs
Set objrs = Server.CreateObject("ADODB.recordset")
dim mysql
dim userlist_load

if request.Form("codecity")<>"null" then
if session("codecity")<>request.Form("codecity") then
session("codecity")=request.Form("codecity")
session("usercode")=""
session("av_year")=""
session("edit_from")=""
session("edit_to")=""
userlist_load=true
end if
end if

if request.Form("usercode")<>"null" then
if session("usercode")<>request.Form("usercode") then
session("usercode")=request.Form("usercode")
session("av_year")=""
session("edit_from")=""
session("edit_to")=""
userlist_load=false
end if
end if

if session("av_year")<>request.Form("av_year") then
session("av_year")=request.Form("av_year")
userlist_load=false
end if

if session("edit_from")<>request.Form("edit_from") or session("edit_to")<>request.Form("edit_to") then
session("edit_from")=request.Form("edit_from")
session("edit_to")=request.Form("edit_to")
userlist_load=false
end if
'******************** city list loading
mysql="select * from tblcity"
Set objrs = objconn.Execute(mysql)
%>
<form method="post" name="form" action="useractivityreport2.asp">
<select onchange="this.form.submit();" name="codecity" dir="rtl" class="box3">
<option value="null">شهر کاربر</option>
<%
do while not objrs.eof
%>
<option value="<%=objrs("codecity")%>" <%if session("codecity")=objrs("codecity") then%>selected="selected"<%end if%>><%=objrs("namecity")%>
</option>
<%
objrs.movenext
loop
%>
</select><span class="formtext">&nbsp;: شهر &nbsp;</span>
</form>
<%
'******************** /city list loading
'******************** user list loading
if userlist_load=true then
mysql="select * from tbluser where usercitycode='"&session("codecity")&"';"
Set objrs = objconn.Execute(mysql)
if not objrs.eof then
%>
<form method="post" name="form" action="useractivityreport2.asp">
<select name="usercode" onchange="this.form.submit();" dir="rtl" class="box3">
<option value="null" <%if session("usercode")="" then%>selected="selected"<%end if%>>نام کاربری</option>
<%if session("codecity")="1" then%>
<option value="0">siteadmin</option>
<%end if%>
<%do while not objrs.eof%>
<option value="<%=objrs("usercode")%>" <%if session("usercode")=objrs("usercode") then%> selected="selected"<%end if%>><%=objrs("username")%>
</option>
<%
objrs.movenext
loop
%>
</select><span class="formtext">&nbsp;: نام کاربری &nbsp;</span></form>
<%
else
%>
<form method="post" action="useractivityreport2.asp">
<select name="usercode" dir="rtl" class="box3">
<option value="null">هیچ کاربری یافت نشد</option>
</select><span class="formtext">&nbsp;: نام کاربری &nbsp;</span>
</form>
<%
end if
else
%>
<form method="post" action="useractivityreport2.asp">
<select name="usercode" dir="rtl" class="box3">
<option value="null">هیچ کاربری یافت نشد</option>
</select><span class="formtext">&nbsp;: نام کاربری &nbsp;</span>
</form>
<%

end if
'******************** /user list loading

'******************** session test
response.Write("citycode: "&session("codecity"))
response.Write("<br>")
response.Write("usercode: "&session("usercode"))
response.Write("<br>")
response.Write("av_year: "&session("av_year"))
response.Write("<br>")
response.Write("edit_from: "&session("edit_from"))
response.Write("<br>")
response.Write("edit_to: "&session("edit_to"))
'********************* /session test
'else
'response.Write("you have not permission to access this page")
'end if
%>
<br />
<hr />
<a href="index.asp">back to home</a>
</body>
</html>


موفق باشید.

reza_rad
شنبه 25 آذر 1385, 07:20 صبح
خب طبق منطق کد شما کار طبیعیه!!!
شما وقتی داری usercode رو می خونی بقیه session ها رو پاک می کنی

وقتی هم داری codecity رو می خونی بقیه session ها رو پاک می کنی.



if request.Form("codecity")<>"null" then
if session("codecity")<>request.Form("codecity") then
session("codecity")=request.Form("codecity")
session("usercode")=""
session("av_year")=""
session("edit_from")=""
session("edit_to")=""
userlist_load=true
end if
end if

hassan1365
شنبه 25 آذر 1385, 13:49 عصر
سلام
مرسی مشکلم برطرف شده.راه حلشو میذارم برای دوستانی که احیانا این مشکلو دارن.
وقتی چند فرم با هم به یه صفحه submit میشن مقادیر اون فرمی که submit نشده از بین میره و فقط مقادیر فرم submit شده اعتبار دارن.پس باید داخل فرم دوم مقادیر فرم اول رو مجددا با فیلدهای hidden ارسال کرد.مثلا اگه 3 تا فرم داشته باشیم،باید مقادیر فرمهای 1و2 رو در فرم 3 با فیلدهای hidden ارسال کنیم تا از دست نرن.

موفق باشید