שלח תשובה

זירת השאלות

783
צפיות
30
תשובות

עזרה באישור משתמשים

,‏ 10 בפברואר, 2004

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

טוב, אז כעת ניגש לשאלתי:
יש לי אתר, שבו מערכת של טור-אישי(אם מישהו רוצה שתיהיה לו פינה משלו באתר שאותה הוא רוצה לעדכן ולכתוב שם מה שבא לו, אז זה המקום האידיאלי)
למערכת טור-אישי לא כל אחד יכל להיות מנהל. לכן במערכת הניהול של האתר בניתי מין חלק שבו מוצג מדטא-בייס כל מי שרוצה אישור לניהול, ובסוף לכל משתמש מוצגת תיבת select שבא כתוב אשר, ומחק. מי שרוצה שאני יאשר לו, אני בוחר את אשר ומי שלא בוחר, את מחק. אז בטבלת הדטא בייס של האישורים יש לי שורה של status מסוג של כןלא. מי שנרשם מקבל את הערך false ומי שנאשר על-ידי מקבל את הערך true. ואחרת הוא נמחק. אז הנה הקוד של העמוד:
<%

if request.form("Proccess")=Option2 then
set oConn=server.createobject("ADODB.connection")
oConn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/proccess.mdb")

oConn.execute("UPDATE TR SET status=true WHERE status=true")

else
if request.form("Proccess")=Option3 then
oConn.execute("DELETE FROM TR WHERE status=false")

end if
end if


%>

כשאני בוחר את אשר או מחק ולוחץ על שלח(על מנת לשלוח את הנתונים לקובץ עם הקוד הזה) ואז לוחץ על חזור, אני רואה עדיין בחלון את כל אלה שכתבתי להם אשר וגם את כל אלה שכתבתי להם מחק. אבל אמרתי בפעולת הSELECT של SQL שיראה לי רק את אלו שיש להם את הערך false ובטבלה של האנשים שאושרי על-ידי ביקשתי את הערך true של השדה status. אז מקווה שתעזרו לי בהקדם,
ותודה לכל עוזר שהוא.

תגיות:

