|
הרשם | ![]() |
שאלות ותשובות | ![]() |
רשימת חברים | ![]() |
לוח שנה | ![]() |
הודעות מהיום | ![]() |
חיפוש | ![]() |
|
![]() |
![]() |
|
כלים לאשכול | תצורת הצגה |
![]() |
# 1 |
חבר מתקדם
|
PHPאיך לוקחים יום אחורה מתאריך מסויים?
הי
דיסקסתי כבר פה על משהו דומה. אני גרוע בכל העסק הזה של התאריכים ![]() בכל אופן, כיצד ניתן לדעת מהו יום אחד לפני התאריך x? יש לציין כי התאריך הנוכחי יהיה: קוד:
$now = GET["date"]; רב תודות ושבוע טוב Last edited by trupix; 05-11-11 at 18:15.. |
![]() |
![]() |
# 2 |
חבר מתקדם
|
PHP קוד:
Last edited by Tal.; 05-11-11 at 19:39.. |
![]() |
![]() |
# 3 | |
חבר מתקדם
|
הי,
הקוד לא עובד אין שגיאה, אבל הקוד לא מזהה שהתאריך הנוכחי הוא זה שהזנתי ציטוט:
עריכה: אוקי הבנתי למה. צריך להזין 2011 במקום 11. אבל זה לא כל כך טוב לי משום שבאתר אני משתמש בתאריך המקוצר (j.n.y) זה לא עובד: PHP קוד:
מה אפשר לעשות? Last edited by trupix; 05-11-11 at 23:50.. |
|
![]() |
![]() |
# 4 |
עסק רשום [?]
|
זה הפורמט שהפונקציה מצפה לקבל, זאת הסיבה שהיא מצליחה לפענח אותו ולא את מה שהכנסת בהתחלה.
הפתרון הפשוט והיעיל ביותר הוא לעבוד עם timestamps, ברגע שאתה עובד עם timestamp אתה יכול להמיר אותו להציג אותו בכל צורה שתרצה - כאן עם שנה ב- 2 ספרות, שם עם שנה ב- 4 ספרות ובמקום אחר אפילו בלי שנה בכלל, ממש איך שמתאים לך ואיפה שמתאים לך. |
![]() |
![]() |
# 5 |
חבר מתקדם
|
אתה מתכוון עם פונקציית הtimestamp בMYSQL?
|
![]() |
![]() |
# 6 |
עסק רשום [?]
|
אם התאריך נשמר במסד, אז כן.
אתה יכול ליצור שדה מסוג TIMESTAMP, להגדיר לו ערך ברירת מחדל כ- CURRENT_TIMESTAMP, וברגע הזנת הנתונים לא להכניס לו כלום והוא ימלא את השדה הזה לבד. עכשיו כל פעם שאתה רוצה להציג את התאריך, אתה יכול לשלוף אותו לבצע את ההמרה ב- PHP, או לשלוף אותו ישר בפורמט שאתה רוצה באמצעות הפונקציה DATE_FORMAT ב- MySQL. |
![]() |
![]() |
# 7 |
חבר מתקדם
|
אוקי תודה..
|
![]() |
![]() |
# 8 |
חבר מתקדם
|
בטח שהוא לא קיבל שנה בשני ספרות. זה מחשב, אולי לך זה נראה ברור שכשאתה רושם 11 אתה מתכוון ל2011 אבל בשביל המחשב יכול כל שנה (שנגמרת ב11).
בתור פלט זה לא בעיה שני ספרות - הוא פשוט מוריד את 2 הספרות הראשונות, בתור קלט זה בלתי אפשרי. אין באמת פונקציה שתמיר לך את זה, כמו שאמרתי מחשב לא יכול לדעת לאיזה שנה התכוונת. אתה יכול "להמיר" את זה לבד, פשוט אם השנה קטנה מ50 תוסיף '20' לשנה אם גדולה תוסיף 19. נכון זה פתרון לא מקצועי אבל כבר לשלוח שנה בשני ספרות זה לא מקצועי. מקסימום יהיה לך באג 3000, בקטנה. ![]() תדע לעבוד תמיד עם שנה ב4 ספרות. Last edited by Tal.; 06-11-11 at 01:48.. |
![]() |
![]() |
# 9 | |
חבר מתקדם
|
חח אני מניח שאתה צודק חבריקו
![]() ציטוט:
|
|
![]() |
![]() |
# 10 |
עסק רשום [?]
|
Youtube4Down.com:
"המחשב" כפי שאתה מתאר יכול ויודע לקבל שנה ב- 2 ספרות בלי שום בעיה - כל עוד זה מתוכנן להיות כך. הוא לא מוריד 2 ספרות מההתחלה - הוא יודע לעבוד ככה וזהו. זה שזה לא עובד במקרה הזה, זה כי אתה בתור בן אדם יש לך היגיון ואתה יודע לבצע את ההמרה הזאת בראש - PHP לצורך העניין לא יודעת, היא עובדת על פי תבנית מוגדרת, כרגע הפונקציה מוגדרת לקבל נתון בתבנית מסויימת, אם תכניס אותו בתבנית אחרת כנראה שהיא פשוט לא תדע לעבוד איתו. הפתרון המקובל והפתרון האידיאלי היא הפתרון שציינתי, כשיש לך חותמת זמן (timestamp), אין פה שום מקום לטעויות - אתה יכול להציג אותה איך שבא לך בלי שום חישובים והמרות מיותרות כמו זו שציינת. Last edited by אדיר; 06-11-11 at 02:59.. |
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|