Hej, Jag skulle skriva frågan:Sortera, MySQL
Följande ska hända:
I databasen finns det tre kolumner som heter
typ1
typ2
typ3
Och en
bet
Jag skickar med Querystringen("typ")
den ska då leta i typ1 typ2 och typ3 om den hittar någon matchning.
Men, för att den ska lista så måste kolumnen bet vara 1
<%
if Request.Querystring("typ")="" Then
SQL = "Select * from tblrestaurang WHERE bet=1 ORDER BY namn"
elseif Request.Querystring("typ")>"" Then
typ= Request.Querystring("typ")
SQL = "Select * from tblrestaurang WHERE typ1='"&typ&"' OR typ2='"&typ&"' OR typ3='"&typ&"' OR typ4='"&typ&"' bet=1 ORDER BY namn"
end if
%>
Är så som jag skrivit. Om typ är tom, så funkar det. Men får typ ett värde så listar ingen.Sv: Sortera, MySQL
<code>
<%
Dim strTyp
Dim strSQL
strTyp = Trim(Request.Querystring("typ"))
If Len(strTyp) Then
strSQL = "SELECT *" & vbCrLf & _
"FROM tblRestaurang" & vbCrLf & _
"WHERE bet=1 AND '" & Replace(strTyp, "'", "''") & "' IN (typ1, typ2, typ3, typ4)" & vbCrLf & _
"ORDER BY namn"
Else
strSQL = "SELECT *" & vbCrLf & _
"FROM tblRestaurang" & vbCrLf & _
"WHERE bet=1" & vbCrLf & _
"ORDER BY namn"
End If
%>
</code>
Men jag ifrågasätter din datastruktur. Du borde skapa en tabell istället för att ha flera fält.
En "bättre" datastruktur är:
Tabell: tblTyper
Fält: TypId
Fält: TypNamn
Fält: TypBeskrivning
osv...
Tabell: tblRestauranger
Fält: RestaurangId
Fält: RestaurangNamn
Fält: RestaurangBeskrivning
Fält: RestaurangBetalat
osv...
Tabell: tblRestaurangTyper
Fält: TypId
Fält: RestaurangId
Exempel data:
tblTyper
------------------------------
TypId, TypNamn, TypBeskrivning
------------------------------
1, "Fisk", "Serverar fisk och skaldjur"
2, "Vegetarisk", "Serverar vegetarisk mat"
3, "Snabbmat", "Serverar snabbmat så som Hamburgare, pizza, etc..."
tblRestauranger
------------------------------------------------------------
RestaurangId, RestaurangNamn, RestaurangBeskrivning, RestaurangBetalat
------------------------------------------------------------
1, "Kapten krok", "", 0
2, "All round the world (and back)", "", 1
3, "Grönt är skönt", "", 1
4, "Gatuköket", "", 1
tblRestaurangTyper
------------------------
TypId, RestaurangId
------------------------
1, 1
1, 2
2, 2
2, 3
3, 4
Denna struktur ger många fördelar. SQL frågan ser istället ut så här:
<code>
<%
Dim strSQL
Dim lngTypId
lngTypId = Trim(Request.Querystring("typid"))
If IsNumeric(lngTypId) Then
lngTypId = CLng(lngTypId)
strSQL = "SELECT *" & vbCrLf & _
"FROM tblRestauranger INNER JOIN tblRestaurangTyper ON tblRestauranger.RestaurangId = tblRestaurangTyper.RestaurangId" & vbCrLf & _
"WHERE bet=1 AND tblRestaurangTyper.TypId = " & lngTypId & vbCrLf & _
"ORDER BY namn"
Else
strSQL = "SELECT *" & vbCrLf & _
"FROM tblRestaurang" & vbCrLf & _
"WHERE bet=1" & vbCrLf & _
"ORDER BY namn"
End If
%>
</code>