webForumDet fria alternativet

Dynamisk limit i mySQL

ASPur ASP

16 svar · 555 visningar · startad av WebbisNet

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

Kan man ändra denna kod så att limit blir 500 om man inte är VIP och 1000 om man är VIP och hur skriver man om koden då?

Set objRs = Server.Createobject("Adodb.Recordset")
 
strSQL = "SELECT mailRead, username, mailDate, mailTime, sender, Headline, message, mailID,Reciever, vip "&_
"FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
"WHERE Reciever='"& Session("userID") &"' order by mailID desc "
Medlem sedan dec. 200012 464 inlägg
#2

I så fall måste du först ställa en spearat fråga för att ta reda på om användaren är VIP eller inte.

Medlem sedan feb. 20032 027 inlägg
#3

om jag skriver om den jag redan har och använder som ny

set vipCheck=objConn.Execute("SELECT vip, username, sender mailID, Reciever "&_
"FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
"WHERE Reciever='"& Session("userID") &"' order by mailID desc")

Hur skriver jag sen för att säta en dynamisk limit?

Här kommer sql-en till min paging där limit ska vara dynamisk

strSQL = "SELECT mailRead, username, mailDate, mailTime, sender, Headline, message, mailID,Reciever, vip "&_
"FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
"WHERE Reciever='"& Session("userID") &"' order by mailID desc "
Medlem sedan juli 20033 147 inlägg
#4

Skapa en variabel som heter limit, om man är vip (if-sats) så skapas variabeln limit = 1000, annars (else) blir limit = 500.
Sen lägger du bara in den i SQL-satsen.

Medlem sedan dec. 200012 464 inlägg
#5
set vipCheck=objConn.Execute("SELECT vip FROM tblUsers  "&_
"WHERE Reciever='"& Session("userID") &"'")
if vipCheck.eof then
   response.write "finns ej"
else
    strSQL = "SELECT mailRead, username, mailDate, mailTime, sender, Headline, message, mailID,Reciever, vip "&_
    "FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
   "WHERE Reciever='"& Session("userID") &"' order by mailID desc "
   if vipCheck("VIP") = "Yes" then ' eller vad du nu har
       sqlStr = sqlStr + " limit 0,1000"
   else
       sqlStr = sqlStr + " limit 0,500"
   end if
   ' kod för att visa post
end if
Medlem sedan feb. 20032 027 inlägg
#6

så efter min första sql har jag

varVIPlimit=" if vipCheck("vip") = 1 then
response.write "1000"
else
response.write "500"
end if"

eller hur skriver man en if-sats i en variabel

och i andra satsen skriver jag bara limit "&varVIPlimit då

Medlem sedan juli 20033 147 inlägg
#7

Typ så ja. :)

Medlem sedan juni 200032 969 inlägg
#8

Inte alls typ så...

Det här är grundläggande VBScript...

if Cint(vipCheck("vip")) = 1 then
     varVIPlimit = 1000
else
     varVIPlimit = 500
end if
Medlem sedan juli 20033 147 inlägg
#9

@nders skrev:

Inte alls typ så...

Det här är grundläggande VBScript...

if vipCheck("vip") = 1 then
     varVIPlimit = 1000
else
     varVIPlimit = 500
end if

Hänvisade till LarsG:s inlägg.

Medlem sedan juni 200032 969 inlägg
#10

Melea: OK :)

Medlem sedan feb. 20032 027 inlägg
#11

Med denna kod får jag:
Microsoft VBScript compilation error '800a0400'

Expected statement

/mail/paging.asp, line 85

end if

<%
Set objRs = Server.Createobject("Adodb.Recordset")
 
set vipCheck=objConn.Execute("SELECT vip, username, sender mailID, Reciever "&_
"FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
"WHERE Reciever='"& Session("userID") &"' order by mailID desc")

if vipCheck.eof then
   response.write "finns ej"
else
    strSQL = "SELECT mailRead, username, mailDate, mailTime, sender, Headline, message, mailID,Reciever, vip "&_
    "FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
   "WHERE Reciever='"& Session("userID") &"' order by mailID desc "
   if vipCheck("VIP") = "1" then ' eller vad du nu har
       sqlStr = sqlStr + " limit 0,1000"
   else
       sqlStr = sqlStr + " limit 0,500"
   end if

strConString = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=193.13.74.203;PORT=3306;DATABASE=xxxxxxxx; USER=xxxxxxxxx;PASSWORD=xxxxxxxx;OPTION=3;"