30 תשובות

  1. אז לפחות תענו לי על השאלה
    אם אתם לא עונים לי על השאלה הזאת אז אולי לפחות תענו לי על ההבאה בבקשה:
    אני כותב כתבה באתר שלי ואני מקבל את הודעת השגיאה הבאה:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

    [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression "àæ äëì äúçéì ëëä: áú-éí äùúúôä áúåëðéú äøàùåï ááéãåø òí ãåãå-èåôæ åìòúä ì3 òøéí îäâîø. äòéø ùîðöçú î÷áìú 350,000 ù"ç ìöåøê äçéðåê åäîåòãðéåú. îä ùáú-éí òùúä ì÷øàú äâîø äåà äéä äð÷éåï ùìä. ëúåú å' îëì áúé-äñôø ááú-éí ðé÷å àú çåôé áú-éí. ','2/10/2004 9:'.

    /igal-alon/add_news_check.asp, line 182
    הכתב המוזר הזה זה מה שכתוב לי בכתבה. לדעתי זה אומר שיש יותר מדי טקסט,
    אבל השדה שמקבל את הכתבה הזאת הוא מסוג Memo

  2. mrmistory הגיב:

    כנס….
    1) תראה את השאילתא שלך.
    איך לעשות: להדפיס אותה על המסך ולתת לנו אותה פה.

    2) תן לנו את שורה 182 שלך כדי לראות מה יש שם.

    3) אני חושב שיש לך עוד טעות.
    אם השדה שלך מוגדר כשדה תאריך אז אתה חייב לעשות לא גרשיים אלא ## ובניהם להכניס את התאריך.
    ואתה עשית גרשיים

    בהצלחה.

  3. תודה רבה, והנה בשבילך:
    הנה שורה 182:
    oConn.Execute( "INSERT INTO NewsTown (msgName, msgTitle, msgFBody, msgBody, msgTime, msgPicture) VALUES ('" & request.form("msgName") & "','" & request.form("msgTitle") & "','" & request.form("msgFBody") & "','" & request.form("msgBody") & "','" & request.form("msgTime") & "','" & request.form("msgPicture") & "')")

    הנה השאילתה בהדפסה:
    INSERT INTO NewsTown (msgName, msgTitle, msgFBody, msgBody, msgTime, msgPicture) VALUES (",",",",",")

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

  5. mrmistory הגיב:

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

  6. וזה, בגלל שאני לא הכנסתי ערכים

    כי אני לא הכנסתי ערכים לשדות.
    אבל ככה אתם לא יכולים לעזור לי בבקשה?
    אז לפחות תענו לשאלה הראשונה שלי לא לזאת

  7. ישרתי אותו:
    הנה:


    <%

    if request.form("Proccess")=Option2 then
    set oConn=server.createobject("ADODB.connection")
    oConn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/proccess.mdb")

    oConn.execute("UPDATE TR SET status=true WHERE status=true")

    else
    if request.form("Proccess")=Option3 then
    oConn.execute("DELETE FROM TR WHERE status=false")

    end if
    end if

    %>

  8. למה אתם לא עוזרים לי
    למה אתם לא עונים לי?
    ישרתי את הקוד ואף-אחד לא עונה.
    1000000 אתרים יכולים להתמוטט עד שנותנים פה עזרה

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

    אני עדיין מחכה שהאתרים יתמוטטו
    1000….
    1001….
    1002….

  10. זהר פלד הגיב:

    הקוד הזה לא יעשה את מה שאתה רוצה.
    שאילתת המחיקה שלך תמחק את כל הרשומות שה status שלהן הוא false,
    ושאילתת העדכון שלך לא תעשה שום דבר:

    UPDATE TR SET status=true WHERE status=true

    אתה נותן לשדה status את אותו ערך שהוא כבר מכיל, אז מה עשית בזה?

    אתה צריך לבצע את ה WHERE לפי userId – כלומר לפי שדה שיש לו ערך חד-חד ערכי לכל משתמש.

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

  11. זהר פלד הגיב:

    תחשוב קצת –
    אתה היית ממהר לעזור למישהו שלכלך עליך?

    אז למה שנרצה לעזור לך אחרי שאתה מלכלך עלינו?

  12. זהר פלד הגיב:

    לא. ככה אי אפשר לעזור לך,
    כי זו לא אותה שאילתה.
    אתה חייב להבין שמבחינת מסד הנתונים שלך – אלו שתי שאילתות שונות לחלוטין – לכן אי אפשר לדבג את השאילתה הראשונה לפי השאילתה השניה.

  13. תודה,
    מתי לכלכתי עליכם? אני אפילו לא רשום פה שבוע!.
    ואם אתם מדברים בקשר להודעה שהכותרת שלה היא חוצפה, זה בגלל שיש פה אולי אנשים שכל רגע חייבים לפתוח את האתר שלהם ולא עונים להם אפילו אחרי יממה שלמה!.
    אז עזבו את הקטע שלמעלה.
    אחרי שעשיתי back אני גם רעננתי וגם סגרתי ופתחתי מחדש את הדפדפן ושום-דבר לא קרה.
    ואיפה את רואה פה את userid?

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

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

  15. mrmistory הגיב:

    לכלכת לפני כמה ימים….
    אני זוכר טוב מאוד.
    אתה ו STIMPI כמו חברים מילדות עשיתם פה מסחרה מי עוזר ומי לא ועד כמה הפורום הזה חרא בשבילך ולא עוזרים לך.

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

  16. זהר פלד הגיב:

    userId הוא סתם דוגמא…
    אתה צריך לבצע את ההשוואה לא לפי השדה status, אלא לפי שדה מזהה של הגולש.
    הסברתי את זה בצורה ברורה ככל שיכולתי, ואין לי שום כוונה למחזר הסברים.
    לגבי זה שלא עונים לשאלות, אז ככה:

    א) לא תמיד יודעים את התשובה

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

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

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

    ולגבי השאלה של מתי לכלכת עלינו, אז כמו כדי שתקרא במו עינייך, הנה לינק לתחילת השרשור. (אותו שרשור שדיבר עליו mrmistory)

  17. תודה רבה, והנה בשבילך:
    חופש הביטוי?(אולי זה מה שיציל אותי…).
    טוב, עזבו תתעלמו, פשוט הייתי בלחץ ודחיתי את פתיחת האתר לעוד שבועיים.
    טוב, תודה זהר לא חשבתי על זה, ואני אבדוק את זה.
    אבל רגע, אני צריך לעשות שאיפה שדה הstatus שהוא מסוג של כןלא שיהפוך לtrue שאיפה נמצא הfalse ומה שאמרת לא כל כך הגיוני.
    זאת אומרת, אני יכל לעשות באותו מקום שאני שולח את הנתונים לשאילתה לעשות שדה input מסוג hidden והvalue שלו יהיה שם המשתמש, או שלעשות session או application שמכיל נגיד את שם המשתמש?.

  18. זהר פלד הגיב:

    שדה מוסג hidden בטופס זו אכן הדרך
    הנכונה.

  19. תודה,
    או.קיי

    תודה. רואים?, אני מתקדם בASP

  20. לא מצליח לי שום דבר
    היי,
    ניסיתי הכל הכל ושום דבר לא הצליח, בבקשה תעזרו לי.
    אז הנה הקוד המטומטם הזה:


    <%

    if request.form("Proccess")="option2" then
    set oConn=server.createobject("ADODB.connection")
    oConn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/proccess.mdb")
    oConn.execute("UPDATE TR SET status=1 WHERE UserName=" & request.querystring("Procces") & ")")

    else
    if request.form("Proccess")="option3" then
    oConn.execute("DELETE FROM TR WHERE UserName=" & request.querystring("Procces") & ")")

    end if
    end if

    %>


    תודה לעוזר

  21. mrmistory הגיב:

    כנס…
    אם UserName הוא שדה מסוג טקסט אז תוסיף גרש לפני משתנה ואחרי, זאת אומרת רשום ככה

    <%

    if request.form("Proccess")="option2" then
    set oConn=server.createobject("ADODB.connection")
    oConn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/proccess.mdb")
    oConn.execute("UPDATE TR SET status=1 WHERE UserName='" & request.querystring("Procces") & "' )")

    else
    if request.form("Proccess")="option3" then
    oConn.execute("DELETE FROM TR WHERE UserName='" & request.querystring("Procces") & "')")

    end if
    end if

    %>

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

    תגדיר…
    חיבור לפני ההתנייה
    זה יפתור לך הכל או שתגדיר חיבור נוסף בתוך ה-else

  23. זהר פלד הגיב:

    אני חושב שכבר הפניתי אותך פעם
    למאמר הזה, לא?

    כתבתי שם שחשוב מאוד להפריד את התהליכים – קודם לשרשר את ה SQL למחרוזת אחת, ורק אח"כ לשלוח אותו למסד הנתונים…

    שיפור ראשוני לקוד שלך:

    <%
    ' build the strSQL string according to the input from the user
    select case request.form("Proccess")
    case "option2" :
    strSQL = "UPDATE TR SET status=1 WHERE UserName='" & request.querystring("Procces") & "' )"
    cace "option3":
    strSQL = "DELETE FROM TR WHERE UserName='" & request.querystring("Procces") & "')"
    end select

    ' set a connection object
    set oConn=server.createobject("ADODB.connection")
    oConn.open "Driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/proccess.mdb")
    ' execute the SQL statment in strSQL string
    oConn.execute(strSQL)

    ' close the connection
    oConn.close
    'kill the connection object
    set oConn = Nothing
    %>

  24. תודה תודה תודה
    או קיי,
    תודה אתם באמת עוזרים פה בפורום ויש פה מנהל מאוד פעיל(זהר פלד) ובאמת תודה תודה רבה לכם, אלף תודות!

  25. שגיאה בקוד של זהר
    בניתי את העמוד שלי לפי הקוד שזהר נתן לי והופיע לי השגיאה הבאה:


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

    Command text was not set for the command object.

    /igal-alon/ProccesTR_verif.asp, line 105

    תודה לעוזר

  26. תראה את הקוד שלך
    בקיצור – השגיאה אומרת שאתה מנסה להרית משפט SQL ריק. תוודא שאיתחלת את המשתנה הנכון.

שלח תשובה