Avatar billede ponyboye Nybegynder
27. august 2004 - 02:36 Der er 20 kommentarer og
1 løsning

Hvordan undgår jeg denne modstridhed af udtræk?

jeg har denne her der går ind i databasen for at sammenline ord der passer sammen og så udskriver en beskrivelse. Den virker helt fint, lige til nu. Nu laver den et eller ande sjovt:

http://www.danskehojtider.dk/visopskrift.asp?id=7

Hvad er det der går galt?

<%
OpenDatabase

'Hent array med keywords:
strSQL = "SELECT kw_ID, kw_word FROM keywords"
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then arrKeywords = rs.getRows() End If
rs.Close
Set rs = Nothing

strSQL = "Select * From opskrifter Where id = "&Request.Querystring("id")&""

Set rs = Conn.Execute(strSQL)

Response.Write "<strong><h3>" & rs("navn") & "</h3></strong><br><br>"

Response.Write "<u>Antal personer:</u>&nbsp;" & rs("personer") & "<br><br>"

Response.Write "<u>Tilberedningstid:</u>&nbsp;" & rs("tid") & "&nbsp;min" & "<br><br>"

strTekst = rs("in1")
strTekst1 = rs("fremgang")
If (IsArray(arrKeywords)) Then
For i = 0 To UBound(arrKeywords,2)
  tempKey = arrKeywords(1,i)
  strTekst = Replace(Replace(strTekst, LCase(tempKey), "<a href='#' title='Se vare beskrivelse for " & LCase(tempKey) & "' onClick='java script:doKey(" & arrKeywords(0,i) & ")'>" & LCase(tempKey) & "</a>"), tempKey, "<a href='#' onClick='java script:doKey(" & arrKeywords(0,i) & ")'>" & tempKey & "</a>")
Next
End If

Response.Write "<u>Ingedienser:</u><br><br>" & strTekst & "&nbsp;&nbsp;<br><br>"

Response.Write "<u>Fremgangsmåde:</u><br><br>" & strTekst1 & "<br><br><br><br>"

Response.Write "<u>Skrevet af:</u>&nbsp;&nbsp;&nbsp;" & rs("af") & "<br><br>"

%><script language="JavaScript">
function doKey(myid) {
var myheight = 450;
var mywidth = 470;
var winleft = (screen.width - myheight) / 2;
var winUp = (screen.height - mywidth) / 2;

winstyle='height='+myheight+',width='+mywidth+',status=no,scrollbars=yes,left='+winleft+',top='+winUp;
window.open("beskriv.asp?id="+myid,'vare',winstyle);
}
</script>
Avatar billede ponyboye Nybegynder
27. august 2004 - 11:23 #1
er der ikke nogen der kan hjælpe?
Avatar billede ellebaek Nybegynder
27. august 2004 - 11:54 #2
hmm...

måske kan jeg da hjælpe..

Prøv sådan her:

<%
OpenDatabase

'Hent array med keywords:
strSQL = "SELECT kw_ID, kw_word FROM keywords"
Set rs = Conn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then arrKeywords = rs.getRows() End If
rs.Close
Set rs = Nothing

strSQL = "Select * From opskrifter Where id = "&Request.Querystring("id")&""

Set rs = Conn.Execute(strSQL)

Response.Write "<strong><h3>" & rs("navn") & "</h3></strong><br><br>"

Response.Write "<u>Antal personer:</u>&nbsp;" & rs("personer") & "<br><br>"

Response.Write "<u>Tilberedningstid:</u>&nbsp;" & rs("tid") & "&nbsp;min" & "<br><br>"

