Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:06 Der er 20 kommentarer og
2 løsninger

Problemer med at "en søg link database"

Hej,

jeg har problemer med en linkdatabase/søgefunktion som jeg fandt på nettet. Asp scriptet er en link søge funktion, hvor man kan søge efter links der er i en access database. Problemet opstår når der klikkes på linket på hjemmesiden. Nogle gange tilføjer den "%20" til linket i databasen så det går galt. Andre links er det ok og andre igen virker ikke. Det ser således ud asp stykket hvor linket udskrives:

<a href=links.asp?mode=id&id=" & rs("ID") ">&nbsp;" & rs("Navn") & "</b></font></a>"

Jeg har prøvet at ændre det til:

<a href= & rs("url") & ">&nbsp;" & rs("Navn") & "</a>

Herefter virker de links der bliver skrevet ud fint, bortset fra at den så ikke længere tæller en mere til hits, når man klikker på et link. (en række i databasen indeholder 5 kolonner i en række, navn, url, hits, beskrivelse og sogeord)

Er der nogle der har en løsning til problemet, hvor den viser linkesne korrekt og samtidigt addere en til links der bliver klikket på.
Avatar billede medions Nybegynder
24. juni 2002 - 23:10 #1
Jamen hvis du gerne vil undgå at der kommer til at stå %20 så skal du sætte en Replace() funktion på!

strConvert = Replace(rs("url"),"%20","")
...og så skal du sætte det ind i databasen

//>Rune
Avatar billede tmceu Praktikant
24. juni 2002 - 23:11 #2
%20 erstatter mellemrum, lad være med at anvende mellemrum i dine links.
Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:16 #3
satans det er pga mellemrum. Så er spørgsmålet jo følgende:

Jeg har nu samlet 1300 links i en database som jeg har importeret fra et excel ark. Fremfor at prøve hver af de 1300 links, er der så en anden måde, hvor jeg kan fjerne det mellem rum som jeg må er kommet efter nogle af de links der er i excelarket - access tabellen?
Avatar billede tmceu Praktikant
24. juni 2002 - 23:18 #4
Du burde kunne køre dette SQL statement

UPDATE Tabel SET Felt = REPLACE(Felt, ' ', '')
Avatar billede medions Nybegynder
24. juni 2002 - 23:20 #5
well, ja..

lav en connection til din database... og brug følgende:

While Not objRs.EOF
Set objRsNew = Server.CreateObject("ADODB.Recordset")
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("kolonne_der_skal_erstattes") = Replace(objRs("kolonne_der_skal_erstattes"),"%20","")
objRsNew.Update
objRs.MoveNext()
Wend

så gør du det ved alle felterne i databasen!
//>Rune
Avatar billede tmceu Praktikant
24. juni 2002 - 23:23 #6
En lille korrektion jvf. medions' seneste kommentar...

Hvis den har indsat %20 i databasen, skal du også køre denne:

UPDATE Tabel SET Felt = REPLACE(Felt, '%20', '')

Du kan køre dette direkte i databasen, det er IKKE nødvendigt at køre dit recordset igennem via ASP.
Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:26 #7
Hej Medions og tmceu,

tak for svar - i bliver nok nød til at dele pointene.

Jeg er dog lidt forvirret. hvad er det helt præcist jeg skal nøjes med at gøre nu? Det står ikke %20 i databasen. Der er blot en mellemrum efter linket som skaber kaoset.
Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:26 #8
når jeg siger hvad jeg skal gøre mener jeg selvfølgelig for at fjerne det mellemrum
Avatar billede medions Nybegynder
24. juni 2002 - 23:28 #9
ahh... så gør du bare som TMCEU har gjort...

UPDATE Tabel SET Felt = REPLACE(Felt, ' ', '')

Du kan oxo bruge min løsning:

While Not objRs.EOF
Set objRsNew = Server.CreateObject("ADODB.Recordset")
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("kolonne_der_skal_erstattes") = Replace(objRs("kolonne_der_skal_erstattes")," ","")
objRsNew.Update
objRs.MoveNext()
Wend
//>Rune
Avatar billede tmceu Praktikant
24. juni 2002 - 23:29 #10
Du skal undgå al brug af mellemrum i dine links. Når du anvender mellemrum i et link, bliver dette URL encoded til %20 når du klikker på det.
Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:32 #11
ok så hvis jeg skriver :

UPDATE Tabel SET Felt = REPLACE(Felt, ' ', '')

Du kan oxo bruge min løsning:

While Not objRs.EOF
Set objRsNew = Server.CreateObject("ADODB.Recordset")
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("kolonne_der_skal_erstattes") = Replace(objRs("kolonne_der_skal_erstattes")," ","")
objRsNew.Update
objRs.MoveNext()
Wend


på en asp side med connection til db'en så skulle den være klaret? Det eneste jeg skal rette i det er navnet på kolonnen?
Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:33 #12
sorry jeg mener at skrive:

