Avatar billede dampnet Nybegynder
11. november 2002 - 17:01 Der er 11 kommentarer og
1 løsning

hjælp jeg er dum !!

Hej har en access db som jeg henter noget text ud af, og som dum som jeg er vil jeg gerne have at hvis folk skriver http://palle.dk, og andre lign. ting, at det så bliver konverteret til et link :-) Det ville jeg så ordne med noget kode som jeg har fundet på nettet og det følger her :
<%
Option Explicit

Const MyQUOT = """"
Const MySPACE = " "
Const LINK_START = "<a href="
Const LINK_END = "</a>"
Const DEFAULT_PROTOCOL = "http"

Function autoHighlight(Text)

    Dim Dummy
    Dim objRegExp, objMatch, objMatches
    Dim objFoundLinks, objFoundLinksLocations
   
    Set objRegExp = New RegExp
    objRegExp.IgnoreCase = True
    objRegExp.Global = True

    Set objFoundLinks = Server.CreateObject("Scripting.Dictionary")
    Set objFoundLinksLocations = Server.CreateObject("Scripting.Dictionary")
   
    Text = MySPACE & Text & MySPACE   
   
    ' e-mail
    objRegExp.Pattern = "\w+\@\w+\.\w+"
    Set objMatches = objRegExp.Execute(Text)
    For Each objMatch In objMatches
        If objFoundLinksLocations.Exists(objMatch.FirstIndex) Then
            'Kan ikke bruges...
        Else
            objFoundLinks.Add objMatch, "email"
            objFoundLinksLocations.Add objMatch.FirstIndex, "email"
        End If
    Next
   
    objRegExp.Pattern = "([A-Za-z]{2,5}\:\/\/)*\d\d?\d?\.\d\d?\d?\.\d\d?\d?\.\d?\d?\d?(\/+[\w\?\&\%\.]*)*"
    Set objMatches = objRegExp.Execute(Text)
    For Each objMatch In objMatches
        If objFoundLinksLocations.Exists(objMatch.FirstIndex) Then
            'Kan ikke bruges
        Else
            objFoundLinks.Add objMatch, "ip"
            objFoundLinksLocations.Add objMatch.FirstIndex, "ip"
        End If
    Next

    objRegExp.Pattern = "(\s|([A-Za-z]{2,5}\:\/\/))(\w+\.+\w{2,}\:*)+[\/+[\w\?\&\%\.\=]*]*\s"
    Set objMatches = objRegExp.Execute(Text)
    For Each objMatch In objMatches
        If objFoundLinksLocations.Exists(objMatch.FirstIndex) Then
            'kan ikke bruges
        Else
            objFoundLinks.Add objMatch, "server"
            objFoundLinksLocations.Add objMatch.FirstIndex, "inet"
        End If
    Next
   
    For Each objMatch In objFoundLinks.Keys
        If (InStr(1, objMatch.Value, "://") > 0) Or (InStr(1, objMatch.Value, "@") > 0) Then
            Text = Left(Text, objMatch.FirstIndex) & LINK_START & MyQUOT & Trim(objMatch.Value) & MyQUOT & ">" & TRIM(objMatch.Value) & LINK_END & Mid(Text, objMatch.FirstIndex + Len(objMatch.Value))
       
           
        '    autoHighlight = autoHighlight & " " & LINK_START & MyQUOT & Trim(objMatch.Value) & MyQUOT & ">" & Trim(objMatch.Value) & LINK_END & " - " & objFoundLinks.Item(objMatch) & " - " & objMatch.FirstIndex & "<br>"
        Else
            Text = Left(Text, objMatch.FirstIndex) & LINK_START & MyQUOT & DEFAULT_PROTOCOL & ":// " & Trim(objMatch.Value) & MyQUOT & ">" & Trim(objMatch.Value) & LINK_END & Mid(Text, objMatch.FirstIndex + Len(objMatch.Value))
            'Mid(Text, objMatch.FirstIndex, Len(objMatch.Value)) =
        '    autoHighlight = autoHighlight & " " & LINK_START & MyQUOT & DEFAULT_PROTOCOL & ":// " & Trim(objMatch.Value) & MyQUOT & ">" & Trim(objMatch.Value) & LINK_END & " - " & objFoundLinks.Item(objMatch) & " - " & objMatch.FirstIndex & "<br>"
        End IF
    Next
   
    autoHighlight = Text

End Function
%>

Og det så og fint ud og hvis jeg kører det eks, som følger med virker det også fint http://62.243.91.224/test/temp
men når jeg så kalder filen for functions.asp og includer den ligesom eksemplet gør, får jeg bare en dum 500 fejl.

jeg kalder det som følger :
<%=autoHighlight(Replace(Server.HTMLEncode(List("context")),vbCrLf,"<br>"))%> og hvis jeg fjerne autoHighlight virker det fint. Har også prøvet at fylde context i en variable men det hjalp heller ikke.
Avatar billede eagleeye Praktikant
11. november 2002 - 17:10 #1
Du er sikker på at de to filer ligge i samme folder?
Avatar billede dampnet Nybegynder
11. november 2002 - 17:12 #2
jep
Avatar billede NanoQ Nybegynder
11. november 2002 - 17:13 #3
en fantastisk sigende overskrift...
Avatar billede dampnet Nybegynder
11. november 2002 - 17:14 #4
tak tak :-)
Avatar billede eagleeye Praktikant
11. november 2002 - 17:17 #5
Prøv med, altså uden htmlencode for test:

autoHighlight(List("context"))
Avatar billede dampnet Nybegynder
11. november 2002 - 17:21 #6
får stadig den dumme 500 internal error
Avatar billede eagleeye Praktikant
11. november 2002 - 17:23 #7
Prøv i IE at slå dene fra:

funktioner -> internetindstillinger -> avanceret -> fjern kryds i "ved meddelelse om uskadelige http-fejl"
Avatar billede eagleeye Praktikant
11. november 2002 - 17:23 #8
så skulle du gerne få en lidt bedre fejl kode.
Avatar billede dampnet Nybegynder
11. november 2002 - 17:31 #9
ok nu får jeg følgende fejl :
Microsoft VBScript runtime error '800a01f4'

Variable is undefined: 'Conn'

/sune/www/admin/nyhed.asp, line 20

Her er min kode hvis du kan hjælpe mig :
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!-- #include file = "functions.asp" -->
<%
    Response.Buffer = false
    Response.Expires = -1000
   
    'start validering af bruger
    If session("Access") = "ok" Then
        If session("type") = "admin" Then
        Elseif session("type") = "skribent" Then
        Else
            Response.Redirect("default.asp?error=2")
        End If
    Else
        Response.Redirect("default.asp?error=1")
    End If
    'slut valigering af bruger

    'start oprettelse af database forbindelse   
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../../db/database.mdb")
    'slut oprettelse af database forbindelse
%>
<html>
    <head>
      <title>opret nyheder / slet nyheder / rediger nyheder</title>
      <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
  <body>
<%
    'start oprettelse og redigering af bruger
    If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        If Request.QueryString("createnyhed") = "true" Then
            SQLstr = "INSERT INTO nyhed (headline, context, username, email) VALUES ('"
            SQLstr = SQLstr & Request.Form("headline") & "', '" & Request.Form("context") & "', '"
            SQLstr = SQLstr & Request.Form("username") & "', '" & Request.Form("email") & "')"
        ElseIf Request.QueryString("editnyhed") = "true" Then
                SQLstr = "UPDATE nyhed SET headline = '" & Request.Form("headline") & "', context = '" & Request.Form("context") & "'"
                SQLstr = SQLstr & "WHERE nyhedsid = " & Request.Form("nyhedsid")
        End If
        Conn.Execute(SQLstr)
        'Conn.Close
        'Set Conn = Nothing       
        Response.Redirect("nyhed.asp")
    End If
    'slut oprettelse og redigering af bruger
   
    'start sletning af bruger
    If Not Request.QueryString("deletenyhed") = "" Then
        Conn.Execute("DELETE FROM nyhed WHERE nyhedsid = " & Request.QueryString("deletenyhed"))
        'Conn.Close
        'Set Conn = Nothing       
        Response.Redirect("nyhed.asp")
    End If
    'slut sletning af bruger


    'autoHighlight(Replace(Server.HTMLEncode(List("context")),vbCrLf,"<br>"))

    'start visning af nyheder
    Set List = Conn.Execute("SELECT *, Format$([date],'dd/mm/yyyy') AS formdate, Format$([date],'hh:mm') AS formtime FROM nyhed ORDER BY nyhedsid desc")
    Do While Not List.EOF
%>
<table width="480" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><%=List("headline")%></td>
    <td><%=List("formdate")%> | <%=List("formtime")%></td>
    <td><a href="nyhed.asp?editnyhed=<%=List("nyhedsid")%>">ret</a> | <a href="nyhed.asp?deletenyhed=<%=List("nyhedsid")%>">slet</a></td>
  </tr>
  <tr>
    <td colspan="3"><%=autoHighlight(List("context"))%></td>
  </tr>
  <tr>
    <td colspan="3">Skrevet af : <a href="mailto:<%=List("email")%>"><%=List("username")%></a></td>
  </tr>
</table><br><br>
<%
        List.MoveNext
    Loop
    List.Close
    'slut visning af nyheder
   
    If Not Request.QueryString("editnyhed") = "" Then
        Set List2 = Conn.Execute("SELECT * FROM nyhed WHERE nyhedsid=" & Request.QueryString("editnyhed"))
%>
    <form action="nyhed.asp?editnyhed=true" method="post">
        <input name="nyhedsid" value="<%=List2("nyhedsid")%>" type="hidden">
        headline : <input name="headline" value="<%=List2("headline")%>" type="text"><br>
        context : <textarea name="context"><%=List2("context")%></textarea><br>
        <input name="username" value="<%=List2("username")%>" type="hidden"><input name="email" value="<%=List2("email")%>" type="hidden">
        <input name="_reset" type="reset" value="reset"><input name="_submit" type="submit" value="submit">
    </form>
<%
    Else
%>
    <form action="nyhed.asp?createnyhed=true" method="post">
        headline : <input name="headline" type="text"><br>
        context : <textarea name="context"></textarea><br>
        <input name="username" value="<%=session("username")%>" type="hidden"><input name="email" value="<%=session("email")%>" type="hidden">
        <input name="_reset" type="reset" value="reset"><input name="_submit" type="submit" value="submit">       
    </form>
<%
    End If
    Conn.Close
    Set Conn = Nothing
%>
  </body>
</html>
Avatar billede eagleeye Praktikant
18. december 2003 - 14:21 #10
du har sikket option explicit i inlcude filen så prøv at tilføje denne linje lige før linje 20.

dim conn
Avatar billede eagleeye Praktikant
18. december 2003 - 14:21 #11
Du kan lukke et spørgsmål ved selv at svare og acceptere dit svar.
Avatar billede dampnet Nybegynder
07. januar 2004 - 16:46 #12
lukker
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