שלח תשובה

זירת השאלות

307
צפיות
13
תשובות

טופס מחולק ל 2

,‏ 30 באוגוסט, 2004

יש לי טופס שיש בו בערך 30 שדות למילוי.
אני רוצה לחלק את הטופס ל 2 שלבים.

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

תודה –
פפר

תגיות:

13 תשובות

  1. MasterMind הגיב:

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

  2. mynameispepper הגיב:

    למה לשלוח למסד אחרי השלב הראשון?
    ואם מישהו מתחרט והוא לא רוצה להירשם בסופו של דבר אז אני תקוע עם חצי מהמידע?

    זה לא טופס הרשמה רגיל. זה טופס שמיועד לקבל יעד מאוד מצומצם שישמח למלא את השדות האלו.

  3. דווקא ישנה דרך
    אחרי שנתקעתי עם זה פתרתי…
    בשלב הראשון תכניס את כל המידע של המשתמש לsession.
    ובשלב האחרון(אחרי החלק השני של מילוי הטופס) תכניס למסד את מה שהכניס המשתמש מהחלק הראשון בעזרת הsession ואת המידע שקיבלת מהטופס השני. הנה סרטוט קטן בכדי שתבין יותר טוב.

    שלב 1(חצי מהטופס)
                   |
                   |
    שלב 2(הכנסת המידע מחצי הטופס הראשון לsession)
                   |
                   |
    שלב3(חצי הטופס השני)
                   |
                   |
    שלב 4(הכנס למסד את המידע מהחצי הראשון של הטופס בעזרת הsession ומהחלק השני בעזרת request.form)

  4. MasterMind הגיב:

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

  5. Alon12 הגיב:

    דרך הכי פשוטה
    תעביר מפורם לדף עם החלק השני
    בדף השני תעשה <input type=hidden> לכל מה שהגיע
    פשוט לא

  6. mynameispepper הגיב:

    מממ…
    אני עדיין לא בטוח מה הדרך הכי נכונה.

  7. mynameispepper הגיב:

    Inner Join – מסרב לעבוד…
    יש לי 2 טבלאות. האחת היא טבלת מוצרים והשנייה היא טבלת קטגוריות.
    מה שאני רוצה לעשות זה די פשוט.

    אני רוצה להציג את כל הקטגוריות ומתחת לכל קטגוריה את המוצרים שמשוייכים אליה. כמובל שכל מוצר יהיה לינק לעמוד משלו.

    זה הקוד שיש לי:

    SQL = "SELECT categoriesTBL.id AS categoryId,categoriesTBL.name AS categoryName,productsTBL.id AS productId,productsTBL.categoryId AS productCategoryId,productsTBL.name AS productName FROM categoriesTBL INNER JOIN productsTBL ON categoriesTBL.id = productsTBL.categoryId"
    Set rs = Server.CreateObject("ADODB.RecordSet")

    rs.Open SQL,DSN,3,1
        Do Until rs.eof
            categoryId = rs("categoryId")
            categoryName = rs("categoryName")
            productId = rs("productId")
            productCategoryId = rs("productCategoryId")
            productName = rs("productName")
            Response.Write categoryId & ", " & categoryName & ", " & productId & ", " & productCategoryId & ", " & productName
            
        rs.moveNext
        loop
    rs.Close
    Set rs = Nothing

    זו ההודעה שגיאה שאני מקבל:

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

    [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

    show_all.asp, line 85

    זו שורה מספר 85:

    rs.Open SQL,DSN,3,1

    מה זה יכול להיות? בבקשה עזרו.

    תודה אנשים –
    פפר

  8. תחפש איפה טעית בשם של הטבלה באקסס
    אחד השדות ששלפת במשפט SELECT לא קיים באקסס.

  9. mynameispepper הגיב:

    אכן טעיתי באחד השמות אבל הבעייה היא
    שאני לא יודע איך להראות את הנתונים בצורה שאני רוצה.

    אני רוצה להראות את הקטגוריה של כל מוצר ומתחתיה את המוצרים ששייכים לקטגוריה הזו. איך עושים את זה? אני לא בטוח שאני מבין מה הלוגיקה.

    תודה –
    פפק

  10. mynameispepper הגיב:

    איחוד של 2 טבלאות ושליפת הרשומות
    יש לי 2 טבלאות. האחת היא טבלת מוצרים והשנייה היא טבלת קטגוריות. מה שאני רוצה לעשות זה די פשוט.

    אני רוצה להציג את כל הקטגוריות ומתחת לכל קטגוריה את המוצרים שמשוייכים אליה. כמובן  שכל מוצר יהיה לינק לעמוד משלו.

    אני רוצה שהדף ייראה בצורה כזו שקודם תופיע רשימת הקטגוריות במלואה ומתחתיה רשימת המוצרים שמשוייכים לפי כל קטגוריה אבל שכל רשימת מוצרים תיהיה בבלוק נפרד משלה (ראו קובץ מצורף).

    זה הקוד שיש לי:

    SQL = "SELECT id,name FROM categoriesTBL ORDER BY name"
    Set rs = Server.CreateObject("ADODB.RecordSet")

    rs.Open SQL,DSN,3,1
        Do Until rs.eof
            categoryId = rs("id")
            name = rs("name")
            Response.Write ",""" & name & """,""show-menu=menu" & categoryId & """,,,1" & vbCrLf

            Response.Write vbTab & "addmenu(menu=[""menu" & categoryId & """,,,187,2,,style1,"""",""left"",effect,,,,,,,,,""http://attitudeline.com/imgs/blue.gif"&quot;,,," & vbCrLf

            innerSQL = "SELECT id,name FROM productsTBL WHERE id=" & categoryId & " ORDER BY name"
            Set innerRs = Server.CreateObject("ADODB.RecordSet")
            innerRs.Open innerSQL,DSN,3,1
                Do Until innerRs.eof
                    productId = innerRs("id")
                    productName = innerRs("name")
                    Response.Write vbTab & ",""" & productName & """,""products.asp?id=" & productId & """,,,1" & vbCrLf
                innerRs.moveNext
                loop
                Response.Write vbTab & "'])" & vbCrLf
            innerRs.Close
            Set innerRs = Nothing
        rs.moveNext
        loop
    rs.Close
    Set rs = Nothing

    אבל מה שהוא נותן לי זה את רשימת הקטגוריות ומתחת לכל קטגוריה את רשימת המוצרים ששייכים אליה.

    אנא עזרו, אני נואש!

    תודה –
    פפר

  11. אז פשוט תעשה כך
    תפתח רקורדסט ושיציג את כל הקטגוריות. לאחר מכן סגור אותו. אח"כ תפתח רקורדסט חדש שיפתח את כל רשימת המוצרים.

  12. mynameispepper הגיב:

    אבל אני רוצה שהם יהיו מסודרים בסדר
    הגיוני… (כמו שתיארתי בקובץ טקסט שמצורף בהודעה מעל).

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

    למשל:

    בטבלה קטגוריות:

    קטגוריה:     מספר סידורי
    ספורט        1
    בריאות       2
    מחשבים     3
    וכו'…

    בטבלת מוצרים:

    מוצר        מספר סידורי (התואם לקטגוריה)
    כדורגל     1
    אינטרנט   3
    כדורסל     1
    דיאטות     2
    וכו'…

    עכשיו, תעשה את השליפה גם למוצרים וגם לקטגוריות כך:
    order by מספר סידורי

    אני מקווה שזה מובן.

שלח תשובה