Avatar billede fragtrup Nybegynder
30. december 2002 - 10:46 Der er 31 kommentarer

URL variabler virker pludselig ikke

Til at starte med virker det fint med disse variabler: "dagbog.asp?dag=1&maaned=1&aar=2003"
På dagbog.asp ligger en form og når jeg har brugt denne form og kommer tilbage til dagbog.asp så virker URL variablerne ikke. Heller ikke den adresse som virkede før jeg brugte formen.
Siden virker først rigtigt igen når jeg har lukket browseren og åbnet en ny.

Måske er det nogle variabler som jeg skal have smadret?

Hvis du kender til dette problem eller kan hjælpe mig videre med nogle hints så vil jeg juble.
Avatar billede dgivoni Nybegynder
30. december 2002 - 11:04 #1
Det er givetvis fordi formens action-attribut ikke tager url-variablerne med, men kun kalder dagbog.asp. Hvis du skal have dem viderefoert skal du selv kopiere dem ind i det action-felt igen...
Avatar billede dgivoni Nybegynder
30. december 2002 - 11:06 #2
for at faa alle url-variable med kan du bruge:
Request.Servervariables("QUERY_STRING")

F.eks.:
<form action="dagbog.asp?<% = Request.Servervariables("QUERY_STRING") %>">
Avatar billede fragtrup Nybegynder
30. december 2002 - 11:10 #3
Jeg tror det ikke. Jeg har kodet det sådan at hvis ikke der er nogen variabler i URL'en bruger siden den dagsdato.
Når jeg har brugt formen virker de variabler ikke heller ikke selvom jeg skriver url'en om manuelt. Først når jeg lukker browseren og åbner den igen virker siden igen... indtil jeg har brugt formen..???
Kender du en måde at slette variabler i hukommelsen?
Avatar billede fragtrup Nybegynder
30. december 2002 - 11:13 #4
Formen ligger inde i dagbog.asp og formen kalder så senddagbog.asp
Avatar billede dgivoni Nybegynder
30. december 2002 - 11:20 #5
Hvis det er Session-variabler du bruger, saa skulle du kunne slette dem ved at skrive: Session("variabelnavn") = nothing. Alle andre variabler bliver jo automatisk slettet, naar du kalder en ny side, men mindre du overfoerer som vha. en form eller som querystring/url-parameter.
Proev at komme med koden fra senddagbog.asp...
Avatar billede fragtrup Nybegynder
30. december 2002 - 11:22 #6
Kan det have noget at gøre med at det er denne type form jeg bruger?
<form name="senddagbog" ENCTYPE="multipart/form-data" action="senddagbog.asp" method="post">
Avatar billede fragtrup Nybegynder
30. december 2002 - 11:26 #7
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
        <link rel="stylesheet" href="../ulla2.css" type="text/css">
        <title>Ulla Paaske</title>
<%
session.lcid = 1030
Session.Timeout = 20
fejl = "Du mangler at udfylde f&oslash;lgende:<br><br><b>"
billede = ""

    Set Upload = Server.CreateObject("Persits.Upload.1")

    ' Findes billedet i forvejen gemmes billedet som xx(1).jpg
    Upload.OverwriteFiles = False

    ' BIlledet kan højst fylde 100Kb
    Upload.SetMaxSize 100000, True   

    Upload.SaveVirtual ("../dagbog/grafik/billeder/")

    ' Databaseforbindelse - husk at angive sti til din database
    Set Conn = Server.CreateObject("ADODB.Connection")
    DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
    DSN = DSN & "DBQ=" & Server.MapPath ("../../../database/dagbog.mdb")
    Conn.Open DSN

    ' scalering af billeder
    Sub ResizeX (intXSize)
        Dim intYSize
        intYSize = (intXSize / Image.MaxX) * Image.MaxY
        Image.ResizeR intXSize, intYSize
    end sub

    Sub ResizeY (intYSize)
        Dim intXSize
        intXSize = (intYSize / Image.MaxY) * Image.MaxX
        Image.ResizeR intXSize, intYSize
    end sub


dDag = Upload.Form("dag")
dMaaned = Upload.Form("maaned")
dAar = Upload.Form("aar")
overskrift =""& Upload.Form("overskrift")
tekst = ""& Upload.Form("tekst")
datoformat = ""& dAar

Select Case dMaaned
    Case 1
        datoformat =  datoformat &"01"
    Case 2
        datoformat =  datoformat &"02"
    Case 3
        datoformat =  datoformat &"03"
    Case 4
        datoformat =  datoformat &"04"
    Case 5
        datoformat =  datoformat &"05"
    Case 6
        datoformat =  datoformat &"06"
    Case 7
        datoformat =  datoformat &"07"
    Case 8
        datoformat =  datoformat &"08"
    Case 9
        datoformat =  datoformat &"09"
    Case Else
        datoformat =  datoformat & maaned
End Select

