צפיות
תשובות
הצגה באופן רנדומלי
שלום לכם,
אני מנסה להציג מספר מוצרים באופן רנדמלי,
כלומר אני רוצה, שכשנכנסים לאתר יהיו ארבעה מוצרים שמוצגים באופן רנדומלי, מתוך עשרת המוצרים החדשים, כתבתי את הקוד כדלהלן:
<%
Const adCmdText4 = &H0001
Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
SQLstr="SELECT top 10 * FROM PRODUCTS order by indate desc"
rs.Open SQLstr,conn,3,adCmdText4
Dim intRnd
Randomize Timer
intRnd = (Int(RND * 10 + 1))
RS.Move intRnd
do until rs.eof
Response.Write rs("cdname")
Response.Write "<br>"
rs.movenext
loop
rs.Close
set rs = nothing
%>
והבעיה איתו שהוא מציג לי מספר רשומות כל פעם משהו אחר פעם אחת את כל העשר רשומות ופעם אחת רק שתי רשומות, בקיצור מספר אחר כל פעם, אז איך אני מגביל אותו שיציג לי רק ארבע מתוך העשר?
11 תשובות
אתה יכול להתחמק מזה
ע"י פתרון קל, פשוט ויעיל ברמת ה ASP. קרא כאן: (הפתרון האחרון מומלץ במיוחד)
יש גם ב-FAQ שלנו
וזה מה שישציג לי מספר רשומות
באופן רנדומלי? אני רוצה לדוגמא כמו בכתובת להלן:
שימו לב שבכל כניסה מוצגים מוצרים אחרים.
לא זכרתי שהכנסתי את התשובה שלך…
תודה רבה!!!
אבל אייך אני עושה שיציג את החדשים הוא מציג לי באופן רנדומלי את כל המוצרים באתר, ואני רוצה שהוא יציג לי רק את החדשים?
תשתמש ב-TOP X כאשר X זה מס'…
SELECT TOP X <fields> ….
כי זהר הכניס
כתבתי top 10
והוא מציג לי עשר מתוך כל המוצרים ולא מתוך כל החדשים:
sql = "SELECT TOP 8 * FROM PRODUCTS ORDER BY Rnd(-1 *"&rnd()&"*PRODUCTS.album_id)"
כתבתי TOP 10
והוא מציג לי עשר מתוך כל המוצרים ולא מתוך כל החדשים:
sql = "SELECT TOP 8 * FROM PRODUCTS ORDER BY Rnd(-1 *"&rnd()&"*PRODUCTS.album_id)"
מן הסתם
אתה שולף את כל המוצרים, מסדר אותם בסדר רנדומלי ואז לוקח את ה 8 הראשונים.
תבהיר שוב מה אתה בדיוק רוצה לעשות .
מממ….
אתה יכול לסדר קודם כל לפי תאריך השקת המוצר (או עמודה עם ערך לוגי דומה)
ואח"כ לסדר אותם רנדומלי:
SELECT … FROM … ORDER BY date_fld, Rnd(x*id_fld)