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

הוסטס - פורום אחסון האתרים הגדול בישראל (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%'



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

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