Avatar billede rickie Juniormester
23. maj 2008 - 14:49 Der er 12 kommentarer og
1 løsning

Sessions problem

Hej,

Jeg har et problem med sessions. Jeg har ikke noget problem at skrive en værdi til en session...

<%
Department = Request.QueryString("Department")
Session("Department") = Request.QueryString("Department")
%>

...problemet er at den "glemmer" informationen
Hvis jeg gør følgende, så glemmes det ikke

<%
Department = Request.QueryString("Department")
Session("Department") = "Dette er en test"
%>

Det ska lige siges at den ikke "glemmer" det efter en <Form> (tror jeg) og den gør det kun når jeg henter en værdi fra Request.QueryString og ikke når jeg direkt giver den en værdi.

Her er hele koden. Det jeg vil er, at kunne genbruge en masse sessions over hele sitet. Hvordan gør jeg det?
HELE KODEN!
----

<div class="RTop">

<!-- DEFINERE VARIABEL/SESSIONS -->

<%
Department = Request.QueryString("Department")
Session("Department") = "Dette er en test"
%>



<%If Request.QueryString("Department") = "" Then%>

<!-- #Include File="ConnectionOpen.asp" -->

<%SQL = "SELECT * FROM tblText"
rs.Open SQL, Connect, 1%>

<p>
<font class="Text16G"><b><%=rs("frmTopWelcomeHdr")%></b></font>
<br><br>
<font class="Text12G"><%=rs("frmTopWelcome")%>
<br><br>
</font>


<%ElseIf Request.QueryString("Department") = Department Then%>



<%=Session("Department")%>




Welcome <%Response.Write(Session("Department"))%>

<p>
<font class="Text16G"><b><%=(Department)%></b></font>
<br><br>
<font class="Text12G">Test!
<br><br>
</font>

<!-- #Include File="ConnectionOpen.asp" -->

<%SQL = "SELECT * FROM tblKPIType WHERE depDepartment = '"&Request.QueryString("Department")&"'"
rs.Open SQL, Connect, 1%>

<form method="post" action="index.asp?KPI=Add">
<table border="0" width="525" class="Text12G" cellspacing="2" cellspacing="0">
    <tr>
        <td width="400" valign="top" class="BGB"><b>Dato</b></td>
        <td width="125" valign="top" class="BGB"><input type="text" name="Date" size="10" value="<%=(date)%>"><input type="text" name="kpiDateId" size="10" value="<%=(now)%>"></td>
    </tr>
    <tr>
        <td width="400" valign="top"><%=Session("Department")%></td>
        <td width="125" valign="top"></td>
    </tr>
    <%
    Do While Not Rs.EOF
    %>

    <tr>
        <td width="400" valign="top" class="BGB"><%=rs("kptNameShow")%></td>
        <td width="125" valign="top" class="BGB"><input type="text" name="kptName" size="10" value="<%=rs("kptName")%>"></td>


    </tr>
    <%
    Rs.MoveNext
    Loop
    %>
    <tr>
        <td width="400" valign="top" class="BGB"></td>
        <td width="125" valign="top" class="BGB"><input type="submit" value="Gem"><input type="reset" value="Afbryd">


        <input type="hidden" name="Department" size="10" value="<%=(Department)%>"

</td>
    </tr>
</table>
</form>
</p>

<%End if%>


<%If Request.QueryString("KPI") = "Add" Then%>

<!-- #Include File="ConnectionOpen.asp" -->


<%
SQL = "INSERT INTO tblKPI (depDepartment, kptName, kpiDateId) values('" & Request.Form("Department") & "', '" & Request.Form("kptName") & "', '" & Request.Form("kpiDateId") & "')"
Rs.Open SQL, Connect
%>

    <form method="post" action="index.asp">
    <table border="0" width="250" class="Box100 Text12G" cellspacing="2" cellspacing="0">
        <tr>
            <td width="230" valign="top" colspan="2" class="BGB"><b>KPI</b></td>
        </tr>
        <tr>
            <td width="250" valign="top" colspan="2"><br><%Response.Write(Session("Department"))%><br><br></td>
        </tr>
        <tr>
            <td width="100" valign="top"><input type="Submit" value="Luk vindue"></td>
            <td width="150" valign="bottom" align="right"><font class="Text8G">Unikt ID: <%=Request.Form("kpiDateId")%></font></td>
        </tr>
    </table>
    </form>

