Avatar billede Slettet bruger
28. juli 2004 - 11:05 Der er 16 kommentarer og
1 løsning

Omdan tekst til klikbare hyperlinks?

Hejsa.

Når man indtaster en tekst og et links (f.eks. www.eksperten.dk) i min formular (som derefter gemmes i en Accesdatabase og fremvises på min webside), skulle det gerne komme frem som et klikbart hyperlinks. Men det gør det ikke.
Hvordan ordner man det?
Avatar billede Slettet bruger
28. juli 2004 - 11:07 #1
...ligesom her på denne website, lige oppe ovenover, hvor jeg har oprettet spørgsmålet. Dér kan man også klikke på www.eksperten.dk nu. Det er altså blevet omdannet til et klikbart hyperlink, efter at jeg har skrevet spørgsmålet.
Hvordan laver man det?
Avatar billede eagleeye Praktikant
28. juli 2004 - 11:59 #2
Du skal havde en function som kan lave links i tekst om til klikbare links:

Der har været en konkurrence på www.netkoders.dk og vinder script er her:
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=859&tech_id=1

Runner ups:
http://www.netcoders.dk/sources.asp?mode=view_source&cat_id=9&id=860&tech_id=1


Jeg bruger selv denne som laver www adresser og email adresser om til trykbare links, alt efter behov og ønsker kan det man vælge imellem de forskellíge.


Function LinkString2(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpEMail = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp|https)(:\/\/[\w]+)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
objRegExpHTTP2.Pattern = "(^|[^\/])(www)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpEMail.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpEMail.IgnoreCase = True

strOutput = objRegExpHTTP1.Replace(strInput, "<a href='$1$2$3$4' target='_blank'>$1$2$3$4</a>")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2$3$4' target='_blank'>$2$3$4</a>")
strOutput = objRegExpEMail.Replace(strOutput, " <a href='mailto:$1'>$1</a> ")

Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing
Set objRegExpEMail = Nothing

LinkString2 = strOutput
End Function



Og den kaldes sådan her:

str = "En steng som indeholder links (www.eksperten.dk) som skal laves om til klikbare links."
response.write linkString2 (str)
Avatar billede Slettet bruger
28. juli 2004 - 12:20 #3
eagleeye:
Efter dine links at læse, lyder dette som den helt rigtige løsning!

Men... jeg er altså helt nybegynder på dette felt, og håber derfor at du vil hjælpe mig lidt...

Både hvor jeg skal sætte koderne ind henne, og hvor str. skal kaldes henne.

Men her er alle mine koder:
-------------------------------------------------------------
Formularen:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head>
    <title>Master</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="dk-DK" />
</head>
<body>
<form method="post" action="kontakt-gem3.asp" name="form" id="form">
           
<table class="handling" border="0px" cellpadding="0px" cellspacing="0px">
    <tr>
        <td class="form2">

<input type="text" id="navn" name="navn" tabindex="1" value="" />

        </td>
    </tr>
    <tr>
        <td class="form2">

<textarea name="besked" id="besked" cols="20" rows="5" tabindex="2"></textarea>               
        </td>
    </tr>
    <tr>
        <td style="height: 6px;></td>
    </tr>
    <tr>
        <td></td>
        <td align="center" style="vertical-align: middle;">

<input type="submit" class="knapper" value="Send" style="width: 70px; height: 18px; cursor: hand; background-color: transparent;" tabindex="4"  />

<input type="reset" class="knapper" value="Forfra" name="button" style="width: 70px; height: 18px; cursor: hand; background-color: transparent;" tabindex="5" />

<input type="hidden" name="tid" id ="tid" value="<%=Now%>">
</form>
</body>
</html>
-------------------------------------------------------------

Og her er hvor dataérne bliver sendt hen (kontakt-gem3.asp):

<%
Session.LCID = 1030

