שלח תשובה

זירת השאלות

254
צפיות
24
תשובות

קליטת נתונים למסד הנתונים

,‏ 13 ביוני, 2004

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

שאלתי היא האם ניתן לעשות את הפעולה הזו בדף אחד ולא בשני דפי ASP?
אם כן, כיצד?

אודה לתשובתכם.

תגיות:

24 תשובות

  1. כן
    תיצור פונקציה באותו הדף שתעשה את אותה הפעולה

  2. hedish הגיב:

    אני די מתחיל ..אז
    האם את הפונקצייה (קוד ה- ASP) לכתוב לפני קוד ה- HTML?
    או אחרי?

  3. BuildHome הגיב:

    עוד אפשרויות…
    1. אתה יכול ליצור משפט IF שבודק אם נשלח הטופס וכך בעצם לחלק את העמוד שלך לשניים בקלות.

    2. לעבוד עם Select Case וליצור Case לטופס ועוד Case להוספת הנתונים למסד.

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

  4. hedish הגיב:

    שגיאה 800A0CB3
    קיבלתי את השגיאה הנ"ל:
    ADODB.Recordset (0x800A0CB3)
    Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
    /phonebook1/add.asp, line 89

    בדף add כתבתי כך:


    Dim RS, SQL
    set  RS = server.CreateObject("ADODB.recordset")
    SQL =  "SELECT * FROM phonenumber"
    RS.open SQL, connstring

    ובשורה 89

    RS.addnew

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

  5. BuildHome הגיב:

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

    תחליף את הקוד:

    RS.open SQL, connstring

    בזה:


    RS.open SQL, connstring, 2, 3

    השגיאה אמורה להיעלם.

  6. hedish הגיב:

    ניווט ברשומות – בעיות!
    טופס עם תיבות טקסט שבהם נתונים מתוך מסד הנתונים.
    בתחתית הטופס לינק בשם NEXT שמקושר לפונקציה שבניתי RSMOVENEXT.

    הודעת השגיאה שמתקבלת היא


    Directory Listing Denied
    This Virtual Directory does not allow contents to be listed

    הפונקציה:

    <%
    Dim RS, SQL
    set  RS = server.CreateObject("ADODB.recordset")
    SQL =  "SELECT * FROM phonenumber"
    RS.open SQL, connstring, 2, 3

    Sub RSMoveNext
        if not RS.eof then RS.movenext
    End Sub
    %>    

    הטופס:


    <form action="" method="post" name="update_form" id="update_form">
      <table width="500" border="1" cellspacing="2" cellpadding="2">
        <tr>
          <td>First Name </td>
          <td><input name="first_name" type="text" id="first_name" value="<%=(RS.Fields.Item("first_name").Value)%>"></td>
        </tr>
        <tr>
          <td>Last Name </td>
          <td><input type="text" name="textfield2" value="<%=(RS.Fields.Item("last_name").Value)%>"></td>
    .
    .
    .
    .
    <td colspan="2">Previous <a href="<%RSMoveNext%>">Next</a> </td>
        </tr>
        <tr>
          <td colspan="2"><input type="submit" name="Submit" value="UPDATE RECORD"></td>
        </tr>
      </table>
    </form>

    אודה לתשובתכם מקרב לב!!!!

  7. BuildHome הגיב:

    הפונקציה שגוייה
    יותר נכון, הסאב..

    אתה צריך לשים את כל הקוד בתוך הסאב ולא רק שורה בודדת וגם לא הדפסת בסאב תוצאה.


    <%
    Sub RSMoveNext
        Dim RS, SQL
        set  RS = server.CreateObject("ADODB.recordset")
        SQL =  "SELECT * FROM phonenumber"
        RS.open SQL, connstring, 2, 3
        if not RS.eof then RS.movenext
    End Sub
    %>    

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

  8. hedish הגיב:

    התכוונתי ל….
    בכל פעם שאלחץ NEXT
    ישתנו הנתונים בתיבות הטקסט.
    האם כך אני צריך לבצע זאת?

  9. BuildHome הגיב:

    באופן דינמי…
    ללא מעבר לעמוד אחר או רענון העמוד ?

  10. hedish הגיב:

    EXECTLLEY! זה בדיוק מה שאני צריך!!!
    איך לעשות את זה?
    (הסיפור הוא שבניתי אתר שלם בלחיצות כפתור בעזרת DREAMWEAVER
    אך הכל הלך לעזאזל, והגעתי למסקנה שבאמת הכי טוב , לכתוב ידנית את הקוד.)

    הגעתי לשלב הזה.

    איך אני מבצע דבר כזה?

    תודה מראש!!!!

  11. hedish הגיב:

    ניווט ברשומות באופן דינמי
    ניסיתי ליצור טופס עם תיבות טקסט עם לינק בשם NEXT
    בעת לחיצה עליו ינועו הנתונים (הרשומות) קדימה מבלי לעבור דף או לרעננו.
    כלומר – באופן דינמי.

    יצרתי פונקציה להוזזת הרשומה קדימה


    <%
    Dim RS, SQL
    set  RS = server.CreateObject("ADODB.recordset")
    SQL =  "SELECT * FROM phonenumber"
    RS.open SQL, connstring, 2, 3

    Sub RSMoveNext
        if not RS.eof then RS.movenext
    End Sub
    %>    

    הלינק –


    <a href="<%RSMoveNext%>">Next</a>

    השגיאה:


    Directory Listing Denied
    This Virtual Directory does not allow contents to be listed

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

    אתה לא יכול.
    יש הבדל בין צד שרת ללקוח…
    קרא כאן

  13. hedish הגיב:

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

    לכן אני מתעקש על השאלה הזו.

    אודה באם לך או למישהו כאן בפורום יש תשובה לבעייתי.

    תודה לכם!

  14. hedish הגיב:

    האם אפשר לרשום בצורה כזו?
    כלומר האם כתיבה זו נכונה?

    כפתור


          <td colspan="2"><input name="previous" type="button" id="previous" value="Previous" onClick="<% RSMovePrevious %>"></td>

    כאשר RSMovePrevious היא פונקציה. האם זה מותר או שמא רק משתנים ניתן לשים?

  15. BuildHome הגיב:

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

    function….

    code…
    Response.Write …
    end function

    2. להדפיס את המשתנה המתקבל מהפונקציה, לפי הקוד שלך:

    <td colspan="2"><input name="previous" type="button" id="previous" value="Previous" onClick="<%=RSMovePrevious%>"></td>

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

    אי אפשר להפעיל פעולות של צד שרת דרך
    לקוח, אלא עם שליחת בקשה נפרדת.

  17. hedish הגיב:

    תשמע אני לא מי יודע מה מבין אבל הנה
    הקובץ שמבצע את זה.

    מחכה לתגובה
    תודה!!!

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

    נראה לך שמישהו הולך לעבור על כזה ק-
    וד?

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

    אי אפשר לקרוא לפונקציות צד שרת
    מצד הלקוח.

  20. BuildHome הגיב:

    קרא תקנון פורום וכיצד מציגים שאלה|!

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

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


    "SELECT TOP 1 * FROM tbl WHERE fldID>"&lastRecord&" ORDER BY fldId"

שלח תשובה