06. januar 2005 - 09:12Der er
28 kommentarer og 1 løsning
Database udtræk med Jave Script
Okay denne her kan jeg ikke greje ud :)
Jeg har to tabeller hvorfra jeg henter 3 kolonner
rs1("tekst")
rs2("ord") og rs2("betydning")
Den ønskede funktion skal lave et gennemløb af rs1("tekst"), Hvis den støder på et ord der er tilsvarende et felt i rs2("ord"), skal teksten ændres, feks have en kraftigere farve eller være "bold".
Når musen er over ordet skal der komme en lille boks frem ved cursoren med forklaringen i sig.
Er der nogen herinde der har et link til en kilde, eller et bud på hvordan det gøres.
... Jeg har vist misforstået noget. Der kan være være flere resultater i rs2 ikke. Sådan at den f.eks skal tjekke for "bil", "cykel" osv??
Så skal der nemlig nok laves en funktion til det...
funktion Myreplace(funkText) dim returVal returVal = funkText on error resume next rs2.MoveFirst while not rs2.eof returVal = replace(returVal ,rs2("ord"),"<span title="""& rs2("betydning") &""" style=""color:red"">"& rs2("ord") &"</span>") rs2.MoveNext loop on error goto 0 end funktion
Du skal lave funktionen Myreplace(), så kalder du bare den når du skal udskrive. Der var foresten en fejl i min funktion. Dette burde virke:
funktion Myreplace(funkText) dim returVal returVal = funkText on error resume next rs2.MoveFirst while not rs2.eof returVal = replace(returVal ,rs2("ord"),"<span title="""& rs2("betydning") &""" style=""color:red"">"& rs2("ord") &"</span>") rs2.MoveNext loop on error goto 0 Myreplace = returVal end funktion
SET RS_opret = server.CreateObject("ADODB.RecordSet") RS_opret.open "En eller anden SQL sætning",conn_s,1,3 SET rs2 = server.CreateObject("ADODB.RecordSet") rs2.open "SELECT * FROM ordbog",conn_s,1,3
do while not RS_opret.eof 'evt noget andet udskrift også... response.write Myreplace(RS_opret("tekst")) RS_opret.MoveNext loop
Jeg har et opslag der hedder "NGE" - det betyder at hvis der bliver skriver "Mange" er de tre sidste opslag taget med, løsningen skal kun bruges hvis det er et ord, og ikek en del af et ord.
Ja den er sværre at klare. Der er jo flere måder det ord kan forkomme i teksten.
"Her skal der tjekkes for space før og komma efter NGE, som mange..." "Her skal der tjekkes for space før og pinktum efter NGE. Mange kan..." "NGE står her først, og sidst NGE" "eller i parentes (NGE)" "Hvad betyder NGE?" ... ...
Der er mange muligheder, så der skal vi vist bruge noget reg exp i stedet. Det er jeg dog først lige begyndt at bruge, så det skal jeg bruge lidt tid til at løse...
function Myreplace(funkText) dim returVal, Rx returVal = funkText Set Rx = New RegExp Rx.Global = True Rx.IgnoreCase = True on error resume next rs2.MoveFirst do while not rs2.eof Rx.Pattern = "([\(\s]*)("& rs2("ord") &")([\)!,.\s]*)" strInput = Rx.Replace(returVal, "<span onMouseOver=""showHide('pop$2');"" onMouseOut=""showHide('pop$2');"" style=""color:red""><div id=""pop$2"" style=""border:1px solid black;background-color:white;position:absolute;display:none;"">"& rs2("betydning") &"</div>$2</span>" rs2.MoveNext loop on error goto 0 Myreplace = returVal end function
function Myreplace(funkText) dim returVal, Rx returVal = funkText Set Rx = New RegExp Rx.Global = True Rx.IgnoreCase = True on error resume next rs2.MoveFirst do while not rs2.eof Rx.Pattern = "([(\s])("& rs2("ord") &")([)?!,.\s])" strInput = Rx.Replace(returVal, "$1<span onMouseOver=""showHide('pop$2');"" onMouseOut=""showHide('pop$2');"" style=""color:red""><div id=""pop$2"" style=""border:1px solid black;background-color:white;position:absolute;display:none;"">"& rs2("betydning") &"</div>$2</span>$3") rs2.MoveNext loop on error goto 0 Myreplace = returVal end function
Ok, Du kalder recordset'et noget forskelligt hver gang. Så prøv denne:
function Myreplace(funkText, FunkORS) dim returVal, Rx returVal = funkText Set Rx = New RegExp Rx.Global = True Rx.IgnoreCase = True on error resume next FunkORS.MoveFirst do while not FunkORS.eof Rx.Pattern = "([(\s])("& FunkORS("ord") &")([)?!,.\s])" strInput = Rx.Replace(returVal, "$1<span onMouseOver=""showHide('pop$2');"" onMouseOut=""showHide('pop$2');"" style=""color:red""><div id=""pop$2"" style=""border:1px solid black;background-color:white;position:absolute;display:none;"">"& FunkORS("betydning") &"</div>$2</span>$3") FunkORS.MoveNext loop on error goto 0 Myreplace = returVal end function
SET rs21 = server.CreateObject("ADODB.RecordSet") rs21.open "SELECT * FROM ordbog",conn_s,1,3
Skod fejl..... "strInput" skulle lige udskiftes med "returVal". Også kan vi vist også godt fjerne fejlhåndteringen, så vi kan se hvis der opstår flere fejl :o)
function Myreplace(funkText, FunkORS) dim returVal, Rx returVal = funkText Set Rx = New RegExp Rx.Global = True Rx.IgnoreCase = True ' on error resume next FunkORS.MoveFirst do while not FunkORS.eof Rx.Pattern = "([(\s])("& FunkORS("ord") &")([)?!,.\s])" returVal = Rx.Replace(returVal, "$1<span onMouseOver=""showHide('pop$2');"" onMouseOut=""showHide('pop$2');"" style=""color:red""><div id=""pop$2"" style=""border:1px solid black;background-color:white;position:absolute;display:none;"">"& FunkORS("betydning") &"</div>$2</span>$3") FunkORS.MoveNext loop ' on error goto 0 Myreplace = returVal end function
Synes godt om
Ny brugerNybegynder
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.