'================================================================================================
function getPreviousLink( intp )
  if intp > 1 then
    getPreviousLink = " <a class=""menu"" href='?p=" & intp - 1 & "'> &laquo; Föregående</a> "
    else
        If intp < 2 then
              response.write "&nbsp;"
        end if  
  end if
end function
'================================================================================================

'================================================================================================
function getNextLink( intPageId, intPageCount )
  if cint( intpageId ) <> cint( intPageCount ) then
    getNextLink = " <a class=""menu"" href='?p=" & intp + 1 & "'> Nästa &raquo;</a> "
        else
    getNextLink = " Nästa »"
  end if
end function
'================================================================================================

'================================================================================================
function getLastLink( intPageCount )
  getLastLink = " <a class=""menu"" href='?p=" & intPageCount & "'>Sista sidan</a> "
end function
'================================================================================================

'================================================================================================
function getPageInfo( intp, intPageCount )
  getPageInfo = "<a class=""menu""> Sida: " & intp & " </a>"
end function
'================================================================================================

intp = request.querystring( "p" )
if intp = "" then intp = 1

with objRs
	.cursorlocation = 3
  	.open strSQL, strConString
  	.pagesize = 20
end with

If objRs.EOF Then
	Response.Write "Din inbox är tom<p>"
Else
	intPages = cint(objRs.pagecount)
	intCurrentPost = 0
	objRs.absolutepage = intp
	
	
	Do while not objRs.eof and intCurrentPost < objRs.pagesize
nummer = nummer + 1
If nummer Mod 2 = 0 Then
color = "#FFFFFF" 
Else
color = "#EEEEEE"
end if
end if
%>

och utan sista end if får jag

Microsoft VBScript compilation error '800a03f6'

Expected 'End'

/mail/meddelanden.asp, line 124

Medlem sedan feb. 20032 027 inlägg
#12

Nån som en lösning på detta "delikata" problem :-)

Medlem sedan dec. 19996 721 inlägg
#13

Det saknas end if i första if-satsen och det finns ingen loop-avslutning på den sista "do while"-loopen.

Medlem sedan feb. 20032 027 inlägg
#14

Var extra end if på fel ställe, nu loopas alla ut som de ska men även om jag ändrar limit till 10 och 5 så visas alla.....ingen limit körs

set vipCheck=objConn.Execute("SELECT vip, username, sender mailID, Reciever "&_
"FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
"WHERE Reciever='"& Session("userID") &"' order by mailID desc")

if vipCheck.eof then
   response.write "finns ej"
else
    strSQL = "SELECT mailRead, username, mailDate, mailTime, sender, Headline, message, mailID,Reciever, vip, saveMail "&_
    "FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
   "WHERE Reciever='"& Session("userID") &"' order by mailID desc "
   if vipCheck("VIP") = "1" then ' eller vad du nu har
       sqlStr = sqlStr + " limit 0,1000"
   else
       sqlStr = sqlStr + " limit 0,500"
   end if
	end if

När jag skriver ut satsen får jag inte med limit
SELECT mailRead, username, mailDate, mailTime, sender, Headline, message, mailID,Reciever, vip, saveMail FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender WHERE Reciever='1' order by mailID desc

Medlem sedan juni 200032 969 inlägg
#15
    [b]strSQL[/b] = ...
   if vipCheck("VIP") = "1" then ' eller vad du nu har
       [b]sqlStr[/b] = ...
   else
       [b]sqlStr[/b] = ...
   end if

I övrigt skall du använda &, inte + för att konkatenera.

Medlem sedan feb. 20032 027 inlägg
#16

Denna kod fungerade, det lustiga är att jag fick byta plats, om vip är 1....dvs sann så ska den vara 1000 inte 100 och tvärtom

if vipCheck.eof then
   response.write "finns ej"
else
 if vipCheck("VIP") = "1" then
       sqlStr = "limit 100"
   else
       sqlStr = "limit 1000"
   end if
    strSQL = "SELECT mailRead, username, mailDate, mailTime, sender, Headline, message, mailID,Reciever, vip, saveMail "&_
    "FROM tblUsers INNER JOIN tblUsers_imail ON tblUsers.userID = tblUsers_imail.sender "&_
   "WHERE Reciever='"& Session("userID") &"' order by mailID desc "&sqlStr
  
	end if
Medlem sedan dec. 19996 721 inlägg
#17

Är det verkligen en sträng som är lagrad i vipCheck("VIP")?

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