הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שאלה בנושא מציאת יום הולדת.. (https://hosts.co.il/forums/showthread.php?t=55776)

Interactive 29-10-07 14:46

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

:-)

daMn 29-10-07 14:48

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

Interactive 29-10-07 14:50

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

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

daMn 29-10-07 15:06

תשחק עם explode או עם split
אתה חייב לעבור על כולם... או שתעבור קודם חודש חודש ואז תיכנס לימים...

תעזר בפונקציה הבאה
קוד:

<?php
// Delimiters may be slash, dot, or hyphen
$date = "04/30/1973";
list($month, $day, $year) = split('[/.-]', $date);
echo "Month: $month; Day: $day; Year: $year<br />\n";
?>


Interactive 29-10-07 15:14

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

אני עדיין מחפש רעיון דרך המסד בלי לשמור בנפרד.

Meir 29-10-07 16:36

תנסה:

קוד:

$date = date('d.m');
SELECT * FROM `members` WHERE STR_TO_DATE(`birthday`, '&#37;d.%m')='$date'

לא בטוח שזה יצליח.

Interactive 29-10-07 16:44

ציטוט:

נכתב במקור על ידי Meir (פרסם 572724)
טעות.

אתה יכול להרחיב??
טעות של מי?..מה טעות?

Derey22 30-10-07 06:52

ציטוט:

נכתב במקור על ידי Meir (פרסם 572724)
תנסה:

קוד:

$date = date('d.m');
SELECT * FROM `members` WHERE STR_TO_DATE(`birthday`, '%d.%m')='$date'

לא בטוח שזה יצליח.

זה לא, אתה לא צריך אופטור השוואה,צריך LIKE.אבל יכול להיות שהיה באג.אני מציע לך לעשות split.
ואז תנאי קטן.

talbeno 30-10-07 09:42

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

SELECT FROM `membersWHERE day '$day' && month '$month' 


Meir 30-10-07 12:11

ציטוט:

נכתב במקור על ידי Derey22 (פרסם 572951)
זה לא, אתה לא צריך אופטור השוואה,צריך LIKE.אבל יכול להיות שהיה באג.אני מציע לך לעשות split.
ואז תנאי קטן.

הקוד שנתתי עובד רק צריך לתקן אותו טיפה:

PHP קוד:

$date '0000-'.date('d-m'); 

אם משתמשים בLIKE אין צורך להשתמש בSPLIT:

קוד:

$date = date('j.n');
SELECT * FROM `members` WHERE `birthday` LIKE '$date%'


Derey22 30-10-07 14:21

ציטוט:

נכתב במקור על ידי Meir (פרסם 573015)
הקוד שנתתי עובד רק צריך לתקן אותו טיפה:

PHP קוד:

$date '0000-'.date('d-m'); 

אם משתמשים בLIKE אין צורך להשתמש בSPLIT:

קוד:

$date = date('j.n');
SELECT * FROM `members` WHERE `birthday` LIKE '$date%'


נגיד השנה עכשיו היא:1200 והיום הולדת שלי היא ב11.12
אז יהיה לי יום הולדת גם בתאריך הרגיל שלי וגם ב X/11/1200

Interactive 30-10-07 14:44

עם LIKE זה עובד...אבל בדרך ש- Meir נתן זה לא עובד.
גם לא מצאתי את הפונקציה STR_TO_DATE. יש strtotime.

Meir 30-10-07 14:59

ציטוט:

נכתב במקור על ידי Derey22 (פרסם 573063)
נגיד השנה עכשיו היא:1200 והיום הולדת שלי היא ב11.12
אז יהיה לי יום הולדת גם בתאריך הרגיל שלי וגם ב X/11/1200

במקום להתווכח איתי תראה לי הוכחות לדברים שאתה אומר.

ציטוט:

נכתב במקור על ידי Interactive (פרסם 573077)
עם LIKE זה עובד...אבל בדרך ש- Meir נתן זה לא עובד.
גם לא מצאתי את הפונקציה STR_TO_DATE. יש strtotime.

זאת פונקציה מובנת של הMYSQL והיא לא קשורה לPHP: http://dev.mysql.com/doc/refman/5.0/...on_str-to-date

Derey22 30-10-07 16:15

ציטוט:

נכתב במקור על ידי Meir (פרסם 573082)
במקום להתווכח איתי תראה לי הוכחות לדברים שאתה אומר.



זאת פונקציה מובנת של הMYSQL והיא לא קשורה לPHP: http://dev.mysql.com/doc/refman/5.0/...on_str-to-date

הדוגמה שהבאתי פה מספיקה,בגלל זה אל תעשה LIKE,תעשה split

Interactive 30-10-07 16:19

הצלחתי :)
תודה רבה לשניכם.
אפשר לנעול


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

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