strTekst = rs("in1")
strTekst1 = rs("fremgang")
If (IsArray(arrKeywords)) Then
For i = 0 To UBound(arrKeywords,2)
  tempKey = arrKeywords(1,i)
  strTekst = Replace(Replace(strTekst, LCase(tempKey), "<a href=""#"" title=""Se vare beskrivelse for " & LCase(tempKey) & """ onClick=""java script:doKey('" & arrKeywords(0,i) & "')"">" & LCase(tempKey) & "</a>"), tempKey, "<a href=""#"" onClick=""java script:doKey('" & arrKeywords(0,i) & "')"">" & tempKey & "</a>")
Next
End If

Response.Write "<u>Ingedienser:</u><br><br>" & strTekst & "&nbsp;&nbsp;<br><br>"

Response.Write "<u>Fremgangsmåde:</u><br><br>" & strTekst1 & "<br><br><br><br>"

Response.Write "<u>Skrevet af:</u>&nbsp;&nbsp;&nbsp;" & rs("af") & "<br><br>"

%><script language="JavaScript">
function doKey(myid) {
var myheight = 450;
var mywidth = 470;
var winleft = (screen.width - myheight) / 2;
var winUp = (screen.height - mywidth) / 2;

winstyle='height='+myheight+',width='+mywidth+',status=no,scrollbars=yes,left='+winleft+',top='+winUp;
window.open("beskriv.asp?id="+myid,'vare',winstyle);
}
</script>
Avatar billede ponyboye Nybegynder
27. august 2004 - 12:55 #3
jeg ser lige hvad der sker
Avatar billede ponyboye Nybegynder
27. august 2004 - 12:56 #4
nej der er det samme problem. ingen forskel
Avatar billede ponyboye Nybegynder
27. august 2004 - 12:59 #5
hvis du kigger på denne opskrift og kartofler så er der ingen problemer med at vise et stykke af teksten.

http://www.danskehojtider.dk/visopskrift.asp?id=6
Avatar billede ponyboye Nybegynder
27. august 2004 - 13:07 #6
nu ved jeg godt hvad der er galt. I database er der som keywords Løg og Hvidløg. det samme gælder for Selleri og Bladselleri.

Problemet må jo så være at den ser Løg og Selleri 2 gang og kan derfor ikke finde ud af det. Men hvordan jeg udbedre dette er et godt spørgsmål.

Jeg ved ikke om man kan lave det sådanne at den skal finde hele ordet og ikke kun dele af det.
Avatar billede eagleeye Praktikant
27. august 2004 - 13:50 #7
Problmet er at der ikke er nogen betingelse for replace. Den replacer ikke ord den replacer tekst. Så hvis den tekst du har skrevet står midt i et ord bliver teksten replaced.
Avatar billede eagleeye Praktikant
27. august 2004 - 13:56 #8
Så man skal bruge regular sxpression da man kan få den til at tage hele ord.

Så prøv at rette koden som replacer til:


Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = true

For i = 0 To UBound(arrKeywords,2)
  tempKey = arrKeywords(1,i)
  regEx.Pattern = "(^|[^a-z])(" & tempKey & ")([^a-z]|$)"
 
  strTekst = regEx.Replace (strTekst,"<a href='#' title='Se vare beskrivelse for $2' onClick='java script:doKey(" & arrKeywords(0,i) & ")'>$2</a>")
next
Set regEx = Nothing
Avatar billede eagleeye Praktikant
27. august 2004 - 13:57 #9
hov denne linje:
  regEx.Pattern = "(^|[^a-z])(" & tempKey & ")([^a-z]|$)"

bør være:
  regEx.Pattern = "(^|[^a-zæøå\d])(" & tempKey & ")([^a-zæøå\d]|$)"
Avatar billede ponyboye Nybegynder
27. august 2004 - 14:11 #10
Det næsten.. Jeg har slettet next da det gav fejl og det ser sådanne ud nu:

strTekst = rs("in1")
If (IsArray(arrKeywords)) Then
Set regEx = New RegExp
regEx.Global = true
regEx.IgnoreCase = true
For i = 0 To UBound(arrKeywords,2)
  tempKey = arrKeywords(1,i)
  regEx.Pattern = "(^|[^a-zæøå\d])(" & tempKey & ")([^a-zæøå\d]|$)"
  strTekst = regEx.Replace (strTekst,"<a href='#' title='Se vare beskrivelse for $2' onClick='java script:doKey(" & arrKeywords(0,i) & ")'>$2</a>")
next
Set regEx = Nothing
End If

Men nu ser det sådanne ud: http://www.danskehojtider.dk/visopskrift.asp?id=7

I database laver jeg <br> for nu linje
Avatar billede eagleeye Praktikant
27. august 2004 - 14:17 #11
Prøv sådan her:

regEx.Pattern = "(^|[^a-zæøå\d<>\(\)\[\]])(" & tempKey & ")([^a-zæøå\d<>\(\)\[\]]|$)"
Avatar billede ponyboye Nybegynder
27. august 2004 - 14:34 #12
så er der bare opdelningen.

Det ser sådanne ud når den trækker det ud: "hvidebønnereller" OG "basilikumeller"

Disse ser sådanne ud i databasen: "hvidebønner eller" OG "basilikum eller"
Avatar billede ponyboye Nybegynder
27. august 2004 - 14:41 #13
den skal ikke se forskel på store og små bokstaver
Avatar billede ponyboye Nybegynder
27. august 2004 - 14:42 #14
hvidløg , kartofler , tomater er også i databasen, men den finder dem ikke
Avatar billede eagleeye Praktikant
27. august 2004 - 15:31 #15
Det sidste dur ikke for der må netop godt være <> før ordet. Prøver lige at kigge på den
Avatar billede ponyboye Nybegynder
27. august 2004 - 15:38 #16
okay
Avatar billede eagleeye Praktikant
27. august 2004 - 15:52 #17
Prøv lige sådan her:
  regEx.Pattern = "(^|[^a-zæøå\d])(" & tempKey & ")([^a-zæøå\d]|$)"


og så ret rgEx.replace linjen til:
  strTekst = regEx.Replace (strTekst,"$1<a href='#' title='Se vare beskrivelse for $2' onClick='java script:doKey(" & arrKeywords(0,i) & ")'>$2</a>$3")
Avatar billede ponyboye Nybegynder
27. august 2004 - 16:03 #18
klasse det virker sku
Smid et lille svar
Avatar billede ponyboye Nybegynder
27. august 2004 - 16:04 #19
hvad betyder $1/2/3
Avatar billede eagleeye Praktikant
27. august 2004 - 16:07 #20
Det er variable som kommer ud fra det pattern man laver. En variable laves hvis pattern er omsluttet af (). Så $1 betyder indsæt det tekst som er fundet i dette "del" pattern (^|[^a-zæøå\d]). $2 er teksten fundet ved dette patterne (" & tempKey & ") og det er det ord man søger på. På samme måde med $3

Jeg hvade bare ikke fået $1 og $3 med så i første omgang :) Så der gik en karakter tabt i hver ende.
Avatar billede ponyboye Nybegynder
27. august 2004 - 16:21 #21
Dejlig..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