שלח תשובה

זירת השאלות

585
צפיות
43
תשובות

מישהו יכול להגיד לי בבקשה מה

,‏ 1 ביולי, 2004

לא בסדר במשפט הupdate הזה ?
כי הוא מציב  "+ Request.Form(Mess1) +" בעמודה Msg במקום הערך של Mess1


var SQL1 = "UPDATE messages SET Msg = ' + Request.Form(Mess1) +'   WHERE id = 1 "

תגיות:

43 תשובות

  1. רום הגיב:

    אם אני לא טועה…
    צריך לשים מרכאות… כמו עם &
    למשל כך:


    var SQL1 = "UPDATE messages SET Msg = '" + Request.Form(Mess1) +"'   WHERE id = 1 "

  2. BuildHome הגיב:

    אני רק יכול לומר לך
    שהשליפה של הנתון מן הטופס שגוי. הוא צריך לבוא במרכאות כך:

    Request.Form("Mess1")

    בנוסף, האם השדה Msg הוא מספרי? אם לא הוא צריך לבוא במרכאות.

  3. אוקיי פתרתי בעיה אחת, ואחרת צצה.
    הנה הקוד המתוקן

    for (var i = 1 ; i <=4 ; i++) {
        var SQL = "UPDATE messages SET Msg = '" + Request.Form("Mess+i") + "'   WHERE id = i " ;
         oConn.execute (SQL);
       }

    והשגיאה שמוחזרת מצביעה על שורת הexecute ואומרת:

    Microsoft JET Database Engine error '80040e10'

    No value given for one or more required parameters.

    /NewDesign/UpdateMsg.asp, line 10

    מה זה אומר ואיך מתקנים את זה ?

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

    ה-i צריך להיות מחוץ למחרוזות של
    הארגומנט של REQUEST וגם מחוץ למחרוזת עצמה של השאילתא

    var SQL = "UPDATE messages SET Msg = '" + Request.Form("Mess"+i) + "'   WHERE id = "+i ;


    ולדעתי יהיה יותר נכון להגדיר את המשתנה SQL מחוץ ללולאה כך לא תצטרך לעבור אולי עוד שגיאה ולחסוך משאבים (יצירה של משתנה זה משאבים)

  5. Request ב-JS
    צריך להיכתב ככה:

    Request("property")()
    Request.Form("property")()
    Request.QueryString("property")()

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

  6. בעיה נוספת…
    כשאני מנסה להוסיף גרש (') למסד נתונים אני עושה את זה כך:


    Content= Content.replace(/'/g, "&#39");

    והכל טוב ויפה והוא מוסיף את הvalue למסד, אבל כשאני קורא את זה בgetString הוא מחזיר לי שגיאה.
    מישהו יודע למה ?

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

    מסכים איתך
    אם אני לא טועה הוא כתב שם "לפעמים"… כלומר, תמיד כדאי לבדוק.

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

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

  9. אוקיי, אני אנסה להסביר את הבעיה.
    יש לי את הדף הבא, שמראה לי את ההודעות במסד:
    http://i2.1asphost.com/yud1tk/manage.asp
    הוא מציג לי את ההודעות ואני מעדכן אותן בעזרתו.
    עכשיו למקרה שהמעדכן יכניס גרש, אז רציתי להחליף אותו בייצוג שלו:

    Content= Content.replace(/'/g, "&#39");

    עכשיו הבעיה, היא כשהוא מנסה לקרוא את ההודעה מהמסד כשיש בה גרש, והדף מחזיר שגיאה. שנחוץ '['
    הנה המערך שמתקבל בgetString

    var MsgArray=[['הודעה א'], ['הודעה ב'], ['הודעה ג'], ['הודעה ד']]

    ואם מופיע שם גרש אז זה עושה בעיות והחלפתו במשפט הreplace הנ"ל לא עוזרת.
    יש רעיון איך למנוע את השגיאה ?

  10. בהההה, יצא גרש אמור להיות


    & # 3 9

    (רק בלי הרווחים)

  11. הקפצונת !
    למישהו יש מושג למה זה לא עובד?

  12. sirob הגיב:

    שאלה.
    באיזו שפה אתה מנסה שהשורה הזו תרוץ:

    var MsgArray=[['הודעה א'], ['הודעה ב'], ['הודעה ג'], ['הודעה ד']]

    ?

  13. זאת התוצאה, של קוד הASP הזה

      var columnDelimiter="','" ;
        var rowDelimiter="'], ['" ;
        var str= oRs.GetString(2,-1,columnDelimiter,rowDelimiter) ;
        str="var MsgArray=[['" + str.substr(0,str.length-4) + "]" ;

    וזה אמור לרוץ בJS

  14. sirob הגיב:

    ניסית ככה?

    var MsgArray=new Array('הודעה א','הודעה ב','הודעה ג','הודעה ד')

    כמו כן, אם יש גרש התוך אחד הערכים צריך להוסיף לפניו את ה-escape character (). כמו-כן, בשביל צריך לכתוב \.

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

    אתה טועה!
    דרך הכתיבה שאתה אומר מחייבת אותו להפעיל את הבונה (constructor) של מערכים שזה בזבוז משאבים (לקוח או שרת) כמו כן הוא מגדיר מערך דו מימדי
    בדרך הקלה ביותר

  16. sirob הגיב:

    מערך דו מימדי? מה?
    אם כבר אז ככה:

    var theMonths : String[] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

    אבל זה לא ממש חשוב….

    עוד פרטים : קישור

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

    הדוגמא שהראתה זה ב-Jscript.net
    ולא ב-JSCRIPT רגיל.
    תעשה את הקוד הקטן הבא (sirob)

    <script type="text/javascript">
    var anArray = [["a","b",c"], ["d","e","f"]], message="";
    for (var i=0;i<anArray.length;i++){
    for (var j=0;j<anArray[i].length;j++){
      message+=anArray[i][j]+"n";
    }
    }
    alert(message);
    </script>

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

    לא בטוח
    נסה לעשות את זה בשליפה

    SELECT Replace(fldDesc,"'", "&# 39;") AS repFldDesc, <fields> FROM tbl

    (תוריד את הרווח שבין &# ל-39)

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

  19. sirob הגיב:

    לדעתי אלו השורות הגואלות:


    str = Replace(str, "", "\")
    str = Replace(str, "'", "")

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

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

  21. בעיית replace
    השורות הבאות לא עובדות…

             Content = Content.replace(/& #39;/g,"'");
             Content = Content.replace(/& #34;/g,""");

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

    יש למישהו מושג למה ?

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

    נסה כך:


    Content = Content.replacenew RegExp("&# 39;","gi"),"'");

  23. מחזיר שגיאה:
    (מצורפת תמונה שלה)
    הנה השורה הבעייתית ואין לי מושג איפה צריך להוסיף עוד ;


    Content = Content.replace;new RegExp("'","gi"),"'");  

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

    תיקון


    Content = Content.replace(new RegExp("&# 39;","gi"),"'");  

  25. תנסה ככה


    Content = Replace(Content,"'","´")
    Content = Replace(Content,"""",""")

  26. תיקון
    תוריד את הרווחים אחרי כל &

    Content = Replace(Content,"'","& acute;")
    Content = Replace(Content,"""","& quot;")

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

    הוא רוצה להמיר את סימן
    היוניקוד/ASCII לסימן הרגיל!

  28. חזרנו לשגיאה:
    "האובייקט אינו תומך במאפיין או בפעולות שירות אלה"
    הנה הקוד המלא:


    <% =str %>
    var Content;
    onload =  function Fill() {
           for (var i = 0 ; i <= MsgArray.length-1 ; i++) {
         var id = 'Mess' + parseInt(i + 1);
            id =  id.toString();
        Content =  MsgArray[i] ;
        alert(Content);
        Content = Content.replace(new RegExp("'","gi"),"'");
            Content = Content.replace(new RegExp(""","gi"),""");
            document.getElementById(id).value = Content ;
            }
    }

    רעיונות?  אני כבר נואש….

  29. תודה רבה זה עובד, אבל למה ?
    מה בדיוק השורה הזו משנה ?

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

    האמת היא שאני לא יודע למה זה קרה
    לך אני פשוט עשיתי שהמשתנה יכיל מחרוזת.
    כנראה המשתנה קיבל ריפרנס לסוג אחר ולכן זה קרה :-/

  31. סליחה, אבל יש עוד בעיה קטנה,
    אני מצטער שאני כל כך מעצבן, אבל זאת פעם ראשונה שאני מתעסק עם זה (די ברור).
    הבעיה היא כשאני עושה enter (ירידת שורה), אני מנסה להמיר את זה כך לbr

    Content = Content.replace(/n/g, '<br>');

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


    var MsgArray=[['אני ממש מקווה שהאנטר פועל
    <br>שורה שנייה'], ['זה גרש &# 39;'], ['zdzsd'], ['דג']]

    יש למישהו מושג למה זה קורה ?

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

    תעשה ריפלייס בשרת


    str = str.replace(/n/g, "r")

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

    שרשר שאלותיך
    הודעות לא משורשרות ימחקו מידית!

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

  35. sirob הגיב:

    אפשר ככה נראה לי:

    Content = Content.replace(vbcrlf, '<br>');

    ב-VBS.

    אם זה לא עובד נסה את vbcr או vblf אולי זה רק אחד מהם (אמור להיות הראשון).

שלח תשובה