'--==< De flg. 3 linier betinger accept af linieskift, gåseøjne og pinger i den formular, data sendes fra  >==-->
msg = replace(msg, vbcrlf, "<br>" & vbcrlf)
msg = replace(msg, """", "&#34;", 1, -1, 1)
msg = replace(replace(msg, """", "&#34;", 1, -1, 1), "'", "&#39;", 1, -1, 1)

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

strSQL ="Insert into kommentar (navn, besked, tid) values('" & Request.Form("navn")&"','" & Request.Form("besked") &"','" & Request.Form("tid") &"')"

Conn.Execute(strSQL)
response.write strnavn
Conn.close
Set Conn = Nothing
Response.Redirect "forsiden.asp"
%>
-------------------------------------------------------------

Jeg håber at du kan/vil hjælpe mig. :-)

Jeg forhøjer glædeligt til 200 points for en brugbar og komplet løsning, eagleeye!
Avatar billede eagleeye Praktikant
28. juli 2004 - 14:11 #4
Umiddelbart kan du enten lave linksne inden du gemmer teksten i databasen eller når du udskriver til skærmen.
Det du har vist ser det ud som om du gerne vil havde det gemt i databasen.

Du kan tilføje det sådan her i filen kontakt-gem3.asp:

<%
Session.LCID = 1030

'--==< De flg. 3 linier betinger accept af linieskift, gåseøjne og pinger i den formular, data sendes fra  >==-->
msg = replace(msg, vbcrlf, "<br>" & vbcrlf)
msg = replace(msg, """", "&#34;", 1, -1, 1)
msg = replace(replace(msg, """", "&#34;", 1, -1, 1), "'", "&#39;", 1, -1, 1)

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

strSQL ="Insert into kommentar (navn, besked, tid) values('" & Request.Form("navn")&"','" & Replace(LinkString2(Request.Form("besked")),"'","''") &"','" & Request.Form("tid") &"')"

Conn.Execute(strSQL)
response.write strnavn
Conn.close
Set Conn = Nothing
Response.Redirect "forsiden.asp"

'Funktioner til koden
Function LinkString2(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpEMail = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp|https)(:\/\/[\w]+)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
objRegExpHTTP2.Pattern = "(^|[^\/])(www)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpEMail.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpEMail.IgnoreCase = True

strOutput = objRegExpHTTP1.Replace(strInput, "<a href='$1$2$3$4' target='_blank'>$1$2$3$4</a>")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2$3$4' target='_blank'>$2$3$4</a>")
strOutput = objRegExpEMail.Replace(strOutput, " <a href='mailto:$1'>$1</a> ")

Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing
Set objRegExpEMail = Nothing

LinkString2 = strOutput
End Function


%>
Avatar billede eagleeye Praktikant
28. juli 2004 - 14:15 #5
Vil du hellere havde det hvor man skriver ud er det lige så nemt at tilføje :)
Fordelen ved først at ændre det ved udskrift er det er lettere at rette koden og tilpasse outputet som man gerne vil havde uden hele tiden at skulle gemme noget nyt for at se det nye kode i drift. Og vil du i fremtiden lave om outputet har du altid det orginale indput at arbejde på. Ulempen er at man hver gang man udskriver skal formatere outputet.
Avatar billede Slettet bruger
28. juli 2004 - 15:03 #6
eagleeye:
Det ser umiddelbart helt fint ud! Jeg kan desværre ikke teste det nu, men hvis du garanterer at det virker, vil jeg gerne tildele dig points med det samme. :-)
Du må så lige lægge et svar, ikke?

Og ja, det er nok en endnu bedre ide, at ændre det til ved udskriftet.
Så hvis det ikke er for meget, må du meget gerne gøre det for mig også. :-)

På forhånd rigtigt mange tak for hjælpen, eagleeye! :-)
Avatar billede eagleeye Praktikant
28. juli 2004 - 15:10 #7
Ja det er på samme måde, jeg ved ikke helt hvordan du udskriver det med du har sikkert noget i stil med:

Response.Write rs("besked")