<%end if%>
</div>
Avatar billede w13 Novice
23. maj 2008 - 15:13 #1
Prøv evt. med:
Session("Department") = "" & Request.QueryString("Department")

Jeg tror, det er fordi der oprettes en henvisning/reference til querystringen, så når querystringen ikke er gyldig længere, vil værdien også være væk.

Ved at skrive "" & foran skulle værdien gøres til typen string, og derved burde henvisningen ikke være i aktion.
Avatar billede rickie Juniormester
26. maj 2008 - 09:31 #2
Hej w13,

Tak for svaret. Desværre vil den stadig ikke rigtigt. Nogle andre ideer :-)

<%
Department = Request.QueryString("Department")
Session("Department") = "" & Request.QueryString("Department")
%>

Kalder den med: <%Response.Write(Session("Department"))%>

Mvh Rickie
Avatar billede w13 Novice
26. maj 2008 - 09:34 #3
Måske udløber dine sessions bare hurtigt? Prøv at sætte dette omkring toppen af dine koder:

<%Session.Timeout=100%>
Avatar billede rickie Juniormester
26. maj 2008 - 11:44 #4
Nja, det virker stadig ikke. Har sat det ind for oven lige efter:

        <!-- VARIABEL/SESSIONS START -->
<%
Department = Request.QueryString("Department")
Session("Department") = "" & Request.QueryString("Department")
%>
        <!-- VARIABEL/SESSIONS SLUT -->



<%Session.Timeout=100%>
Avatar billede w13 Novice
26. maj 2008 - 11:52 #5
Den bør stå før, hvis det skal kunne virke. Altså inden session tages i brug.
Avatar billede rickie Juniormester
26. maj 2008 - 15:21 #6
Det har jeg også testet. Virker stadig ikke. Har du måske en anden løsning? :-)

<%Session.Timeout=100%>

<%
Department = Request.QueryString("Department")
Session("Department") = "" & Request.QueryString("Department")
%>
Avatar billede w13 Novice
26. maj 2008 - 15:28 #7
Nej, begynder at løbe tør. Hvad med bare:

<%Session.Timeout=100%>

<%
Department = Request.QueryString("Department")
Session("Department") = CStr(""&Department)
%>
Avatar billede w13 Novice
26. maj 2008 - 15:30 #8
Du er helt sikker på, at du tester det rigtigt på den anden side, ikke? :)
Avatar billede w13 Novice
26. maj 2008 - 15:32 #9
Og at den ikke bliver sat til blank et eller andet sted?
Avatar billede rickie Juniormester
26. maj 2008 - 16:01 #10
Prøver lige det også. Nu er jeg usikker på hvad du mener? Må jeg sende den til dig på mail?
Avatar billede w13 Novice
26. maj 2008 - 16:04 #11
Nej, jeg foretrækker at gøre det her.

Jeg mener bare: der hvor du siger, at din session er blank, er du så helt sikker på, at du henter den rigtige session, og at den virkelig _er_ blank?
Og: er du helt sikker på, at der ikke står Session("Department")="" et eller andet sted på siden, eller måske Session.Abandon()?
Avatar billede rickie Juniormester
28. maj 2008 - 10:19 #12
Der står godt nok <%If Request.QueryString("Department") = "" Then%> for oven. Har det nogen betydelse? Kan jeg "bare" fjerne det? Jeg bruger ikke session.abandon.

Hvis du kigger foroven hvor jeg har skrevet min kode, så ser du det med <%If Request.QueryString("Department") = "" Then%>

Ps. Undskyld mit sene svar :-)
Avatar billede w13 Novice
30. maj 2008 - 09:13 #13
<%If Request.QueryString("Department") = "" Then%>
betyder jo, at det kun bliver kørt, når Querystringen er blank. Det ved jeg ikke, om den skal være. Men ellers kan du erstatte = med <>
Så gør den det modsatte.
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