Select Case dDag
    Case 1
        datoformat =  datoformat &"01"
    Case 2
        datoformat =  datoformat &"02"
    Case 3
        datoformat =  datoformat &"03"
    Case 4
        datoformat =  datoformat &"04"
    Case 5
        datoformat =  datoformat &"05"
    Case 6
        datoformat =  datoformat &"06"
    Case 7
        datoformat =  datoformat &"07"
    Case 8
        datoformat =  datoformat &"08"
    Case 9
        datoformat =  datoformat &"09"
    Case Else
        datoformat =  datoformat & dag
End Select

' test om alle felter er udfyldt


        For Each File in Upload.Files
            ' Tester på filtype
            If File.ImageType <> "JPG" Then
                Response.Write "Billedet skal være en .jpg fil<br>"
                      File.Delete
            else

                Set Image = Server.CreateObject("AspImage.Image")

                Image.LoadImage(Server.MapPath("../dagbog/grafik/billeder/"& file.filename &""))
                Image.FileName = Server.MapPath("../dagbog/grafik/billeder/"& file.filename &"")

                if Image.MaxY > 89 then
                    response.write "Billedet er for h&oslash;jt max. 89 px"
                    fejl2 = 1
                    File.Delete
                end if
           
                if Image.MaxX > 300 then
                    response.write "Billedet er for bredt - max. 300 px"
                    fejl2 =1
                    File.Delete
                end if

                billede = file.filename

                ' Slut på hvis der er et billede at uploade
                Set Image = Nothing
            End If
        next
   
'uploade billede - stopper her.

    'opdater databasen med oplysningerne
    felter = "datoformat, dag, maaned, aar, overskrift, tekst"
    vardier = ""& datoformat &", "& dDag &", "& dMaaned &", "& dAar &", '"& overskrift &"','"&tekst&"'"

    if billede <> "" then
        felter = felter &",billede"
        vardier = vardier &" ,'"& billede&"'"
    end if

    strSQL = "INSERT INTO vare ("& felter &") VALUES ("& vardier &")"

    ' SQL sætning eksekveres
    Conn.Execute(strSQL)


   

%>
    </head>

    <body bgcolor="#ffffff" TOPMARGIN="0" LEFTMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
        <div align="center">
   
            <table border="0" cellpadding="0" cellspacing="0" width="600">
                <tr>
               
                </tr>

            </table>

    </div>
    </body>

<%
    ' Luk databaseforbindelsen
    Conn.Close
    Set Conn = Nothing
%>

</html>
Avatar billede dgivoni Nybegynder
30. december 2002 - 11:27 #8
ja, saa kan du ikke hive felt-vaerdierne ud som normalt. Hvorfor goer du det? Uploader du en fil samtidig med?
Avatar billede dgivoni Nybegynder
30. december 2002 - 11:28 #9
ok, det kan jeg se nu at du goer :-)
Avatar billede dgivoni Nybegynder
30. december 2002 - 11:31 #10
men senddagbog sender dig jo ikke tilbage til dagbog.asp, hvordan kommer du tilbage?
Og hvordan ser dagbog.asp ud, dvs. der hvor du tjekker om variablerne eksisterer eller ej?
Avatar billede fragtrup Nybegynder
30. december 2002 - 11:35 #11
Jeg lavede en test version hvor jeg havde mulighed for at komme tilbage. Men også når jeg bare skriver dagbog.asp?dag=1&maaned=1&aar=2003 i URL linien bagefter er det i udu. Jeg finder lige dagbog.asp koden frem...
Avatar billede fragtrup Nybegynder
30. december 2002 - 11:37 #12
Dette er ikke hele koden, men den del som henter værdierne i URL'en og den som laver nogle nye hvis der ikke er nogen værdier i URL'en:

dennedag = Request.Querystring("dag")
dennemaaned = Request.Querystring("maaned")
detteaar = Request.Querystring("aar")

if ""& dennedag = "" then
dennedag = ""& day(Date)
end if

if ""& dennemaaned  = "" then
dennemaaned = ""& month(Date)
end if

if ""& detteaar = "" then
detteaar = ""& year(Date)
end if

denneDato = CDate(dennemaaned&"/"&dennedag&"/"&detteaar)
Avatar billede dgivoni Nybegynder
30. december 2002 - 12:03 #13
ja, det lyder jo underligt at det ikke skulle virke, selv om du skriver url'en direkte...
nu kan jeg ikke helt huske det, men hvis variablen ikke eksisterer er vaerdien saa ikke "undefined" og ikke bare en tom streng ""?
Avatar billede fragtrup Nybegynder
30. december 2002 - 12:11 #14
Det kunne da godt være noget i den stil. Men hvordan tester jeg det, eller læser om det?
Avatar billede medions Nybegynder
30. december 2002 - 12:38 #15
if Server.Execute(dennedag) = "" then
dennedag = ""& day(Date)
end if

if Server.Execute(dennemaaned)  = "" then
dennemaaned = ""& month(Date)
end if

if Server.Execute(detteaar) = "" then
detteaar = ""& year(Date)
end if

Prøv med det!

