Hej! Hur ser tabellstrukturen ut? Kan du inte skicka upp koden som den ser ut idag? <% Jag skulle ju föreslå en annan databasstruktur. Efter som din aktuella är statisk. Du kan inte lägga till ett nytt språk utan att förändra tabellerna. Ok hur tycker du att strukturen ska se ut? Jag får felmeddelande "Syntax error in WHERE clause" på den här raden. Om du i tabellen har ett fält för språk istället. Så kan man ha en synonymtabbel i vilket man anger vilka ord sokm har samma betydelse.Problem med sökning
Jag har ett lexikon där man kan söka på olika ord och välja på vilka språk man vill se resultatet på.Jag har gjort så att jag söker på alla språk i SQL satsen, sen bestämmer jag längre ner på sidan vilka språk som ska visas utifrån vad användaren valt. Men det blir inte bra , nu undrar jag om det är någon som kan hjälpa mig med ett smidigare sätt. Tex att man bara söker på de språken användaren valt. Jag hämtar orden från en access databas.Sv: Problem med sökning
Sv: Problem med sökning
'** här kommer sökordet**
sokterm = request.form("sok")
'** här kommer vilka språk som är valda**
swe=Request.Form("swe")
eng=Request.Form("eng")
cro=Request.Form("cro")
dut=Request.Form("dut")
nor=Request.Form("nor")
dan=Request.Form("dan")
fin=Request.Form("fin")
ger=Request.Form("ger")
Set Con = Server.CreateObject("ADODB.Connection")
Set Rs =Server.CreateObject("ADODB.Recordset")
Con.Open "TERMLEXDB"
'** Här söker den i alla kolumner efter sökordet, skulle vilja att den bara sökte i de valda språkens kolumner **
SQL="SELECT * FROM databas WHERE termswe like '" & sokterm & "%' or termeng like '" & sokterm & "%' or termcro like '" & sokterm & "%' or termdut like '" & sokterm & "%' or termnor like '" & sokterm & "%' or termdan like '" & sokterm & "%' or termfin like '" & sokterm & "%' or termger like '" & sokterm & "%' Order by id Desc "
Rs.Open SQL,Con
%>Sv: Problem med sökning
<code>
<%
Dim Language
Dim Languages
Dim strWhere
Dim Field
Dim Fields()
Dim Count
Dim Index
Count = 0
Languages = Array("swe", "eng", "cro", "dut", "nor", "dan", "fin", "ger")
'** här kommer sökordet**
sokterm = request.form("sok")
'** här kommer vilka språk som är valda**
For Each Language In Languages
If Len(Request.Form(Language))>0 Then
strWhere = strWhere & " OR term" & Language & " like '" & sokterm & "%'
Count = Count + 1
End If
Next Languages
'** Här söker den i alla kolumner efter sökordet, skulle vilja att den bara sökte i de valda språkens kolumner **
If Count > 0 Then
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "TERMLEXDB"
Set Rs = Server.CreateObject("ADODB.Recordset")
SQL="SELECT * FROM databas WHERE " & Mid(strWhere, 5) & " ORDER BY id Desc "
Rs.Open SQL, Con
Redim Fields(Count-1)
For Each Language In Languages
If Len(Request.Form(Language))>0 Then
Set Fields(Index) = Rs("term" & Language)
Index = Index + 1
End If
Next Languages
Do Until Rs.Eof
For Each Field In Fields
Response.Write Field & ", "
Next
Response.Write "<BR>"
Rs.MoveNext
Loop
Else
Response.Write "Du har inte angivit några språk!"
End If
%>
</code>Sv: Problem med sökning
Just nu ligger allting i tabellen databas.
Sen när man ska välja språk så är dom 'checkboxar' så hur blir det med Request.Form("language"), sätter man alla språkens 'name' till languageSv: Problem med sökning
SQL="SELECT * FROM databas WHERE " & Mid(strWhere, 5) & " ORDER BY id Desc "
Vad betyder Mid(strWhere,5)?
Sv: Problem med sökning
language är en variabel. Vilket kollar textboxarna. En efter en.
Efter som det kommer " OR " framför första vilkoret. Plockar jag bort den genom att plocka ut strängen från och med femte tecknet. Remma sasen som öppnar och loopar ifgenom recordsetet.
Skriv ut Where-Satsen och SQL-satsen med:
Response.Write strWhere
Response.Write SQL
Så kan du se vad som är fel.