Avatar billede lord-jonas Nybegynder
18. august 2008 - 13:20 Der er 17 kommentarer og
2 løsninger

Brødkrummesti

Jeg kan ikke få min brødkrumme sti til at virke.
den skriver der er felt i "response.write getPath"
Nogen som kan forklare mig hvad jeg gør galt?

            </ul>
<%

dim Conn
dim DSN

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("aviva/database/aviva.mdb")
Conn.Open DSN

function getPath(fID)
dim fRS
    if isnumeric(fID&"") then
        set fRS = conn.execute("select * from page where id="& fID)
        if fRS.eof then
            getPath = ""
        else
            getPath = getPath(fRS("page_id")) & " > "& fRS("page_name")
        end if
    else
        getPath = ""
    end if
end function

response.write getPath

%>
Avatar billede lord-jonas Nybegynder
18. august 2008 - 13:21 #1
*den skriver der er fejl i "response.write getPath"
Avatar billede pidgeot Nybegynder
18. august 2008 - 13:22 #2
Du har defineret at din getPath-funktion skal tage mod et ID, men du sender ikke noget med nede i response.write. Du må skulle sende det aktuelle fID med (hvor du får det fra, kan jeg ikke se her).
Avatar billede lord-jonas Nybegynder
18. august 2008 - 13:26 #3
Hm, jeg har bare fundet scriptet og ændret lidt på det, så har ikke så meget forstand på det.
Eller nogle forslag til hvad jeg kunne gøre?
Avatar billede w13 Novice
18. august 2008 - 13:40 #4
Muligvis med:

<%

dim Conn
dim DSN

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("aviva/database/aviva.mdb")
Conn.Open DSN

function getPath(fID)
dim fRS
    if isnumeric(fID&"") then
        set fRS = conn.execute("select * from page where id="& fID)
        if fRS.eof then
            getPath = ""
        else
            getPath = getPath(fRS("page_id")) & " > "& fRS("page_name")
        end if
    else
        getPath = ""
    end if
end function

response.write getPath(Request.Querystring("id"))

%>

Men ligesom Pidgeot siger, er det tilfældigt gæt. Ellers må du ind i din page-tabel i databasen og aflæse værdierne i feltet "id".
Avatar billede w13 Novice
18. august 2008 - 13:48 #5
Eller endnu bedre: vise os koden for en standardside.
Avatar billede lord-jonas Nybegynder
18. august 2008 - 13:58 #6
Okay nu begynder jeg at kunne se jeg har klokket lidt i det.

I min database har jeg kun page_id og page_name jeg har ikke noget der hedder id eller fid, men fid er jo også bare navnet på min funktion.

Vil de sige at jeg bare skal oprette en id i min database og så virker lotet?
Avatar billede w13 Novice
18. august 2008 - 14:03 #7
Hver side i databasen har vel et id, og det ligger jo nok i feltet "page_id". Så hvis du ændrer denne linje:

set fRS = conn.execute("select * from page where id="& fID)

til:

set fRS = conn.execute("select * from page where page_id="& fID)

Så skulle det fungere lidt bedre. Samtidig skal du, som Pidgeot siger, også fortælle funktionen, hvilken side man er på, ved at overføre sidens id. Hvordan ser dine links til dine sider ud? F.eks. index.asp?id=15 måske?

Hvis du har id'et liggende i ?id i url'en, kan du bare bruge:

<%

dim Conn
dim DSN

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("aviva/database/aviva.mdb")
Conn.Open DSN

function getPath(fID)
dim fRS
    if isnumeric(fID&"") then
        set fRS = conn.execute("select * from page where page_id="& fID)
        if fRS.eof then
            getPath = ""
        else
            getPath = getPath(fRS("page_id")) & " > "& fRS("page_name")
        end if
    else
        getPath = ""
    end if
end function

response.write getPath(Request.Querystring("id"))

%>
Avatar billede lord-jonas Nybegynder
18. august 2008 - 14:11 #8
Mit id ligger i url'en od det er fx. default.asp?page_id=2

Har brugt din kode, den laver ikke engang fejl, den skriver simpelthen intet.
Avatar billede w13 Novice
18. august 2008 - 14:11 #9
Så skal det være:

<%

dim Conn
dim DSN

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("aviva/database/aviva.mdb")
Conn.Open DSN

function getPath(fID)
dim fRS
    if isnumeric(fID&"") then
        set fRS = conn.execute("select * from page where page_id="& fID)
        if fRS.eof then
            getPath = ""
        else
            getPath = getPath(fRS("page_id")) & " > "& fRS("page_name")
        end if
    else
        getPath = ""
    end if
end function

response.write getPath(Request.Querystring("page_id"))

%>
Avatar billede lord-jonas Nybegynder
18. august 2008 - 14:13 #10
Så får jeg denne fejl:

Microsoft VBScript runtime  error '800a0007'

Out of memory
Avatar billede lord-jonas Nybegynder
18. august 2008 - 14:15 #11
Med andre ord er der fejl i:
if isnumeric(fID&"") then
Avatar billede w13 Novice
18. august 2008 - 14:29 #12
Det lyder mærkeligt. Hvordan ser stien til siden ud? Altså bare efter .dk eller .com eller whatever.
Avatar billede lord-jonas Nybegynder
18. august 2008 - 14:32 #13
Intil videre ligger den på en server som jeg laver alle min sites på, senere skal den ud på sit eget domæne.
men lige nu hedder den f.eks. http://www.webudkast.dk/mercatus/hans-sandgren-jakobsen/default.asp?page_id=7
Avatar billede w13 Novice
18. august 2008 - 14:37 #14
Hmm. Den fejl kan jeg ikke rigtig forklare.

I øvrigt behøver du ikke erstatte f.eks. ø med &oslash; hvis du bare gemmer dine sider med UTF-8-encoding. F.eks. hvis du skriver i Notesblok, så vælg "Gem som" og ret der Encoding fra ANSI til UTF-8.
Avatar billede lord-jonas Nybegynder
18. august 2008 - 14:39 #15
Nej det ved jeg godt.

Det var bare mit program som var sat op til at sætte mine dokumenter til ansi, men har fået lavet indstillingerne om til utf-8
Avatar billede lord-jonas Nybegynder
18. august 2008 - 14:42 #16
Men nu tror jeg at jeg har været dum igen.

Jeg har ikke noget der hedder isnumeric, altså jeg har jo bare lavet en copy/paste.

ved ikke engang hvad jeg skal gære med isnumeric ?
Avatar billede w13 Novice
18. august 2008 - 14:49 #17
Jeg mener, det er en standardfunktion i ASP. Men den er vel ikke så nødvendig. Prøv denne kode:

<%

dim Conn,DSN

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("aviva/database/aviva.mdb")
Conn.Open DSN

function getPath(fID)
dim fRS
    set fRS = conn.execute("select * from page where page_id="& fID)
    if fRS.eof then exit function
    getPath = getPath(fRS("page_id")) & " > "& fRS("page_name")
end function

response.write getPath(Request.Querystring("page_id"))

%>
Avatar billede lord-jonas Nybegynder
18. august 2008 - 15:11 #18
Jeg har fundet en funktion i JS.
så nu virker det.
men jeg siger mange tak for din hjælp.

Du får dine point.
Avatar billede w13 Novice
18. august 2008 - 15:12 #19
Det lyder godt! Og jeg siger mange tak så! :)
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