הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 05-11-11, 18:08   # 1
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

PHPאיך לוקחים יום אחורה מתאריך מסויים?

הי

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

בכל אופן, כיצד ניתן לדעת מהו יום אחד לפני התאריך x?
יש לציין כי התאריך הנוכחי יהיה:
קוד:
$now = GET["date"];
לדוגמא, אם now=1.1.11, אני רוצה שתיהיה תוצאה של יום אחד לפני

רב תודות ושבוע טוב

Last edited by trupix; 05-11-11 at 18:15..
  Reply With Quote
ישן 05-11-11, 19:28   # 2
Tal.
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Dec 2010
הודעות: 463

Tal. לא מחובר  

PHP קוד:
$Nnow=strtotime($now);

$yesterday=date('d-m-Y',strtotime('-1 day',$Nnow)); 

Last edited by Tal.; 05-11-11 at 19:39..
  Reply With Quote
ישן 05-11-11, 23:44   # 3
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

הי,

הקוד לא עובד

אין שגיאה, אבל הקוד לא מזהה שהתאריך הנוכחי הוא זה שהזנתי

ציטוט:
נכתב במקור על ידי Youtube4Down.com צפה בהודעה
PHP קוד:
$Nnow=strtotime($now);

$yesterday=date('d-m-Y',strtotime('-1 day',$Nnow)); 

עריכה:
אוקי הבנתי למה. צריך להזין 2011 במקום 11. אבל זה לא כל כך טוב לי משום שבאתר אני משתמש בתאריך המקוצר (j.n.y)

זה לא עובד:
PHP קוד:
$now=strtotime("1.11.11");
$yesterday=date('j.n.y',strtotime('-1 day',$now));  

echo 
$yesterday
//הפלט - 4.11.11 
אולם כשאני מציב 2011 במקום 11, זה כן עובד
מה אפשר לעשות?

Last edited by trupix; 05-11-11 at 23:50..
  Reply With Quote
ישן 06-11-11, 01:01   # 4
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

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

הפתרון הפשוט והיעיל ביותר הוא לעבוד עם timestamps,
ברגע שאתה עובד עם timestamp אתה יכול להמיר אותו להציג אותו בכל צורה שתרצה -
כאן עם שנה ב- 2 ספרות, שם עם שנה ב- 4 ספרות ובמקום אחר אפילו בלי שנה בכלל, ממש איך שמתאים לך ואיפה שמתאים לך.
  Reply With Quote
ישן 06-11-11, 01:02   # 5
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

אתה מתכוון עם פונקציית הtimestamp בMYSQL?
  Reply With Quote
ישן 06-11-11, 01:07   # 6
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

אם התאריך נשמר במסד, אז כן.
אתה יכול ליצור שדה מסוג TIMESTAMP, להגדיר לו ערך ברירת מחדל כ- CURRENT_TIMESTAMP, וברגע הזנת הנתונים לא להכניס לו כלום והוא ימלא את השדה הזה לבד.
עכשיו כל פעם שאתה רוצה להציג את התאריך, אתה יכול לשלוף אותו לבצע את ההמרה ב- PHP, או לשלוף אותו ישר בפורמט שאתה רוצה באמצעות הפונקציה DATE_FORMAT ב- MySQL.
  Reply With Quote
ישן 06-11-11, 01:09   # 7
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

אוקי תודה..
  Reply With Quote
ישן 06-11-11, 01:34   # 8
Tal.
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Dec 2010
הודעות: 463

Tal. לא מחובר  

בטח שהוא לא קיבל שנה בשני ספרות. זה מחשב, אולי לך זה נראה ברור שכשאתה רושם 11 אתה מתכוון ל2011 אבל בשביל המחשב יכול כל שנה (שנגמרת ב11).
בתור פלט זה לא בעיה שני ספרות - הוא פשוט מוריד את 2 הספרות הראשונות, בתור קלט זה בלתי אפשרי.

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

אתה יכול "להמיר" את זה לבד, פשוט אם השנה קטנה מ50 תוסיף '20' לשנה אם גדולה תוסיף 19.
נכון זה פתרון לא מקצועי אבל כבר לשלוח שנה בשני ספרות זה לא מקצועי. מקסימום יהיה לך באג 3000, בקטנה.

תדע לעבוד תמיד עם שנה ב4 ספרות.

Last edited by Tal.; 06-11-11 at 01:48..
  Reply With Quote
ישן 06-11-11, 02:01   # 9
trupix
חבר מתקדם
 
trupix's Avatar
 
מיני פרופיל
תאריך הצטרפות: Sep 2009
גיל: 34
הודעות: 391

trupix לא מחובר  

חח אני מניח שאתה צודק חבריקו



ציטוט:
נכתב במקור על ידי Youtube4Down.com צפה בהודעה
בטח שהוא לא קיבל שנה בשני ספרות. זה מחשב, אולי לך זה נראה ברור שכשאתה רושם 11 אתה מתכוון ל2011 אבל בשביל המחשב יכול כל שנה (שנגמרת ב11).
בתור פלט זה לא בעיה שני ספרות - הוא פשוט מוריד את 2 הספרות הראשונות, בתור קלט זה בלתי אפשרי.

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

אתה יכול "להמיר" את זה לבד, פשוט אם השנה קטנה מ50 תוסיף '20' לשנה אם גדולה תוסיף 19.
נכון זה פתרון לא מקצועי אבל כבר לשלוח שנה בשני ספרות זה לא מקצועי. מקסימום יהיה לך באג 3000, בקטנה.

תדע לעבוד תמיד עם שנה ב4 ספרות.
  Reply With Quote
ישן 06-11-11, 02:34   # 10
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

Youtube4Down.com:
"המחשב" כפי שאתה מתאר יכול ויודע לקבל שנה ב- 2 ספרות בלי שום בעיה - כל עוד זה מתוכנן להיות כך.
הוא לא מוריד 2 ספרות מההתחלה - הוא יודע לעבוד ככה וזהו.

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

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

Last edited by אדיר; 06-11-11 at 02:59..
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 03:59.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