שלח תשובה

זירת השאלות

304
צפיות
38
תשובות

שאלה על פונקציות (בPHP)

,‏ 25 ביוני, 2004

הגדרתי פונקציה כך:




function unset()
{
session_start();
session_unregister(‘session_name’);
}



ופונקציה זאת מופיעה בתחילת הדף ולמי שלא הבין הוא מוחקת session.
עשיתי לינק כזה:




echo ‘<a href="" onclick="’.unset().’">unset</a>’;



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

אז איך אפשר לעשות שהיא לא תתחיל אוטומטית עם טעינת הדף?

תגיות:

38 תשובות

  1. BuildHome הגיב:

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

    page.php?ac=1

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

  2. Alo הגיב:

    אבל רציתי לדעת…
    איך אני משלב פונקציה של PHP בonclick בלי שהיא תפעל עם עליית הדף…

  3. BuildHome הגיב:

    למה הפונקציה פועלת בעת עליית הדף
    מלכתחילה ?

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

    זה למה
    ב-PHP וב-ASP אי אפשר לקרוא לפעולות בשרת באירועי לקוח (ב-ASP.NET אפשרי ע"י הפקדים המיוחדים של הטכנולוגיה)
    קודם כל הפעולות שבין <?PHP ו- ?> (או ב-ASP <% %>)
    מתבצעות שאלו הפעולות של השרת ולאחר מכן מתבצעות הפעולות בלקוח (HTML, CSS ו-JS)

    http://www.tapuz.co.il/tapuzforum/main/ForumFAQAnswer.asp?id=130&QID=80
    (אולם זה ב-ASP אך זה עדכני גם לגבי PHP)

  5. Alo הגיב:

    וואלה שכחתי שאני מדבר על צד שרת…

  6. Alo הגיב:

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

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

    אם אתה
    מתכוון לשליפת הרשומה עם התאריך המאוחר ביותר אז ככה:

    SELECT TOP 1 <fields> FROM tbl ORDER BY dateFields DESC

    או


    SELECT <fields> FROM tbl WHERE dateField=MAX(dateField)

    (אני בספק עם השני עובד)

  8. Alo הגיב:

    מממ
    לא הבנת את השאלה:
    איך השרת אמור לדעת שהתאריך 15.5 הוא מאוחר יותר מהתאריך 30.4 ?

  9. BuildHome הגיב:

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

    אם הבנתי נכון..

  10. Alo הגיב:

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

  11. BuildHome הגיב:

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

  12. Alo הגיב:

    מה שמחזיר אותי לשאלה הקודמת…
    באיזה פורמט לכתוב את התאריך? כי אם יש לי שני תאריכים: 30.5 1.7 הוא לא יכול לדעת איזה תריך הוא מאוחר יותר…

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

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

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

    ההבדל יהיה בזמן ההודעה
    שאתה יוצר את השדה אתה צריך ליצור אותו כ-תאריך/שעה (באקסס זה כשדה אחד לשניהם יש מסדים אחרים שזה בנפרד)
    ובכך זה מזהה

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

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

  16. Alo הגיב:

    יש לי שאלה בקשר ל ORDER BY
    יש לי 2 שדות: אחד של תאריך ואחד של שנה.
    אני יכול לעשות ORDER BY לפי שניהם ביחד?

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

    ורק לציין
    שהוא קודם יסדר לפי הפרמטר הראשון (ID במקרה הזה) ואח"כ לפי הפרמטר השני. ככה שאם ID הוא מספור אוטומטי זה לא ממש משנה אם אתה מסדר לפי SomeDate.

  18. Alo הגיב:

    תודה, ו….
    אני השתמשתי ב AND במקום פסיק (,) – זה אותו דבר?

  19. Alo הגיב:

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

  20. BuildHome הגיב:

    שים את השורה הבאה ב-HEAD שלך

    <meta http-equiv="Content-Type" content="text/html; charset=windows-1255">

    זה אמור לפתור את הבעיה.

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

    זה צריך להיות ברמת השרת נראה לי
    כמו ב-ASP שעושים CODEPAGE צריך להיות בטח משהו כזה ל-PHP

  22. Alo הגיב:

    ניסיתי, לא עזר…. זה לא קשור לזה ש
    אני משתמש ב include (כולל לפים אחרים) נכון?

  23. Alo הגיב:

    אם אף אחד לא יודע מה לעשות:
    מישהו מכיר שרת איחסון חינם שתומך ב PHP וב MySQL?
    תודה מראש…

  24. Alo הגיב:

    מכיר, הבעיה היא…
    שהם לא נותנים הרבה מקום, וגם הם קובעים את שם ה DB, ואני מעדיף שאני יקבע אותו…

  25. BuildHome הגיב:

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

  26. Alo הגיב:

    ת’אמת, המקום הוא לא הבעיה אלא ה DB

  27. Alo הגיב:

    אםם בקשר לשאלה על העברית…
    הבעיה היא שזה מציג ג’יבריש (אני חושב) במקום עברית:
    äôåøåí ùìé

    אז יש דרך לסדר את זה אוטומטית? (כאילו בלי לשנות קידוד כל הזמן)

  28. BuildHome הגיב:

    מהיכן העתקת את הקוד ?
    מעורך מסויים כמו HomeSite או DreamWaver?
    פתח את הקובץ בפנקס הרשימות.

    אם אתה רוצה להוסיף קידוד לעמוד אז תכתוב את זה בשורה הראשונה של העמוד (אחרת לא יעבוד!):

    <%@language="VBSCRIPT" CODEPAGE="1255"%>

  29. jonatan44 הגיב:

    נסיון לתגובה.
    איך הכנסתה את הנתונים,
    היה לי פעם באג די מעצבן,שהאתר שלי היה על קידוד UTF-8,אבל הדף שהכניס את הנתונים למסד היה על קידוד ISO,ואז נוצר אי-תאימות בין הדפים ושם הייתה הבעייה (הישתמשתי ב phpMyAdmin כדאי לכניס נתונים,הוא עובד על ISO).

  30. Alo הגיב:

    מה זאת אומרת…
    איך הכנסתי את הנתונים? איזה נתונים?
    פשוט כתבתי בדף בעברית וזה הראה ג’יבריש…

  31. jonatan44 הגיב:

    סליחה
    טעות שלי,חשבתי שמדובר בבעית מסד נתונים.
    בקשר לבעייה שלך אני יכול להגיד:
    1) בדוק את תגי המטה שלך.
    2) נסה את זה:  default_charset = "windows-1255"
    או אם אתה משתמש ביוניקוד 8 ביט נסה את זה  default_charset = "UTF-8"
    בהצלחה לך.

  32. Alo הגיב:

    —–>>
    1) איפה אני כותב את default_charset

    2) זה לא בשרת שלי, אלא בשרת איחסון…

  33. Alo הגיב:

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

שלח תשובה