webForumDet fria alternativet

söka på id eller keyword

Databaser & SQLur Databashanterare & SQL

28 svar · 863 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

fortsättning på förra tråden

kan nu söka på keyword men då funkar inte id-sökningen

id=request.form("id")
keyword=request.form("keyword")
Set user=objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where fromUser='"& id &"' and not pprivate=1 or gbMessage LIKE '%"& keyword &"%' order by gbDate desc limit 50")%>
Medlem sedan juni 20019 519 inlägg
#2
... = tblUsers_guestbook.fromUser where [b]tblUsers_guestbook.[/b]fromUser='"& id &"'...

Skall man inte skriva så?
Andra frågor: Är fromUser en sträng i din databas, är ID något från request.form("id")?

Medlem sedan feb. 20032 027 inlägg
#3

voigtann1 skrev:

... = tblUsers_guestbook.fromUser where [b]tblUsers_guestbook.[/b]fromUser='"& id &"'...

Skall man inte skriva så?
Andra frågor: Är fromUser en sträng i din databas, är ID något från request.form("id")?

fromUser är INT men det funkar inte utan '' i koden och det verkar göra att jag inte kan söka på variabeln id som är fromUser i DB

Medlem sedan juni 20019 519 inlägg
#4
id= 0 + cint(request.form("id"))

Vi måste göra om request.form (som blir en sträng) till en integer...

Medlem sedan feb. 20032 027 inlägg
#5

voigtann1 skrev:

id= 0 + cint(request.form("id"))
id= 0 + cint(request.form("id"))
keyword=request.form("keyword")
Set user=objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where fromUser="& id &" and not pprivate=1 or gbMessage LIKE '%"& keyword &"%' order by gbDate desc limit 50")

funkar inte heller

Medlem sedan juni 20019 519 inlägg
#6

vad ska din SQL sträng "träffa"? Allt som INTE är pprivate=1 eller och hämta ut alla poster som den hittar med keyword? Isåfall så känns det som det är något som fattas i din SQL...

Medlem sedan feb. 20032 027 inlägg
#7

den ska hämta allt som inte är pprivate=1 och alla träffar på det ID man söker på ELLER alla användare med det sökord som anges

Medlem sedan juni 20019 519 inlägg
#8
SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where (fromUser="& id &" and not pprivate=1) or (gbMessage LIKE '%"& keyword &"%') order by gbDate desc limit 50

så eller?

Medlem sedan feb. 20032 027 inlägg
#9

voigtann1 skrev:

SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where (fromUser="& id &" and not pprivate=1) or (gbMessage LIKE '%"& keyword &"%') order by gbDate desc limit 50

så eller?

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'and not pprivate=1) or (gbMessage LIKE '%%') order by gbDate de

Medlem sedan juni 20019 519 inlägg
#10

Är nog för att du inte angivit något keyword... Skall man kunna välja att inte söka på keyword och userID? Måste man fylla i båda uppgifterna på din sida för att få någon resultat?

Medlem sedan feb. 20032 027 inlägg
#11

ena eller det andra

Medlem sedan juni 20019 519 inlägg
#12

men inte båda?

Medlem sedan feb. 20032 027 inlägg
#13

inte båda, därför har jag OR och inte AND

Medlem sedan juni 20019 519 inlägg
#14

du får nog lägga in en

if len(keyword) = 0 then keyword = "wenjfknsduvinfudfinbuierwofnvuilnruvglfn"
Medlem sedan feb. 20032 027 inlägg
#15
Set user=objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where fromUser='"& id &"' and not pprivate=1 order by gbDate desc limit 50")

funkar bra men inte

if not keyword="" then
Set user=objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where fromUser="& id &" and not pprivate=1 or gbMessage LIKE '%"& keyword &"%' order by gbDate desc limit 50")
end if
Medlem sedan juni 200032 967 inlägg
#16

Och vad menar du med "fungerar inte"?

Medlem sedan feb. 20032 027 inlägg
#17

får inga träffar eller bara felmeddelande

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.0.25-max]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'and not pprivate=1 or gbMessage LIKE '%tanke%' order by gbDate

Medlem sedan juni 200032 967 inlägg
#18

TreTvå frågor då:

Varför ger du oss inte felmeddelandet?
Varför har du apostrofer runt fromuser-värdet i den första frågan, men inte i den andra?
Varför skriver du inte ut den färdiga SQL-frågan så det blir lättare att felsöka?

Medlem sedan feb. 20032 027 inlägg
#19

med

<%id = request.form("id")
keyword=request.form("keyword")
if not keyword="" or not id="" then
Set user=objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_guestbook ON tblUsers.userID = tblUsers_guestbook.fromUser where fromUser='"& id &"' and not pprivate=1 or gbMessage LIKE '%"& keyword &"%' order by gbDate desc limit 50")
end if%>

fungerar sökning på keyword men när jag söker på id så visas alla senaste 50 inlägg från alla användare och inte senaste 50 från den som har id-numret

Medlem sedan juni 200032 967 inlägg
#20

...

Varför skriver du inte ut den färdiga SQL-frågan så det blir lättare att felsöka?

Dessutom efterlyser jag fortfarande parentser för att gruppa dina villkor.

141 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)