Så kan du ligge funktion i bunden af filen som før vist, og kalde funktione sådan her:

Response.Write LinkString2(rs("besked"))
Avatar billede Slettet bruger
28. juli 2004 - 15:37 #8
-------------------------------------------------------------

Og her er hvor dataérne bliver sendt hen (kontakt-gem3.asp):

<%
Session.LCID = 1030

'--==< De flg. 3 linier betinger accept af linieskift, gåseøjne og pinger i den formular, data sendes fra  >==-->
msg = replace(msg, vbcrlf, "<br>" & vbcrlf)
msg = replace(msg, """", "&#34;", 1, -1, 1)
msg = replace(replace(msg, """", "&#34;", 1, -1, 1), "'", "&#39;", 1, -1, 1)

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

strSQL ="Insert into kommentar (navn, besked, tid) values('" & Request.Form("navn")&"','" & Request.Form("besked") &"','" & Request.Form("tid") &"')"

Conn.Execute(strSQL)
response.write strnavn
Conn.close
Set Conn = Nothing
Response.Redirect "forsiden.asp"
%>
-------------------------------------------------------------
Avatar billede Slettet bruger
28. juli 2004 - 15:38 #9
Nu har jeg postet den fil ind, hvor dataerne bliver trukket ud fra databasen. Det er den du mener, ikke også?
Avatar billede Slettet bruger
28. juli 2004 - 15:46 #10
Nej, vrøvl!!! Det er selvfølgelig denne her:


<%
' Dansk datoformat :
Session.LCID = 1030

' Databaseforbindelse + sti til databasen :
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("test.mdb")
Conn.Open DSN

' SQL forespørgsel :
strSQL = "Select * from kommentar order by id desc"

' Udfør forespørgsel (rs indeholder nu resultatet) :
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke :
Do
%>

<table cellpadding="0px" cellspacing="0px" border="0px" style="width: 640px" style="overflow-x: hidden">
    <tr>
        <td style="width: 640px" style="overflow-x: hidden">

<div class="post">

<div class="overskrift">
   
<table cellpadding="4px" cellspacing="0px" border="0px" style="width: 640px">
    <tr>
        <td style="width: 50%; text-align: left">Navn:&nbsp;&nbsp;&nbsp;<%Response.Write rs("navn")%></td>
        <td style="width: 50%; text-align: left">Dato & tid:&nbsp;&nbsp;&nbsp;<%Response.Write rs("tid")%></td>
    </tr>
</table>

</div>

<div class="besked">
<table cellpadding="8px" cellspacing="0px" border="0px" style="width: 640px">
    <tr>
        <td style="width: 640px; text-align: left">
        <%=replace(rs("besked"),vbCrLf,"<br>")%>
        </td>
    </tr>
</table>
</div>

</div>

        </td>
    </tr>
</table>

<%
' Gå til næste Record i rs :
rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File) :
Loop While Not rs.EOF

' Luk databaseforbindelsen :
Conn.Close
Set Conn = Nothing
%>
Avatar billede Slettet bruger
28. juli 2004 - 15:49 #11
eagleeye:
Jeg fik kun tildelt dig 60 ud af de lovede 200 points, men jeg har oprettet et nyt spørgsmål, hvorfra du kan hente resten af dine points.

Igen: tak for hjælpen.  :-)
Avatar billede roenving Novice
28. juli 2004 - 15:52 #12
http://www.eksperten.dk/spm/524103

Linket er nødvendigt, da Eksperten ikke sender mails til brugere, hvis navn står i et spørgsmåls titel !-)
Avatar billede eagleeye Praktikant
28. juli 2004 - 16:08 #13
Sådan her må det så blive:


<%
' Dansk datoformat :
Session.LCID = 1030

' Databaseforbindelse + sti til databasen :
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("test.mdb")
Conn.Open DSN

' SQL forespørgsel :
strSQL = "Select * from kommentar order by id desc"

' Udfør forespørgsel (rs indeholder nu resultatet) :
Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke :
Do
%>

