צפיות
תשובות
בעיה עם חלוקה לדפים
קראתי את המאמר על הנושא באתר, וניסיתי לבנות לעצמי דוגמא קטנה, אך משום מה זה לא מצליח לי.
הקוד של הדף שלי:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "samples2"
set rs = Server.CreateObject("ADODB.RecordSet")
Dim currPage,i,pCount, numRecs
currPage = 1
numRecs = 3
if Not request("currPage") = "" then
currPage= request("currPage")
end if
rs.Open "SELECT * FROM topics where father_id = 0",conn,3,1,1
rs.PageSize = numRecs
rs.CacheSize = numRecs
if Not rs.eOF Then
pCount=rs.pageCount
rs.AbsolutePage=CurrPage
headline = rs("headline")
End If
Do While Not rs.eOF AND i < rs.pagesize
%>
<%=headline%><br>
<%
i=i+1
rs.MoveNext
Loop
rs.Close
for i = 1 to pCount
if Cint(i) = Cint(currPage) then
Response.Write " <b>"& i &"</b> "
Else
Response.Write " <a href=""rec2.asp?currPage="&i&""">"& i &"</a> "
End If
Next
%>
עכשו, כשאני מריץ את זה, אז למשל בדף הראושן אני מקבל כותרת מסוימת שמופיעה 3 פעמים, בדף השני לא מופיע לי כלום, בדף השלישי ענ"ל כמו בדף הראשון, ובדף הרביעי, והאחרון, מופיעה כותרת פעם אחת…מה עשיתי לא בסדר?
7 תשובות
תשובה
נסה להגדיר i=1 מעל Do While.
לא עוזר…
קודם כל,
חלוקה לעמודים על שאילתה לא מסודרת לא תביא אותך רחוק.
תוסיף order by לשאילתה.
דבר שני, נסה להציג בנוסף לכותרת ערך שהוא חד חד ערכי בטבלה, כדי שתראה בוודאות שמדובר על אותה הרשומה או על רשומות נפרדות.
דבר שלישי, אפשר לראות איזה לינק?
הנה כמה שינויים
זה הקוד המלא החדש:
<%
set conn = Server.CreateObject("ADODB.Connection")
conn.open "samples2"
set rs = Server.CreateObject("ADODB.RecordSet")
Dim currPage,i,pCount, numRecs
currPage = 1
numRecs = 10
if Not request("currPage") = "" then
currPage= request("currPage")
end if
rs.Open "SELECT * FROM topics where father_id = 0 order by id",conn,3,1,1
rs.PageSize = numRecs
rs.CacheSize = numRecs
if Not rs.eOF Then
pCount=rs.pageCount
rs.AbsolutePage=CurrPage
headline = rs("headline")
id = rs("id")
End If
i = 0
Do While Not rs.eOF AND i < rs.pagesize
%>
<%=headline%> <%=id%><br>
<%
i=i+1
rs.MoveNext
Loop
rs.Close
for i = 1 to pCount
if Cint(i) = Cint(currPage) then
Response.Write " <b>"& i &"</b> "
Else
Response.Write " <a href=""rec2.asp?currPage="&i&""">"& i &"</a> "
End If
Next
%>
עכשו, הנה תמונת מסך של מה שמופיע לי בדף:
http://img428.imageshack.us/img428/2212/recerror2er.jpg
כפי שניתן לראות, הכותרת וה id חוזרים על עצמם 10 שורות.
כאשר שיניתי את numrecs ל-15 למשל, הדף נשאר עם 10 תוצאות.
כאשר עשיתי 5, אז היו לי קישורים לשלושת הדפים הבאים, שבהם היו כותרות אחרות עם id אחרים, אבל באותה מתכונת כמו פה…בכל דף מופיעה כותרת אחת בלבד, באופן מחזורי.
אני קצת מתבייש שלא עליתי על זה ישר.
שים לב למה שאתה עושה:
אתה שואל האם rs לא נמצא ב eof, ואז מכניס את הערכים שב rs לתוך משתנים ב asp:
if Not rs.eOF Then
pCount=rs.pageCount
rs.AbsolutePage=CurrPage
headline = rs("headline")
id = rs("id")
End If
אחרי זה, אתה פותח לולאה שרצה על rs, ובתוכה אתה שולח לדפדפן את הערך של המשתנים של ה ASP מהתנאי הקודם:
Do While Not rs.eOF AND i < rs.pagesize
%>
<%=headline%> <%=id%><br>
<%
i=i+1
rs.MoveNext
Loop
בשום מקום בלולאה אתה לא מעדכן את המשתנים האלו, ולכן, מן הסתם, תקבל בכל עשרת השורות את אותם הערכים בדיוק.
וואלה צודק…תודה רבה!
משהו נוסף
צירפתי את הקוד המלא של הדף, משום מה מספרי העמודים לא מוצגים לי ואין אפשרות לנווט בין העמודים…
החלק הבעייתי הוא זה:
<%
for i = 1 to pCount
if Cint(i) = Cint(currPage) then
Response.Write " <b>"& i &"</b> "
Else
%>
<a href="forum.asp?id=<%=id%>&currPage=<%=i%>"><font color="black"></a>
<%
End if
Next
%>
מופיע לי רק הספרה 1 וזהו…