שלח תשובה

זירת השאלות

206
צפיות
84
תשובות

ענו לי בבקשה על השאלה הבאה

,‏ 12 באפריל, 2004

http://www.webmaster.org.il/forums/Message.asp?Id=8662

משום מה השירשור לא קפץ למעלה…

תגיות:

84 תשובות

  1. sza הגיב:

    אני בונה פורום ורציתי לדעת…
    האם אני צריך לכל הודעה שמתווספת לפורום, לשמור בטבלה שלה את מס’ התגובה? או שפשוט להציג את התוצאות וממילא הן יוצגו לפי הסדר בגלל המספור האוטומטי?

    ואם אני אמור לעבוד לפי המספור האוטומטי, איך אני יכול לדעת איזה מס’ תגובה התווספה ?..

  2. אוריקס הגיב:

    יש מאמר באתר [מאת ניר]
    קרא כאן.

    אבל בכל מקרה כל ההודעות מרוכזות בטבלה אחד

  3. ניר טייב הגיב:

    אבל אם הוא רוצה פורום DC
    או כל סוג אחר של פורום שהוא לא רקורסיבי (לא כתוב כאן)

  4. sza הגיב:

    אני רוצה DC אבל זה פתר לי את זה
    השאלה שלי הייתה כללית על פורום, לא ספציפית על רקורסיבי, מהמבנה של הקוד במאמר שכתבת הבנתי כבר את מה שרציתי, תודה בכלאופן 🙂

  5. sza הגיב:

    למה הוא מציג לי את השגיאה הבאה בפקו
    בפקודה הבאה:

    rs1.CacheSize=numRecs

    הוא מציג לי את השגיאה הבאה:


    Error Type:
    ADODB.Recordset (0x800A0BB9)
    Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

    יש בתוך numRecs ערך של 50, למה הוא מציג לי את השגיאה הזו?

  6. ניר טייב הגיב:

    אתה יכול להראות לנו את
    השימוש המלא של הרקורדסט (כולל ה-SQL) — מתוך חיפוש בגוגל ראיתי שמישהו עשה קוד של חלוקה לדפים וגם לו קרא משהו כזה בגלל שורת ה-SQL

  7. sza הגיב:

    בבקשה, הנה שורת הSQL


    SQL1="SELECT msgs.msgID, msgs.msgTopic, msgs.msgBody, msgs.parentID, msgs.msgViews, msgs.msgWriterID, users.usernameTBL, msgs.forumNum, forums.forumName, msgs.msgPostTime, msgs.msgPostDate, msgs.msgWriterIP, msgs.msgStatus FROM users INNER JOIN (forums INNER JOIN msgs ON forums.forumID = msgs.forumNum) ON users.userID = msgs.msgWriterID WHERE (((msgs.parentID)=1) AND ((msgs.forumNum)=1) AND ((msgs.msgStatus)=1)) ORDER BY msgs.msgPostTime, msgs.msgPostDate"

  8. sza הגיב:

    מפתחות ונעילות? שו הדא?
    אני די חדש בתחום, דבר איתי עברית 😉

  9. sza הגיב:

    מממ אני מצטער, אבל
    אלו היו שאלות ששלחתי בשעות שונות, הן לא עלו לי ביחד,
    אם עולות לי כמה שאלות ביחד בוודאי שאכתוב אותן באותה הודעה, אבל אם יש לי בעיה ואחרי שעתיים יש לי עוד בעיה וכבר כתבתי את הראשונה, מכיוון שאין פה אפשרות עריכה, אין לי מה לעשות…

  10. ניר טייב הגיב:

    הכוונה בלשרשר
    זה לכתוב את כל ההודעות(שאלות) שלך באותו אשכול

  11. אוריקס הגיב:

    גם ההודעה נכתבה יומיים אחרי, ועדיין
    ניתן להקפיץ אותה אתה מתבקש לשרשר שאלותיך…
    אם אראה שהדיון יורד למטה אקפיץ – אותו בעצמי

  12. sza הגיב:

    הנה הקוד המלא, למה זה לא עובד?


    <%

    if (session("ID")="") or (session("ID")=0) then
    response.redirect("signIn.asp")
    End if

    dim conn,rs1,rs2,SQL2,SQL1,ch,isUserLogged, currPage,i,pCount,numRecs

    numRecs=50
    currPage=1
    if NOT request("currPage")="" Then
    currPage=Request("currPage")
    End if

    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & Server.MapPath("GCdbdatabase.mdb")

    SQL1="SELECT msgs.msgID, msgs.msgTopic, msgs.msgBody, msgs.parentID, msgs.msgViews, msgs.msgWriterID, users.usernameTBL, msgs.forumNum, forums.forumName, msgs.msgPostTime, msgs.msgPostDate, msgs.msgWriterIP, msgs.msgStatus FROM users INNER JOIN (forums INNER JOIN msgs ON forums.forumID = msgs.forumNum) ON users.userID = msgs.msgWriterID WHERE (msgs.parentID=1) AND (msgs.forumNum=1) AND (msgs.msgStatus=1) AND (msgs.msgID NOT IN ( SELECT TOP 50 msgID FROM users INNER JOIN (forums INNER JOIN msgs ON forums.forumID = msgs.forumNum) ON users.userID = msgs.msgWriterID WHERE (msgs.parentID=1) AND (msgs.forumNum=1) AND (msgs.msgStatus=1) ORDER BY msgs.msgPostTime, msgs.msgPostDate )) ORDER BY msgs.msgPostTime, msgs.msgPostDate"
    set rs1=conn.Execute(SQL1)

    rs1.PageSize=numRecs
    rs1.CacheSize = numRecs

    if Not rs1.EOF Then
    pCount=rs1.pageCount
    rs1.AbsolutePage=currPage
    End if

    %>

    <HTML>
    <head>
    <style>
    A:link { TEXT-DECORATION :underline}
    A:link { color="#20739B"}
    A:visited { TEXT-DECORATION :underline }
    A:visited {color="#20739B"}
    A:active { TEXT-DECORATION: underline }
    A:hover {TEXT-DECORATION: none}
    A:hover {color="#5ABFC3"}
    </style>
    </head>
    <BODY background="images/BACKGROUND.gif" bgproperties="fixed" dir="rtl">

    <div align="right">
    <font face="Arial" size="2" color="#20739B">
    <H3>פורום <%=rs1("forums.forumName")%> </H3><BR>
    <table border=0 width=100% style="border-style :dotted; border-width: 1;">

    <%
    Do While Not rs.EOF And i<rs.pageSize
    %>

    <tr><td><a href="showTopic.asp?TopicID=<%=rs1("msgs.msgID")%>"><%=rs1("msgs.msgTopic")%></a></td></tr>

    <%
    i=i+1
    rs.MoveNext
    Loop
    %>

    </table>
    </BODY>
    </html>

    <%
    rs1.close
    conn.close
    set rs1= nothing
    set conn=nothing
    %>

    וזה נותן לי את השגיאה הבאה:


    Error Type:
    ADODB.Recordset (0x800A0BB9)
    Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
    /GC/forums.asp, line 24

    מישהו יודע?

    תודה…

  13. sza הגיב:

    שכחתי להוסיף ששורת השגיאה…
    שורה 24 היא:


    rs1.CacheSize = numRecs

  14. אוריקס הגיב:

    אתה לא פתחת את הרקורדט
    לכן ברור שאתה לא יכול לשנות תכונות שלו…

  15. sza הגיב:

    אוקי, תודה, אבל יש עוד בעיה

    Do While Not (rs1.EOF) And (i<rs1.pageSize)

    על השורה הזו הוא נותן לי את השגיאה הזו:

    Error Type:
    Microsoft VBScript runtime (0x800A01A8)
    Object required: ”
    /GC/forums.asp, line 63

    מה נסגר איתו? :-S

  16. אוריקס הגיב:

    נסה כך

    Do While (Not rs1.EOF) And (i<rs1.pageSize)

    בכל מקרה, לוגית, למה אתה צריך את שני הפרמטרים?

  17. sza הגיב:

    לא עובד, אממ בשביל:
    בשביל 2 המקרים האפשריים:
    1. שהרשומה קטנה מ50 ( NOT rs1.EOF)
    2. שהמונה לא יעבור את ה50…
    שהוא לא יציג יותר מ50 רשומות בדף…

    זה מהמדריך לחלוקה לעמודים פה באתר..

    יש לך אולי עוד רעיון למה זה לא עובד?

  18. ניר טייב הגיב:

    הוא לא מזהה כאובייקט את rs1
    כנראה שלא הגדרת אותו

    set rs = Server.CreateObject("ADODB.Recordset")

  19. sza הגיב:

    טוב, עכשיו זה נותן לי את השגיאה הזו


    ADODB.Recordset (0x800A0E78)
    Operation is not allowed when the object is closed.
    /GC/forums.asp, line 63

    שורה 63:


    Do While Not rs1.EOF And rs1.pageSize>i

    יש לציין שפתחתי את הרקורדסט אחרי שהגדרתי אותה מיד!!


    set rs1 = Server.CreateObject("ADODB.Recordset")

    SQL1="SELECT msgs.msgID, msgs.msgTopic, msgs.msgBody, msgs.parentID, msgs.msgViews, msgs.msgWriterID, users.usernameTBL, msgs.forumNum, forums.forumName, msgs.msgPostTime, msgs.msgPostDate, msgs.msgWriterIP, msgs.msgStatus FROM users INNER JOIN (forums INNER JOIN msgs ON forums.forumID = msgs.forumNum) ON users.userID = msgs.msgWriterID WHERE (msgs.parentID=1) AND (msgs.forumNum=1) AND (msgs.msgStatus=1) ORDER BY msgs.msgPostTime, msgs.msgPostDate"

    rs1.Open SQL1, conn, 3, 1

    מה קרה?..

  20. sza הגיב:

    הנה…
    סליחה על ההודעה "VBV" זה נשלח בטעות…

    <%

    if (session("ID")="") or (session("ID")=0) then
    response.redirect("signIn.asp")
    End if

    dim conn,rs1,rs2,SQL2,SQL1,ch,isUserLogged, currPage,i,pCount,numRecs

    numRecs=50
    currPage=1
    if NOT request("currPage")="" Then
    currPage=Request("currPage")
    End if

    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " & Server.MapPath("GCdbdatabase.mdb")
    set rs1 = Server.CreateObject("ADODB.Recordset")

    SQL1="SELECT msgs.msgID, msgs.msgTopic, msgs.msgBody, msgs.parentID, msgs.msgViews, msgs.msgWriterID, users.usernameTBL, msgs.forumNum, forums.forumName, msgs.msgPostTime, msgs.msgPostDate, msgs.msgWriterIP, msgs.msgStatus FROM users INNER JOIN (forums INNER JOIN msgs ON forums.forumID = msgs.forumNum) ON users.userID = msgs.msgWriterID WHERE (msgs.parentID=1) AND (msgs.forumNum=1) AND (msgs.msgStatus=1) ORDER BY msgs.msgPostTime, msgs.msgPostDate"

    rs1.Open SQL1, conn, 3, 1
    rs1.PageSize=numRecs
    rs1.CacheSize=numRecs

    if Not rs1.EOF Then
    pCount=rs1.pageCount
    rs1.AbsolutePage=currPage
    End if

    %>

    <HTML>
    <head>
    <style>
    A:link { TEXT-DECORATION :underline}
    A:link { color="#20739B"}
    A:visited { TEXT-DECORATION :underline }
    A:visited {color="#20739B"}
    A:active { TEXT-DECORATION: underline }
    A:hover {TEXT-DECORATION: none}
    A:hover {color="#5ABFC3"}
    </style>
    </head>
    <BODY background="images/BACKGROUND.gif" bgproperties="fixed" dir="rtl">

    <div align="right">
    <font face="Arial" size="2" color="#20739B">

    <table border=0 width=100% style="border-style :dotted; border-width: 1;">

    <%
    Do While Not rs1.EOF And rs1.pageSize>i
    %>

    <tr><td><a href="showTopic.asp?TopicID=<%=rs1("msgID")%>"><%=rs1("msgTopic")%></a></td></tr>

    <%
    i=i+1
    rs1.MoveNext
    Loop
    %>

    </table>
    </BODY>
    </html>
    <%
    rs1.close
    conn.close
    set rs1= nothing
    set conn=nothing
    %>

    הנה הקוד המלא.. רואה את השגיאה?..

  21. sza הגיב:

    בנוגע להוספת נתונים לטבלה
    האם כשאני מוסיף נתונים לטבלה ויש לי שדה אחד שהוא תאריך/שעה, אני צריך להשתמש במשפט הSQL הבא:


    SQL="insert into date(newTime) values(" & Time() & ")"

    האם זו הצורה שבה אני צריך לעבוד?

    כשעשיתי ככה הוא אמר לי על המשפט SQL הזה את השגיאה הזו:


    Syntax error (missing operator) in query expression ’02:34:02′.

  22. sza הגיב:

    אממ אז השירשור הזה הוא לליב טיים?
    כאילו, אני נשאר עם השרשור הזה עד שנה הבאה? הוא יגדל ויגדל ויתפוצץ עם כל הבעיות שיש לי…

    חשבתי על לשרשר את זה אבל השרשור גדול וזה לא נעים למשתמשים לקרא שרשור כ"כ שמן…

    לי לא אכפת, להבא אני אשרשר,

  23. תשתמש בפונק’ המובנות של אקסס


    SQL="insert into date(newTime) values(Time())"

  24. sza הגיב:

    מה הכוונה ? הרי איפה שכתבת
    איפה שכתבת "date(newTime)" לא צריך להיות במקום DATE- שם הטבלה?
    איך הוא יידע לאיזה טבלה להכניס את הנתונים?
    ואם יש לי עוד שדות מסוג טקסט?
    כלומר, נניח ויש לי חוץ מ newTime עוד שדות בשם txtNAME ?
    שאני רוצה להכניס להם את הערך "צחי" ?

    איך אני מוסיף בצורה כזו?…

  25. sza הגיב:

    איך אפשר לעשות קישור שלא יעשה כלום?
    כלומר, יש לי סקריפט שאמור לעשות כמו פס גלילה אישי שאני מעצב..
    על החצים למעלה ולמטה יש קישור שעושה את הגלילה…

    בעת מעבר על החצים הדף נגלל, אבל יש בעיה שאם מישהו לוחץ על החצים (שהיעד שלהם הוא ל " # ") אז נפתח לו בתוך הפריים הפנימי של האתר- האתר שוב, כאילו כל הדף INDEX נפתח מחדש בתוך הפריים הפנימי… ואז יש פריים בתוך פריים בתוך פריים…

    איך אני יכול לעשות שכשילחצו על הקישור הזה שום דבר לא יקרה?

  26. xgamer הגיב:

    כך:


    <a href="JavaScript:" >בלה </a>

    או שאתה יכול לעשות span
    ואז בעזרת JS להפוך את זה לכאילו קישור שיהיה יד כזו במעבר

  27. sza הגיב:

    תודה רבה! עכשיו נשאר לענות על השאלה
    הקודמת שלי

  28. ניר טייב הגיב:

    date שם זה שם הטבלה…
    רק חבל שזו מילה שמורה ב-SQL

  29. sza הגיב:

    האם אפשר גם לכתוב לתוך קובץ שיוצרים
    כלומר, ע"י ASP אפשר ליצור קבצי TXT וכדו’, על השרת..
    האם גם אפשר לכתוב בתוך הקבצים הללו תוכן מסוים?

  30. sza הגיב:

    אני רואה שיש הרבה יתרונות לASP.NET
    אולי שווה ללמוד את זה…
    זה שונה לגמרי מASP? או שאפשר ללמוד את זה בצ’יק?..

  31. sza הגיב:

    כן, אבל עדיין, היא לא כותבת איך
    מכניסים תוכן לתוך הקובץ..
    היא רק אומרת איך יוצרים קובץ, לא איך מכניסים תוכן לקובץ…

  32. אלו לא יתרונות
    אני יודע לעשות את הדברים הללו פשוט בasp.net זה לא אומר שאי אפשר בasp אני בטוח שאפשר

    וכן יש לה יתרונות רבים לך למדור asp.net באתר ותקרא את המדריך ובדוק בעצמך

  33. sza הגיב:

    האם צריך להתקין על השרת את האובייקט
    של האי מייל כדי שהוא יעבוד? או שאפשר גם ככה?

    כלומר, אני רוצה לעבוד עם CDONTS, ויש לי IIS על ווינדוס XP PRO, אני צריך להתקין את הCDONTS? או שהוא כבר מוגדר עם השרת SMTP שלי?

    ואם כן, מאיפה אני צריך להוריד אותו? אפשר קישור בבקשה?

    תודה 🙂

  34. sza הגיב:

    איןאפשרות להוסיף תוכן לקובץ TXT דרך
    ASP רגיל?….

    ליצור את הקובץ עצמו אני יודע, וגם במדריך של סיגל בכמן היא מזכירה את זה, אבל איך אפשר ליצור בתוך הקובץ תוכן מסויים?..

    תודה! 🙂

  35. ניר טייב הגיב:

    עם XP בא האובייקט
    CDO (להבדיל מ-CDONT) תוכל ללמוד עליו באילופיה

  36. sza הגיב:

    איך אפשר להגדיר לאזור טקסט את הפונט
    אני רוצה שהפונט של הכתב שבתוך האזור טקסט יהיה שונה מהברירת מחדל, איך אפשר לעשות את זה?

    ועוד, איך אפשר לשנות לאיזור טקסט את צבע הרקע וכו’?..

    תודה! 🙂

  37. מזה בשיוק איזור טקסט?
    אתה מתכוון לtextarea?
    אם כן אתה פשוט עושה כך:


    <textarea style=font-family:verdana;background-color:yellow>
    text
    </textarea>

  38. sza הגיב:

    תודה, ואת צבע הפונט שבפנים, אפשר ?
    אפשר לשנות?

  39. כן


    <textarea style=font-family:verdana;background-color:yellow;color:red>
    text
    </textarea>

  40. sza הגיב:

    איך אני יוצר option שכשמישהו בוחר מ
    משהו- זה מוסיף טקסט לאיזור טקסט שיש לי באותו טופס?

    הרעיון הוא שיהיה בחירת צבע וכשמישהו יבחר צבע "אדום" זה יוסיף את התג "\אדום//" לתוך האיזור טקסט שיש לי בטופס ואח"כ הריפלייס משנה את זה ל<font color="red">…

    איך אני יכול לעשות את הoption הזה?

  41. כך


    <script language="javascript">
    function addSmile(smile) {
    document.frm1.txt.value+=" "+smile;
    }
    </script>

    <body dir="rtl">

    <form name="frm1">
    <input type="radio" name="txtColor" value="red" onclick="addSmile(‘[אדום] [/אדום]’)"> אדום<br>
    <input type="radio" name="txtColor" value="blue" onclick="addSmile(‘[כחול] [/כחול]’)"> כחול<br>
    <input type="radio" name="txtColor" value="green" onclick="addSmile(‘[ירוק] [/ירוק]’)"> ירוק<br><br>
    <textarea cols="40" rows="16" name="txt">טקסט..
    </textarea>
    </form>

    </body>

    אני מניח שכבר יש לך את הרפלייס, נכון?

  42. sza הגיב:

    תודה רבה!!! אבל…
    יש לי את הרפלייסים, תודה.
    אבל ביקשתי ע"י בחירת OPTION ולא ע"י כפתורי רדיו… אבל לא נורא, זה גם טוב 🙂

    תודה רבה!!! 🙂

  43. והנה עם option


    <script language="javascript">
    function addColor(color) {
    document.frm1.txt.value+=" "+color;
    }
    </script>

    <body dir="rtl">

    <form name="frm1">
    <input type="radio" name="txtColor" value="red" checked onClick="addColor(‘[אדום] [/אדום]’)"> אדום<br>
    <input type="radio" name="txtColor" value="blue" onClick="addColor(‘[כחול] [/כחול]’)"> כחול<br>
    <input type="radio" name="txtColor" value="green" onClick="addColor(‘[ירוק] [/ירוק]’)"> ירוק<br><br>
    <select name="txtColor2" onChange=’addColor(" "+"["+(this.form.txtColor2.value)+"]"+" "+"[/"+(this.form.txtColor2.value)+"]")’>
    <option value="טורקיז" selected>טורקיז
    <option value="תכלת">תכלת
    <option value="צהוב">צהוב
    </select><br><br>
    <textarea cols="40" rows="16" name="txt">טקסט..
    </textarea>
    </form>

    </body>

  44. sza הגיב:

    איך אפשר לבדוק תת תגובות בפורום?
    אני רוצה שבפורום יראו הודעה ומתחת רשימה של כל התגובות עם התת-תגובות של התגובות…
    וכן הלאה.. (התת תת תת תגובות וכו’…)

    הדרך פעולה שלי זה לכתוב את התגובה, ועל כל תגובה לבדוק בשאילתה חדשה אם יש תת תגובה (הID של התגובה הוא הPARENTID של התגובה ההיא…)
    אבל איך אני יכול לעשות את זה אינסופי? הרי יכולים להכניס 20 תגובות, אז אני צריך לעשות 20 בדיקות?
    איך אני יכול לעשות לולאה שעד שלא מוצאים שאין תגובה להודעה ההיא, היא לא מפסיקה לרוץ?

    מקווה שהבנתם.. .:)

    תודה מראש 🙂

  45. ניר טייב הגיב:

    אם זה פורום רקורסיבי
    אז יש מאמר שלי באתר
    אם זה DC אתה לא צריך לעושת כך

  46. אוריקס הגיב:

    בתור התחלה,
    הייתי עושה רקורסיה, שזוהי בדיוק המהות שלה – הפעלת אותה פונקציה עד ש….

  47. ניר טייב הגיב:

    כמו במאמר שלי
    מכניסים הכל למערך getRows ולאחר מכן בודקים

  48. sza הגיב:

    זה בדיוק מה שאני שואל, איך אני בודק
    איך אני בודק שלהודעה שמוצגת כתגובה, אין תת הודעה, ועוד תת הודעה, ועוד תת הודעה..

    הרי יכולים להיות תתי הודעות כמספר ההודעות שיש בפורום,

    אולי (מצב קיצוני למדי) יש בפורום 100 הודעות שהם מורכבים מהודעה ראשית ומתגובה של תגובה של תגובה של תגובה של תגובה של תגובה…. וכו’…

    מה אני צריך לעבור בכל תגובה שאני מוסיף על כל ההודעות ולבדוק אם להודעה X יש תגובה ואם להודעה X1 יש תגובה?

    ולכל תת הודעה? אין לזה סוף…

  49. ניר טייב הגיב:

    תסתכל במאמר שלי והפונקציה
    הרקורסיבית במאמר שלי מטרתה להדפיס את כל התגובות שיש להודעה מסוימת
    וכשאני אומר הודעה מסוימת אני מתכוון גם לתגובות. זה גם הבעייה בפורום רקורסיבי – שאם יש שרשור עם הרבה תתי תגובות אז זה נעשה איטי אבל פותרים זאת ע"י getString והעברה לצד הלקוח (במאמר ההרחבות שלי שיפורסם באתר בהמשך-המאמר נשלח למנהלי האתר)

  50. sza הגיב:

    מה המשמעות של השורות הבאות במאמר שך
    שלך*:


    for a=0 to uBound(recArray,2)
    if recArray(1,a) = recArray(0,index) Then
    call showMessage(a) ‘הצגת התגובות
    end if
    next

    זה נמצא בפונ’ הרקורסיבית, מה המשמעות של הקוד הזה?

  51. ניר טייב הגיב:

    להציג את כל התגובות של
    התגובה הנוכחית

  52. sza הגיב:

    מה שאני מנסה לעשות בעצם זה
    פורום בצורה הבאה:

    בדף הראשי רואים את כל הנושאים של ההודעה, כותב ההודעה,מס’ תגובות , תאריך הכתיבה ממוין מהחדש לישן… כשלוחצים על נושא, נפתח דף שבו כתובה ההודעה של הנושא (כמובן עם הנושא) ואני רוצה שמתחת יהיה שרשור של כותרות התגובות וכשלוחצים על תגובה- עדיין יראו את השרשור של התגובות רק הכותרת של התגובה שבה אתה נמצא כבר לא תהיה לחיצה (היא לא תהיה קישור) אבל עדיין יראו את התגובות של אותה הודעה מקורית שלחצתי עליה, שיראו שיש קשר להודעה ההיא…

    איך אפשר לבנות את זה? הרי צריך לעבור בשביל זה על כל הרשומות כדי ליצור את העץ של התגובה….

    עוד אפשרות שחשבתי לעשות זה לבנות את הדף של הצגת ההודעה בצורה כזו שמתחתיו כבר יהיו כתובות כל התגובות…
    אבל לפני זה יהיו קישורים של הנושאים שכל קישור יקפיץ למקום המסויים בדף שבו כתובה התגובה ההיא…

    בכל אופן, השאלה העיקרית היא איך אני יכול ליצור אפילו אם יש לי את המס’ הודעה 8 את כל העץ הזה שאני אדע ש8 היא תגובה על 4 ו4 היא תגובה על 2 ו2 היא תגובה על 1 וחוץ מזה יש עוד את 5 ו 6 שהם תגובות על 1…

    כלומר, איך אני יכול לדעת ממספר בודד את כל העץ של ההודעה המקורית?

  53. ניר טייב הגיב:

    צריך להוסיף עמודת rootId
    שתעשה קיבוץ של הרשומות לשרשור וכך אפשר לשולף בדף השני את הרשומות הרלוונטיות

  54. sza הגיב:

    מה הכוונה ROOTID?
    שבעמודה תשמר ההודעה המקורית שאליה נשלחה התת תגובה?
    ומה לגבי התת-תת תגובה? איזה rootID יהיה לה? הרי הrootID יבלבל אותי במקרה הזה ויגרום לי לחשוב שהיא רק תת תגובה ולא התגובה של התת תגובה..?

    מבין?… אני אף פעם לא יכול לדעת את השרשור המלא לגמרי…

  55. ניר טייב הגיב:

    rootId זו עמודה חדשה
    שמקלת את ההודעה הראשית של כל השרשור ובכך אפשר לשלוף את השרשור הרלוונטי

  56. sza הגיב:

    אוקי, אבל אז אני מפריד בין תגובות
    אבל אז אני מפריד בין תגובות להודעות רגילות, הרי להודעה רגילה אין RootID…

  57. ניר טייב הגיב:

    לא הפרדה בין הודעה לתגובה אלא
    הפרדה בין שרשור לשרשור
    הודעה ראשית מקבלת ב-rootId את ה-ID של עצמה
    והתגובות להודעה הראשית מקבלות את ה-ID של ההודעה הראשית…

  58. sza הגיב:

    מה הבעיה בקוד הבא?
    זה משפט ההתחברות שלי לטבלה:

    Set rs2 = Server.CreateObject("ADODB.Recordset")
    SQL2="SELECT msgs.msgID, msgs.msgTopic, msgs.msgBody, msgs.parentID, msgs.msgViews, msgs.msgWriterID, msgs.forumNum, msgs.msgPostTime, msgs.msgPostDate, msgs.msgWriterIP, msgs.msgStatus, msgs.rootID,msgs.dUpdate,msgs.tUpdate, users.usernameTBL, users.EmailTBL, users.rankTBL, users.statusTBL FROM users INNER JOIN msgs ON users.userID = msgs.msgWriterID WHERE rootID=" & rs1("rootID") & " ORDER BY msgPostTime,msgPostDate"
    rs2.open SQL2,conn

    אני מנסה להשתמש ב rs2.RecordCount והוא מביא לי את השגיאה הבאה:


    Error Type:
    Microsoft VBScript runtime (0x800A01B6)
    Object doesn’t support this property or method: ‘RecordCound’
    /GC/showTopic.asp, line 125

    שורה 125:


    for b= 1 to rs2.RecordCound

    מה הבעיה?..

  59. ניר טייב הגיב:

    כתבת recordCount עם d בסוף
    ותוסיף לשורת החיבור שלך מפתח סטטי

    rs2.Open SQL2, conn, 3

  60. sza הגיב:

    אה תודה,
    מה זה אומר המפתח הסטטי? מה זה מוסיף?

  61. ניר טייב הגיב:

    מאפשר למשל להשתמש בשיטה זו
    תיכנס למדריך ASP (בסיס נתונים חלק ב’)

שלח תשובה