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

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

SniR-S 03-01-10 16:33

שאלה, PHP שליפה מוזרה \:
 
אני שולף נתונים ע"י תאריך ושעה בסדר יורד (DESC)
מה שמתאחסן בתאריך ושעה, זה:
PHP קוד:

    $datetime date('d.m.Y H:i:s'); 

זאת אומרת, שעות, דקות, שניות, ואז ימים, חודשים ושנים.
בקיצור ולעניין, עד שנת 2010 הכל היה בסדר :)
הנתונים היו מוצגים בסדר הנכון (סדר יורד) לפי התאריך והשעה .
אבל מאז שנת 2010, כל הנתונים החדשים שהוזנו, הפכו להיות אחרונים ובסוף.
הם מוצגים גם בסדר, אבל הבעיה היחידה היא, שבגלל השנה, הם עברו להיות בסוף (לאחר הנתונים של 2009)

מה הרעיונות וההצעות שלכם כדי שאני אוכל לסדר את זה ?

הערות:
זו השליפה:
PHP קוד:

    $query "SELECT * FROM newsmusic ORDER BY datetime DESC"


Sagi 03-01-10 17:12

אתה צריך לשלוף בעזרת time
ולא בעזרת DATE

SniR-S 03-01-10 17:28

מה זאת אומרת ?

Erez | TrustMedia.co.il 03-01-10 19:48

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

intercooler3819 03-01-10 19:56

בוא קבל...

כיוון שאתה מכניס בסדר כרונולוגי ואני מניח שעמודת ה ID היא ה PRIMARY_KEY שגדל כל הזמן באחד

לכן כדי לסדר לפי תאריך אתה יכול לסדר לפי ID באופן הבא
PHP קוד:

    $query "SELECT * FROM newsmusic ORDER BY id DESC"

בהצלחה!

SniR-S 04-01-10 14:46

כן לפי id אני יודע שזה יעבוד טוב ..
טוף, בנתיים נפלוט נתונים לפי ID,
שאלה, במידה ואני עובד עם הפונקציה time(), איך אני יכול להמיר את זה לפורמט שאני רוצה ? \:

גורילה 04-01-10 18:53

פשוט מאוד , בצורה הבאה:
ציטוט:

date ("d/m/Y", time());

SniR-S 05-01-10 20:32

אוקי, נניח שאני עובד בשיטת time
לדוגמא:
מה שאני מכניס למסד יהיה
PHP קוד:

$datetime time(); 

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

$datetime $row['datetime'];
$datetime date('d.m.Y H:i:s'$datetime); 

ופשוט זה מציג לי את הזמן בו פורסם העדכון.


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

Hanan 08-01-10 03:55

שניר, תגדיר את השדה datetime בדאטה בייס כ: DATETIME והערך שתכניס לו הוא: YYYY-MM-DD HH:MM:SS
ואז בשליפה מהמסד נתונים תמשתמש כרגיל ב:
HTML קוד:

ORDER BY datetime DESC
וכדי להציג את ה VALUE של השדה בפורמט שאתה רוצה:
PHP קוד:

date("d/m/Y"strtotime($row['datetime'])); 

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

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

בהצלחה! :)

Erez | TrustMedia.co.il 09-01-10 20:37

ציטוט:

נכתב במקור על ידי Snir Shamka (פרסם 751992)
אוקי, נניח שאני עובד בשיטת time
לדוגמא:
מה שאני מכניס למסד יהיה
PHP קוד:

$datetime time(); 

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

$datetime $row['datetime'];
$datetime date('d.m.Y H:i:s'$datetime); 

ופשוט זה מציג לי את הזמן בו פורסם העדכון.


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

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


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

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