Avatar billede Slettet bruger
05. august 2002 - 15:20 Der er 15 kommentarer og
1 løsning

Variabel spørgsmål

Hej... Jeg skriver nogen beskeder ud i et loop. I dette loop tjekker den efter bestemte keywords og gør det til et link (i koden nedenfor er jubii brugt som eksempel). Det jeg ønsker er, at der ikke kun er angivet ét keyword - men flere og at linkene er forskellige - dvs. hvis der f.eks. står jubii - skal den linke til jubii.dk, står der yahoo skal den linke til yahoo.dk osv. Der skal altså tilknyttes flere variabler med tilhørende link.

PS: alt det mellemliggende kode skal altså bruges - derfor har jeg klippet det med ind.


--- KODE ---
<%
Dim besked, erstattekst, finalbesked
erstattekst = "test"
finalbesked = replace(besked, erstattekst, "<a href='http://www.jubii.dk' target='_blank'>" & erstattekst & "</a>")

index = inStr(1,finalbesked,"#id")
do while index > 0
  tempChar = mid(finalbesked,index+3,1)
  counter = 1
  'forsæt indtil næste karakter ikke er et tal
  do while isNumeric(tempChar)
    tempChar = mid(finalbesked,index+3+counter,1)
    counter = counter + 1
  loop
  'Så kan slut på tallet findes
  indexSlut = index+3+counter-1
  finalbesked = left(finalbesked,index-1) & mid(finalbesked,indexSlut)
  index = inStr(indexSlut,finalbesked,"#id")
loop

        If InStr(besked,"skjulnr") <> 0 Then
        visudennr = Left(finalbesked, InStrRev(finalbesked, "skjulnr") - 1)

response.write visudennr
    else
Response.Write finalbesked
end if %>

--- KODE SLUT ---
Avatar billede Slettet bruger
05. august 2002 - 15:24 #1
PS: Det er ok hvis jeg kan trække keywords'ene og tilhørende link ud af databasen, hvis ikke det er for ressource-krævende at den skal hente hver gang.
Avatar billede Slettet bruger
05. august 2002 - 15:30 #2
Hov - mindre fejl - der skal selvfølgelig stå
erstattekst = "jubii"
Avatar billede tmceu Praktikant
05. august 2002 - 16:38 #3
Du burde kunne nøjes med at erstatte disse linier:

erstattekst = "test"
finalbesked = replace(besked, erstattekst, "<a href='http://www.jubii.dk' target='_blank'>" & erstattekst & "</a>")

med:

erstattekst = Split("test,test2,test3", ",")
erstatmed = Split("<a href='http://www.jubii.dk' target='_blank'>,<a href='http://www.yahoo.dk' target='_blank'>,<a href='http://www.jp.dk' target='_blank'>", ",")

For i = 0 To UBound(erstattekst)
besked = replace(besked, etstatmed(i), "" & erstattekst(i) & "</a>")
Next

finalbesked = besked
Avatar billede tmceu Praktikant
05. august 2002 - 16:42 #4
Hov, mindre fejl her også :-)

erstattekst = Split("test,test2,test3", ",")
erstatmed = Split("<a href='http://www.jubii.dk' target='_blank'>,<a href='http://www.yahoo.dk' target='_blank'>,<a href='http://www.jp.dk' target='_blank'>", ",")

For i = 0 To UBound(erstattekst)
besked = replace(besked, erstattekst(i), ertstatmed(i) & erstattekst(i) & "</a>")
Next
Avatar billede Slettet bruger
05. august 2002 - 17:12 #5
Får desværre:

Typer stemmer ikke overens
tagwall.asp, line 176

176: besked = replace(besked, erstattekst(i), ertstatmed(i) & erstattekst(i) & "</a>")
Avatar billede tmceu Praktikant
05. august 2002 - 17:21 #6
Der var en stavefejl i "erstatmed"

erstattekst = Split("test,test2,test3", ",")
ertstatmed = Split("<a href='http://www.jubii.dk' target='_blank'>,<a href='http://www.yahoo.dk' target='_blank'>,<a href='http://www.jp.dk' target='_blank'>", ",")

For i = 0 To UBound(erstattekst)

besked = replace(besked, erstattekst(i), ertstatmed(i)    & erstattekst(i) & "</a>")
Next
Avatar billede Slettet bruger
05. august 2002 - 17:27 #7
Hmm... Nu brokker den sig andet sted:

Procedurekaldet eller argumentet er ugyldigt: 'left'
tagwall.asp, line 197

197 = visudennr = Left(finalbesked, InStrRev(finalbesked, "skjulnr") - 1)


<%
Dim besked, erstattekst, finalbesked