While Not objRs.EOF
Set objRsNew = Server.CreateObject("ADODB.Recordset")
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("kolonne_der_skal_erstattes") = Replace(objRs("kolonne_der_skal_erstattes")," ","")
objRsNew.Update
objRs.MoveNext()
Wend
Avatar billede medions Nybegynder
24. juni 2002 - 23:38 #13
yep...
-men husk oxo lige en SQL statement!


fx.
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("database.mdb")
strSQL = "SELECT * FROM tabel"
Set objRs = objConn.Execute(strSQL)
While Not objRs.EOF
Set objRsNew = Server.CreateObject("ADODB.Recordset")
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("kolonne_der_skal_erstattes") = Replace(objRs("kolonne_der_skal_erstattes")," ","")
objRsNew.Update
objRs.MoveNext()
Wend

//>Rune
Avatar billede medions Nybegynder
24. juni 2002 - 23:38 #14
Thx 4 Poinz

//>Rune
Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:41 #15
det var så lidt.

hmmm. Jeg skriver :

Set objRs = objConn.Execute(strSQL)
While Not objRs.EOF
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("url") = Replace(objRs("url")," ","")
objRsNew.Update
objRs.MoveNext()
Wend


efter en db connection hvor jeg også har udskrivet noget til siden, men den melder fejl, når jeg kører siden - ved du hvorfor?
Avatar billede medions Nybegynder
24. juni 2002 - 23:45 #16
nææææ, ik' rigtig... jeg ved jo ikke hvad fejl den kommer med ;-)
Hvad er det for en fejl?

//>Rune
Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:47 #17
Den melder fejlen:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

/test/links/samletlinks.asp, line 53 


line 53 = Set objRs = objConn.Execute(strSQL


Total set ser det sådan her ud :


  <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("links.mdb")
Conn.Open DSN
strSQL = "SELECT COUNT(*) AS antal FROM links WHERE linktype='p' "
Set rs = Conn.Execute(strSQL)

Response.Write "(<font color='#FF0000'>" & rs("antal") & "</font>" & ")"



Set objRs = objConn.Execute(strSQL)
While Not objRs.EOF
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("url") = Replace(objRs("url")," ","")
objRsNew.Update
objRs.MoveNext()
Wend


    %>
Avatar billede medions Nybegynder
24. juni 2002 - 23:49 #18
Det er fordi den hedder objRs i stedet for rs!
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("links.mdb")
Conn.Open DSN
strSQL = "SELECT COUNT(*) AS antal FROM links WHERE linktype='p' "
Set objRs = Conn.Execute(strSQL)

Response.Write "(<font color='#FF0000'>" & rs("antal") & "</font>" & ")"

//>Rune


Set objRs = objConn.Execute(strSQL)
While Not objRs.EOF
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("url") = Replace(objRs("url")," ","")
objRsNew.Update
objRs.MoveNext()
Wend
Avatar billede mini97ad Nybegynder
24. juni 2002 - 23:57 #19
hmm. den melder samme fejl - det ser nu sådan her ud. Det er ok, hvis du ikke gider at hjælpe mere, men hvis du gør så er det stort:


    <%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("links.mdb")
Conn.Open DSN
strSQL = "SELECT COUNT(*) AS antal FROM links WHERE linktype='p' "
Set objRs = Conn.Execute(strSQL)

Response.Write "(<font color='#FF0000'>" & objRs("antal") & "</font>" & ")"



Set objRs = objConn.Execute(strSQL)
While Not objRs.EOF
objRsNew.Open objConn, strSQL, 1, 3
objRsNew("url") = Replace(objRs("url")," ","")
objRsNew.Update
objRs.MoveNext()
Wend


    %>
Avatar billede medions Nybegynder
25. juni 2002 - 00:08 #20
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("links.mdb")
Conn.Open DSN
strSQL = "SELECT COUNT(*) AS antal FROM links WHERE linktype='p' "
Set objRs = Conn.Execute(strSQL)

Response.Write "(<font color='#FF0000'>" & objRs("antal") & "</font>" & ")"


strSQLNew = "SELECT * FROM tabel WHERE kolonne=" & et_eller_andet
Set objRs = objConn.Execute(strSQL)
While Not objRs.EOF
Set objRsNew = Server.CreateObject("ADODB.Recordset")
objRsNew.Open objConn, strSQLNew, 1, 3
objRsNew("url") = Replace(objRs("url")," ","")
objRsNew.Update
objRs.MoveNext()
Wend
%>

//>Rune
Avatar billede mini97ad Nybegynder
25. juni 2002 - 00:10 #21
hej Rune,

jeg har løst problemet i excel : søg " " erstat med "" i kolonnen. Men tusind tak for din hjælp og hav en god aften
Avatar billede medions Nybegynder
25. juni 2002 - 00:11 #22
;-)

Tak iligemåde!
//>Rune
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