<table cellpadding="0px" cellspacing="0px" border="0px" style="width: 640px" style="overflow-x: hidden">
    <tr>
        <td style="width: 640px" style="overflow-x: hidden">

<div class="post">

<div class="overskrift">
   
<table cellpadding="4px" cellspacing="0px" border="0px" style="width: 640px">
    <tr>
        <td style="width: 50%; text-align: left">Navn:&nbsp;&nbsp;&nbsp;<%Response.Write rs("navn")%></td>
        <td style="width: 50%; text-align: left">Dato & tid:&nbsp;&nbsp;&nbsp;<%Response.Write rs("tid")%></td>
    </tr>
</table>

</div>

<div class="besked">
<table cellpadding="8px" cellspacing="0px" border="0px" style="width: 640px">
    <tr>
        <td style="width: 640px; text-align: left">
        <%=LinkString2(replace(rs("besked")),vbCrLf,"<br>")%>
        </td>
    </tr>
</table>
</div>

</div>

        </td>
    </tr>
</table>

<%
' Gå til næste Record i rs :
rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File) :
Loop While Not rs.EOF

' Luk databaseforbindelsen :
Conn.Close
Set Conn = Nothing

'Funktioner til koden
Function LinkString2(strInput)
Set objRegExpHTTP1 = New RegExp
Set objRegExpHTTP2 = New RegExp
Set objRegExpEMail = New RegExp

objRegExpHTTP1.Pattern = "(http|ftp|https)(:\/\/[\w]+)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
objRegExpHTTP2.Pattern = "(^|[^\/])(www)(.[\w]+)([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?"
objRegExpEMail.Pattern = "([\w\._-]+@[\w\._-]+\.[A-Za-z]{2,3}\S*)"

objRegExpHTTP1.Global = True
objRegExpHTTP2.Global = True
objRegExpEMail.Global = True

objRegExpHTTP1.IgnoreCase = True
objRegExpHTTP2.IgnoreCase = True
objRegExpEMail.IgnoreCase = True

strOutput = objRegExpHTTP1.Replace(strInput, "<a href='$1$2$3$4' target='_blank'>$1$2$3$4</a>")
strOutput = objRegExpHTTP2.Replace(strOutput, " $1<a href='http://$2$3$4' target='_blank'>$2$3$4</a>")
strOutput = objRegExpEMail.Replace(strOutput, " <a href='mailto:$1'>$1</a> ")

Set objRegExpHTTP2 = Nothing
set objRegExpHTTP1 = Nothing
Set objRegExpEMail = Nothing

LinkString2 = strOutput
End Function


%>
Avatar billede Slettet bruger
28. juli 2004 - 20:36 #14
roenving:
Tak for anvisningen. Det tænkte jeg ikke lige på.  :-/
Avatar billede Slettet bruger
29. juli 2004 - 09:27 #15
eagleeye:
Hejsa igen.

Nu har jeg testet de 2 løsninger, men det sidste eksempel laver fejl her:
<%=LinkString2(replace(rs("besked")),vbCrLf,"<br>")%>

Og det første eksempel går igennem uden fejl, men hyperlinks fungerer desværre ikke.
Og det er enten med eller uden http:// når jeg skriver en webadresse, ej heller e-mail adressen.

Kan du ikke venligst kigge på det igen? Uanset hvilken løsninge det bliver, bare det fungerer.  :-)
Avatar billede eagleeye Praktikant
29. juli 2004 - 10:19 #16
Du skal kun brugen den ene af løsningerne.
Prøv at rette denne:

<%=LinkString2(replace(rs("besked")),vbCrLf,"<br>")%>

Til dette:

<%=LinkString2(replace(rs("besked"),vbCrLf,"<br>"))%>
Avatar billede Slettet bruger
29. juli 2004 - 15:44 #17
eagleeye:
Hejsa igen.

Ja, nu virker det hele som det skal! Mange tak for hjælpen! :-)
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