erstattekst = Split("test,test2,test3", ",")
ertstatmed = Split("<a href='http://www.jubii.dk' target='_blank'>,<a href='http://www.yahoo.dk' target='_blank'>,<a href='http://www.jp.dk' target='_blank'>", ",")

For i = 0 To UBound(erstattekst)

besked = replace(besked, erstattekst(i), ertstatmed(i)    & erstattekst(i) & "</a>")
Next

index = inStr(1,finalbesked,"#id")
do while index > 0
  tempChar = mid(finalbesked,index+3,1)
  counter = 1
  'forsæt indtil næste karakter ikke er et tal
  do while isNumeric(tempChar)
    tempChar = mid(finalbesked,index+3+counter,1)
    counter = counter + 1
  loop
  'Så kan slut på tallet findes
  indexSlut = index+3+counter-1
  finalbesked = left(finalbesked,index-1) & mid(finalbesked,indexSlut)
  index = inStr(indexSlut,finalbesked,"#id")
loop

        If InStr(besked,"skjulnr") <> 0 Then
        visudennr = Left(finalbesked, InStrRev(finalbesked, "skjulnr") - 1)

response.write visudennr
    else
Response.Write finalbesked
end if %>
Avatar billede tmceu Praktikant
05. august 2002 - 17:32 #8
Efter min for..next skal du indsætte en finalbesked = besked
Avatar billede Slettet bruger
05. august 2002 - 17:37 #9
Ja - nu virker det. Jeg tænkte på (hvis nu man forestiller sig det er mange forskellige keywords den skal lede efter) om man kunne trække keywords+link ud af databasen INDEN man laver loopet og så lade erstattekst og ertstatmed "fylde" op med dem fra databasen i stedet?

---
erstattekst = Split("test,test2,test3", ",")
ertstatmed = Split("<a href='http://www.jubii.dk' target='_blank'>,<a href='http://www.yahoo.dk' target='_blank'>,<a href='http://www.jp.dk' target='_blank'>", ",")
---
Avatar billede Slettet bruger
05. august 2002 - 17:41 #10
Også fordi man skal tjekke efter eksempelvis "aalborg", "Aalborg", "ålborg" osv... Så vil listen jo blive uendelig lang.
Avatar billede tmceu Praktikant
05. august 2002 - 17:52 #11
Det kan du godt. Du kan bl.a. kigge på GetRows metoden for et recordset. Se eks. her: http://www.w3schools.com/ado/met_rs_getrows.asp
Avatar billede Slettet bruger
05. august 2002 - 18:06 #12
Er det noget du kan hjælpe med? Fordobler gerne pointene...

Altså - FØR jeg overhovedet henter beskederne ud så;

SQL = "SELECT * FROM keywords"
ConnString= "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
RS.open SQL, ConnString, 1
p=rs.GetRows(2,0)

response.write(p(0,0))
response.write("<br>")
response.write(p(1,0))
response.write("<br>")
response.write(p(2,0))


RS.Close
Set RS = Nothing
Avatar billede Slettet bruger
05. august 2002 - 18:34 #13
Eller rettere - nu trækker den alle data ud og smider dem under hinanden - men hvordan kommer dataene til at indgå i dine variabler "erstattekst" og "erstatmed"?

'--- HENT KEYWORDS

Set RS = server.createobject ("ADODB.recordset")
SQL = "SELECT * FROM keywords"
ConnString= "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("database.mdb")
RS.open SQL, ConnString, 1

If  rs.eof then
  response.write "INGEN POSTER"
  response.end
end if


response.write "<table border='1'><tr>" & vbcrlf
'Put Headings On The Table of Field Names
for each whatever in rs.fields
  response.write "<td><b>" & whatever.name & "</B></TD>" & vbcrlf
next
response.write "</tr>" & vbcrlf

' Now lets grab all the records
alldata=rs.getrows

numcols=ubound(alldata,1)
numrows=ubound(alldata,2)
FOR rowcounter= 0 TO numrows
  response.write "<tr>" & vbcrlf
  FOR colcounter=0 to numcols
      thisfield=alldata(colcounter,rowcounter)
      if isnull(thisfield) then
        thisfield=shownull
      end if
      if trim(thisfield)="" then
        thisfield=showblank
      end if
      response.write "<td valign=top>"
      response.write thisfield
      response.write "</td>" & vbcrlf
  NEXT
  response.write "</tr>" & vbcrlf
NEXT
response.write "</table>"
Avatar billede Slettet bruger
05. august 2002 - 19:02 #14
Ok - prøver at stille det som et spørgsmål for sig.
Avatar billede tmceu Praktikant
05. august 2002 - 21:48 #15
Sorry, har været væk.
Avatar billede Slettet bruger
05. august 2002 - 23:48 #16
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