Hej!
jag har länar i en databas som läggs ut på en sida.
men så fort det är ett frågetecken med i länken så funkar det inte.
varför?
vad kan jag göra.
jag jobbar med "frontpage-asp" och access 2002-databas.
tacksam om hjälp.
/ Anders
19 svar · 471 visningar · startad av anders4u
Hej!
jag har länar i en databas som läggs ut på en sida.
men så fort det är ett frågetecken med i länken så funkar det inte.
varför?
vad kan jag göra.
jag jobbar med "frontpage-asp" och access 2002-databas.
tacksam om hjälp.
/ Anders
Det kanske inte är frågetecknet som är fel men det blir massa % tecken i länken.
i vissa fall fungerar det bra men i vissa fall inte.
om man går in på Linktree.net klickar på bildgallerier och sedan på länken "Webshots Gallery" så ser du hur det ser ut.
:-)
nöje måste man klicka på först innan man hittar bildgallerier
Gör du något konstigt när du sparar länkar i databasen, Server.HTMLEncode(), och sedan gör det igen när du visar upp länkarna?
Om du tittar direkt i Access, ser url:en rätt ut?
databasen ser ut så här.
id, url, description"det som visas när man vilar musen över länken", kategori"för att skilja länkarna åt" och text"det som man ska klicka på så man kommer vidare".
så i gällande årdning står det så här i dabasen:
3, www.picsearch.se, description
En bra sökmotor för bilder!, bilder, text
Picsearch sök bilder.
vet inte om det hjälper så mycket.
jag kan bara lite asp och när frontpage skriver sin egna asp så blir det inte lättare.
Vänlig hällsning, Anders.
Hur ser koden ut?
Ser allt rätt ut när du öppnar tabellen i databasen?
Det verkar som om url:en html-kodas dubbelt innan utskrift.
nu märkte jag visserligen att länken inte fungerar men problemet med ? kvarstår ändå.
auktioner.asp ser ut så här:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>Linktree.net:: Auktioner</title>
<script language="JavaScript">
<!--
function change(html){
description.innerHTML=html
}
//-->
</script>
<base target="_blank">
<link rel="stylesheet" type="text/css" href="../stil/stil.css">
</head>
<body bgcolor="#0D1A00" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF" topmargin="40">
<p><a href="../index.htm" target="_top">startsidan</a></p>
<table border="0" width="100%">
<tr>
<td width="33%">
<table>
<tbody>
<!--webbot bot="DatabaseRegionStart" startspan
s-columnnames="ID,url,description,sokord,kategori,text"
s-columntypes="3,202,202,202,202,202" s-dataconnection="Databas1"
b-tableformat="TRUE" b-menuformat="FALSE" s-menuchoice="text" s-menuvalue="text"
b-tableborder="FALSE" b-tableexpand="FALSE" b-tableheader="FALSE"
b-listlabels="FALSE" b-listseparator="FALSE" i-ListFormat="0"
b-makeform="FALSE" s-recordsource="lankar" s-displaycolumns="text"
s-criteria="[kategori] EQ [auktion] +" s-order="[ID] -"
s-sql="SELECT * FROM lankar WHERE (kategori = 'auktion') ORDER BY ID DESC"
b-procedure="FALSE" clientside SuggestedExt="asp" s-DefaultFields
s-NoRecordsFound="Inga poster returnerades." i-MaxRecords="256"
i-GroupSize="0" BOTID="0" u-dblib="../_fpclass/fpdblib.inc"
u-dbrgn1="../_fpclass/fpdbrgn1.inc"
u-dbrgn2="../_fpclass/fpdbrgn2.inc" tag="TBODY"
local_preview="<tr><td colspan=64 bgcolor="#FFFF00" align="left" width="100%"><font color="#000000">Det går inte att förhandsgranska databasresultatsområden om inte sidan hämtats från en webbserver med en webbläsare. Följande tabellrad upprepas en gång för varje post som returneras av frågan.</font></td></tr>"
preview="<tr><td colspan=64 bgcolor="#FFFF00" align="left" width="100%"><font color="#000000">Det här är början av ett databasresultatsområde.</font></td></tr>" b-WasTableFormat="TRUE" --><!--#include file="../_fpclass/fpdblib.inc"-->
<%
fp_sQry="SELECT * FROM lankar WHERE (kategori = 'auktion') ORDER BY ID DESC"
fp_sDefault=""
fp_sNoRecords="<tr><td colspan=1 align=left width=""100%"">Inga poster returnerades.</td></tr>"
fp_sDataConn="Databas1"
fp_iMaxRecords=256
fp_iCommandType=1
fp_iPageSize=0
fp_fTableFormat=True
fp_fMenuFormat=False
fp_sMenuChoice="text"
fp_sMenuValue="text"
fp_iDisplayCols=1
fp_fCustomQuery=False
BOTID=0
fp_iRegion=BOTID
%>
<!--#include file="../_fpclass/fpdbrgn1.inc"-->
<!--webbot bot="DatabaseRegionStart" i-CheckSum="11410" endspan -->
<tr>
<td><a href="http://<%=FP_FieldURL(fp_rs,"url")%>" onmouseout="javascript:change('')" onmouseover="javascript:change('<%=FP_FieldVAL(fp_rs,"description")%>')"><!--webbot
bot="DatabaseResultColumn" startspan
s-columnnames="ID,url,description,sokord,kategori,text"
s-column="text" b-tableformat="TRUE" b-hasHTML="FALSE" clientside
local_preview="<font size="-1"><<</font>text<font size="-1">>></font>"
preview="<font size="-1"><<</font>text<font size="-1">>></font>" --><%=FP_FieldVal(fp_rs,"text")%><!--webbot
bot="DatabaseResultColumn" i-CheckSum="6885" endspan -->
</a></td>
</tr>
<!--webbot bot="DatabaseRegionEnd" startspan b-tableformat="TRUE"
b-menuformat="FALSE" u-dbrgn2="../_fpclass/fpdbrgn2.inc"
i-groupsize="0" clientside tag="TBODY"
local_preview="<tr><td colspan=64 bgcolor="#FFFF00" align="left" width="100%"><font color="#000000">Det här är slutet av ett databasresultatsområde.</font></td></tr>"
preview="<tr><td colspan=64 bgcolor="#FFFF00" align="left" width="100%"><font color="#000000">Det här är slutet av ett databasresultatsområde.</font></td></tr>" --><!--#include file="../_fpclass/fpdbrgn2.inc"-->
<!--webbot bot="DatabaseRegionEnd" i-CheckSum="56926" endspan -->
</tbody>
</table>
<p><nobr></nobr></p>
</td>
<td width="33%"></td>
<td width="34%"><div id="description" style="text-align: center; font-size: 12pt; font-weight: bold; font-family: Garamond">
<p align="center">Välkommen hit!</div>
</td>
</tr>
</table>
</body>
</html>
Hur ser funktionen FP_FieldURL() ut?
syntaxen typ eller?
ska det kanske inte vara FP_FieldURL utan FP_FieldVAL i stället?
jag vet inte riktigt hur syntaxen ska vara.
Koden till funktionen. Den ligger förmodligen i någon includefil.
Red: Tråden flyttas till ASP-forumet också.
Mvh,
global.asa
det är väl includeringsfilen kan man säga
den ser ut så här:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
'==FrontPage Generated - startspan==
Dim FrontPage_UrlVars(1)
'--Project Data Connection
Application("Databas1_ConnectionString") = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=URL=fpdb/lankar.mdb"
FrontPage_UrlVars(0) = "Databas1_ConnectionString"
Application("Databas1_ConnectionTimeout") = 15
Application("Databas1_CommandTimeout") = 30
Application("Databas1_CursorLocation") = 3
Application("Databas1_RuntimeUserName") = ""
Application("Databas1_RuntimePassword") = ""
'--
Application("FrontPage_UrlVars") = FrontPage_UrlVars
'==FrontPage Generated - endspan==
End Sub
Sub Session_OnStart
FrontPage_StartSession '==FrontPage Generated==
End Sub
Sub FrontPage_StartSession
On Error Resume Next
if Len(Application("FrontPage_VRoot")) > 0 then Exit Sub
' discover the VRoot for the current page;
' walk back up VPath until we find global.asa
Vroot = Request.ServerVariables("PATH_INFO")
strG1 = "global.asa"
strG2 = "Global.asa"
iCount = 0
do while Len(Vroot) > 1
idx = InStrRev(Vroot, "/")
if idx > 0 then
Vroot = Left(Vroot,idx)
else
' error; assume root web
Vroot = "/"
end if
if FrontPage_FileExists(Server.MapPath(Vroot & strG1)) then exit do
if FrontPage_FileExists(Server.MapPath(Vroot & strG2)) then exit do
if Right(Vroot,1) = "/" then Vroot = Left(Vroot,Len(Vroot)-1)
iCount = iCount + 1
if iCount > 100 then
' error; assume root web
Vroot = "/"
exit do
end if
loop
' map all URL= attributes in _ConnectionString variables
Application.Lock
if Len(Application("FrontPage_VRoot")) = 0 then
Application("FrontPage_VRoot") = Vroot
UrlVarArray = Application("FrontPage_UrlVars")
for i = 0 to UBound(UrlVarArray)
if Len(UrlVarArray(i)) > 0 then FrontPage_MapUrl(UrlVarArray(i))
next
end if
Application.Unlock
End Sub
Sub FrontPage_MapUrl(AppVarName)
' convert URL attribute in conn string to absolute file location
strVal = Application(AppVarName)
strKey = "URL="
idxStart = InStr(strVal, strKey)
If idxStart = 0 Then Exit Sub
strBefore = Left(strVal, idxStart - 1)
idxStart = idxStart + Len(strKey)
idxEnd = InStr(idxStart, strVal, ";")
If idxEnd = 0 Then
strAfter = ""
strURL = Mid(strVal, idxStart)
Else
strAfter = ";" & Mid(strVal, idxEnd + 1)
strURL = Mid(strVal, idxStart, idxEnd - idxStart)
End If
strOut = strBefore & Server.MapPath(Application("FrontPage_VRoot") & strURL) & strAfter
Application(AppVarName) = strOut
End Sub
Function FrontPage_FileExists(fspath)
On Error Resume Next
FrontPage_FileExists = False
set fs = CreateObject("Scripting.FileSystemObject")
Err.Clear
set istream = fs.OpenTextFile(fspath)
if Err.Number = 0 then
FrontPage_FileExists = True
istream.Close
end if
set istream = Nothing
set fs = Nothing
End Function
</SCRIPT>
Jag kan inte hitta koden till funktionen FP_FieldURL som jag letar efter.
I någon includefil finns något som liknar:
Function FP_FieldURL(något här)
någon kod här
End Function
Det är den koden jag vill åt. Dessutom, hur gör du när du lägger in länkarna i databasen?
Använd gärna wF-s kodtaggar när du postar kod, så blir koden betydligt mer lättläst.
Mvh
tack
ska försöka göra det mer lättläst.
tack för all hjälp.
databasen fyller jag helt enkelt i i access.
inget avancerat alls.
ska leta efter det du söker.
vänliga hällsningar Anders.
hittat
en fil som hette fpdblib.inc
<%
Function FP_FieldVal(rs, fldname)
FP_FieldVal = Server.HTMLEncode(FP_Field(rs, fldname))
if FP_FieldVal = "" then FP_FieldVal = " "
End Function
Function FP_Field(rs, fldname)
If Not IsEmpty(rs) And Not (rs Is Nothing) and Not IsNull(rs(fldname)) Then
Select Case rs(fldname).Type
Case 128, 204, 205 ' adBinary, adVarBinary, adLongVarBinary
FP_Field = "[#BINARY#]"
Case 201, 203 ' adLongVarChar, adLongVarWChar
if rs(fldname).DefinedSize > 255 then
' check for Access hyperlink fields (only absolute http links)
fp_strVal = rs(fldname)
fp_idxHash1 = InStr(LCase(fp_strVal),"#[url]http://[/url]")
if fp_idxHash1 > 0 then
fp_idxHash2 = InStr(fp_idxHash1+1,fp_strVal,"#")
if fp_idxHash2 > 0 then
' this is an Access hyperlink; extract the URL part
fp_strVal = Mid(fp_strVal,fp_idxHash1+1)
if Right(fp_strVal,1) = "#" then
fp_strVal = Left(fp_strVal,Len(fp_strVal)-1)
end if
end if
end if
FP_Field = fp_strVal
else
FP_Field = rs(fldname)
end if
Case Else
FP_Field = rs(fldname)
End Select
Else
FP_Field = ""
End If
End Function
Function FP_FieldHTML(rs, fldname)
FP_FieldHTML = Server.HTMLEncode(FP_Field(rs, fldname))
End Function
Function FP_FieldURL(rs, fldname)
FP_FieldURL = Server.URLEncode(FP_Field(rs, fldname))
End Function
Function FP_FieldLink(rs, fldname)
FP_FieldLink = Replace(FP_Field(rs, fldname), " ", "%20")
End Function
Sub FP_OpenConnection(oConn, sAttrs, sUID, sPWD, fMSAccessReadOnly)
Dim sTmp
Dim sConnStr
Dim fIsAccessDriver
fIsAccessDriver = (InStr(LCase(sAttrs), "microsoft access driver") > 0)
sConnStr = FP_RemoveDriverWithDSN(sAttrs)
sTmp = sConnStr
On Error Resume Next
If fMSAccessReadOnly And fIsAccessDriver Then
sTmp = sTmp & ";Exclusive=1;ReadOnly=1"
Err.Clear
oConn.Open sTmp, sUID, sPWD
If Err.Description = "" Then Exit Sub
End If
Err.Clear
oConn.Open sConnStr, sUID, sPWD
End Sub
Function FP_RemoveDriverWithDSN(sAttrs)
FP_RemoveDriverWithDSN = sAttrs
sDrv = "driver="
sDSN = "dsn="
sLC = LCase(sAttrs)
if InStr(sLC, sDSN) < 1 then exit function
idxFirst = InStr(sLC, sDrv)
if idxFirst < 1 then exit function
idxBeg = idxFirst + Len(sDrv)
if Mid(sLC,idxBeg,1) = "{" then
idxEnd = InStr(idxBeg, sLC, "}")
if idxEnd > 0 and Mid(sLC,idxEnd+1,1) = ";" then
idxEnd = idxEnd + 1
end if
else
idxEnd = InStr(idxBeg, sLC, ";")
end if
if idxEnd < 1 then idxEnd = Len(sLC)
FP_RemoveDriverWithDSN = Left(sAttrs,idxFirst-1) & Mid(sAttrs,idxEnd+1)
End Function
Sub FP_OpenRecordset(rs)
On Error Resume Next
rs.Open
End Sub
Function FP_ReplaceQuoteChars(sQry)
Dim sIn
Dim sOut
Dim idx
sIn = sQry
sOut = ""
idx = InStr(sIn, "%%")
Do While (idx > 0)
sOut = sOut & Left(sIn, idx - 1)
sIn = Mid(sIn, idx + 2)
if (Left(sIn,1) = "%") And (Left(sIn,2) <> "%%") then
sIn = Mid(sIn, 2)
sOut = sOut & "%"
end if
sOut = sOut & "::"
idx = InStr(sIn, "%%")
if idx > 0 then
sOut = sOut & Left(sIn, idx - 1)
sIn = Mid(sIn, idx + 2)
sOut = sOut & "::"
if (Left(sIn,1) = "%") And (Left(sIn,2) <> "%%") then
sIn = Mid(sIn, 2)
sOut = sOut & "%"
end if
end if
idx = InStr(sIn, "%%")
Loop
sOut = sOut & sIn
FP_ReplaceQuoteChars = sOut
End Function
Sub FP_Close(obj)
On Error Resume Next
obj.Close
End Sub
Sub FP_SetCursorProperties(rs)
On Error Resume Next
rs.CursorLocation = 3 ' adUseClient
rs.CursorType = 3 ' adOpenStatic
End Sub
%>
försökte fet markera just det men lyckades inte.
Function FP_FieldURL finns med ialla fall
Jag hade inte gjort Server.URLEncode() såsom Frontpage vill att du ska göra. Prova att byta raden
<td><a href="http://<%=FP_FieldURL(fp_rs,"url")%>" onmouseout="java script:change('')" onmouseover="java script:change('<%=FP_FieldVAL(fp_rs,"description")%>')">
mot
<td><a href="http://<%=fp_rs("url")%>" onmouseout="java script:change('')" onmouseover="java script:change('<%=FP_FieldVAL(fp_rs,"description")%>')">
mvh,
Du är en ängel @nders
:bire
nu är livet gott.
det fungerar hur bra som helst.
jag får se till att frontpage inte ändrar tillbaka det sedan.
men du har jag lösningen och det är jag supertacksam för.
tack för att du la ner tid.
Hällsningar Anders.
Varsågod!
Om du har intresse och tid så hoppas jag att du lär dig att skriva ASP-koden själv och inte låta Frontpage förstöra för dig. Frontpage stjälper ofta mer än det hjälper, är min uppfattning.
Lycka till, och återkom med frågor! :)
Mvh,
japp
jag ska börja internet-teknik på högskolan nu i jönköping så blir det väl lite asp ialla fall.
hoppas att jag kan hjälpa dig någon gång med nått.
/ Anders