//>Rune
Avatar billede fragtrup Nybegynder
30. december 2002 - 12:57 #16
Så får jeg denne fejl, hvis jeg har variablerne på URL'en

Server object error 'ASP 0228 : 80004005'

Server.Execute Error

/admin/dagbog.asp, line 24

The call to Server.Execute failed while loading the page.

Og denne uden variablerne:

Server object error 'ASP 0231 : 80004005'

Server.Execute Error

/admin/dagbog.asp, line 24

Invalid URL form or fully-qualified absolute URL was used. Use relative URLs.
Avatar billede medions Nybegynder
30. december 2002 - 12:58 #17
Afprøver du din kode på en IIS eller på en PWS?

//>Rune
Avatar billede medions Nybegynder
30. december 2002 - 13:01 #18
Ellers så prøv med denne:

dennedag = Trim(Request.Querystring("dag"))
dennemaaned = Trim(Request.Querystring("maaned"))
detteaar = Trim(Request.Querystring("aar"))

if dennedag = "" then
dennedag = ""& day(Date)
end if

if dennemaaned  = "" then
dennemaaned = ""& month(Date)
end if

if detteaar = "" then
detteaar = ""& year(Date)
end if

//>Rune
Avatar billede fragtrup Nybegynder
30. december 2002 - 13:02 #19
Jeg har helt fjernet muligheden for at skrive URL'en uden variabler. Men fejlen kommer stadig.
Avatar billede fragtrup Nybegynder
30. december 2002 - 13:03 #20
Jeg tester på nettet. Jeg har ikke installeret IIS eller PWS
Avatar billede medions Nybegynder
30. december 2002 - 13:05 #21
Hvilken fejlmeddelse får du når du bruger denne?

dennedag = Trim(Request.Querystring("dag"))
dennemaaned = Trim(Request.Querystring("maaned"))
detteaar = Trim(Request.Querystring("aar"))

if dennedag = "" then
dennedag & day(Date)
end if

if dennemaaned  = "" then
dennemaaned & month(Date)
end if

if detteaar = "" then
detteaar & year(Date)
end if

//>Rune
Avatar billede fragtrup Nybegynder
30. december 2002 - 13:08 #22
Jeg får ikke nogen direkte fejl. Har du en email jeg kan sende en URL til? Så kan du se hvad der sker.
Avatar billede fragtrup Nybegynder
30. december 2002 - 13:09 #23
Den oprindelige fejl er der stadig
Avatar billede medions Nybegynder
30. december 2002 - 13:11 #24
HVILKEN fejl!! -Beskriv fejlen, ellers kan jeg jo ik' hjælpe dig!

//>Rune
Avatar billede fragtrup Nybegynder
30. december 2002 - 13:18 #25
Det var det jeg frygtede. Lang forklaring:
På min side (dagbog.asp) har jeg en tabel som indeholder datoerne i en bestemt måned. Som man kan se i en alm. papir kalender med mandag, tirsdag onsdag... i toppen og datoerne stillet op herunder alt efter hvilken ugedag datoen er.
I dagbog.asp er der også en form som gør at man kan skrive en tekst og uploade et billede til en bestemt dag.
Denne bestemte dag afgøres af variablerne i URL'en.

Når jeg har brugt formen og kommer tilbage til dagbog.asp, så ser måneds kalenderen fin ud, men når jeg bladre i kalenderen, står der kun 1 dato i kalenderen. Jeg han skrive en ny URL med nye datoer, men skidtet virker ikke før jeg har lukket browseren og startet en ny.
Avatar billede fragtrup Nybegynder
30. december 2002 - 13:19 #26
Før jeg har benyttet formen virker det hele som det skal.
Avatar billede dgivoni Nybegynder
30. december 2002 - 13:20 #27
det kunne lyde som om du render ind i en uendelig loekke af en slags.
Avatar billede dgivoni Nybegynder
30. december 2002 - 13:21 #28
naa, nej, saa skulle den ikke returnere noget resultat overhovedet...
Avatar billede fragtrup Nybegynder
30. december 2002 - 13:31 #29
Jeg tror gerne jeg ville opleve noget uendelig løkke.
Tilbage til problemet. Jeg tror jeg har fået fanget synderen. Problemet er denne: session.lcid = 1030
Jeg brugte den i starten af scriptet, af en grund jeg har glemt. Men nu hvor jeg har fjernet den så virker skidtet.
Det er ikke sådan når man gemmer og genbruger koder, og ikke ved hvad de gør.
Men tak for din tid alligevel.
Også tak til medions
Avatar billede fragtrup Nybegynder
30. december 2002 - 13:34 #30
Men jeg vil da godt vide hvad "session.lcid = 1030" laver...? Er det ikke noget med noget lande ID? Og hvorfor ødelægger det så resten af min kode?
Avatar billede dgivoni Nybegynder
30. december 2002 - 14:08 #31
den skulle goere at du automatisk faar vist tiden som dansk tid og ikke er afhaengig af serverens indstilling. Hvorfor den oedelaegger det, ved jeg ikke...
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