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

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

dor77 06-01-12 20:12

מיון לפי מספר?
 
שלום.
נגיד יש לי ככה:

abc 1.3.4.5
abc 1.00
abc 1.2.00
abc 4.0
abc 5.6.7.0
abc.1.2.1
abc 0.1.3

ואני רוצה שזה יופיע מהמספר הכי גבוה כלומר abc 5.6.7.0 יהיה ראשון ואז בסדר יורד עד abc 0.1.3.

איזו פונקציה ב php עושה זאת?

תודה!

אדיר 06-01-12 20:22

לא ממש מובן על מה בדיוק מדובר כאן, בכל אופן אני מניח שהעמוד הזה יכול לעזור לך -
http://php.net/manual/en/array.sorting.php

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

dor77 06-01-12 20:26

תראה, אני שולף ממסד את הנתונים הבאים:


abc 1.3.4.5
abc 1.00
abc 1.2.00
abc 4.0
abc 5.6.7.0
abc.1.2.1
abc 0.1.3


כמו שאתה שם לב, כולם אותה שם אבל המספרים שונים.
אני רוצה להציג את זה מהמספר הגבוה לנמוך.
איך אני יכול לעשות את זה? אחרי השליפה? בעת השליפה?

לא מצאתי משהו בדף ההוא..
אשמח לעזרה, תודה.

link 06-01-12 21:39

ציטוט:

נכתב במקור על ידי dor77 (פרסם 831166)
תראה, אני שולף ממסד את הנתונים הבאים:


abc 1.3.4.5
abc 1.00
abc 1.2.00
abc 4.0
abc 5.6.7.0
abc.1.2.1
abc 0.1.3


כמו שאתה שם לב, כולם אותה שם אבל המספרים שונים.
אני רוצה להציג את זה מהמספר הגבוה לנמוך.
איך אני יכול לעשות את זה? אחרי השליפה? בעת השליפה?

לא מצאתי משהו בדף ההוא..
אשמח לעזרה, תודה.

השאלה היא כזאת: כל המספרים שלך באים אחרי רווח, ABC 123, או שזה לא כמו הדבר הזה: abc.1.2.1

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

dor77 07-01-12 01:01

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

אדיר 07-01-12 01:09

כפתרון יעיל ופשוט תנסה לממש את זה עם ORDER BY x DESC כאשר x הוא שם השדה שבו נשמר הנתון הזה.

link 07-01-12 02:14

ציטוט:

נכתב במקור על ידי xPerfection (פרסם 831185)
כפתרון יעיל ופשוט תנסה לממש את זה עם ORDER BY x DESC כאשר x הוא שם השדה שבו נשמר הנתון הזה.

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

foreach ($files as $file) {
  
$version last(explode(" "$file));
  
$new_files[$version] = $file;
}
sort($new_files);
print_r($new_files); 

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

בהצלחה.

dor77 07-01-12 11:10

אוקיי, רק איך אני מכניס את הנתונים למערך הזה?
לא כל כך הבנתי..תודה!!

אדיר 07-01-12 12:23

לא חובה שמס' הגרסה יהיה בשדה משלו כל עוד ה- prefix בכולם זהה.

ז"א שאם בכולם יש משהו בסגנון הזה:
WinRar 1
WinRar 2
WinRar 3
WinRar 4
וכו'..
זה יעבוד בסדר גמור.

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

link 07-01-12 14:21

ציטוט:

נכתב במקור על ידי dor77 (פרסם 831196)
אוקיי, רק איך אני מכניס את הנתונים למערך הזה?
לא כל כך הבנתי..תודה!!

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

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

dor77 07-01-12 15:51

בסוף פעלתי על פי ההגיון..
הוצאתי לפי id..הרי הגרסא החדשה תיהיה האחרונה שהכנסתי...הישנה היא הראשונה שהכנסתי..

הסתדרתי :)

link 07-01-12 17:44

ציטוט:

נכתב במקור על ידי dor77 (פרסם 831228)
בסוף פעלתי על פי ההגיון..
הוצאתי לפי id..הרי הגרסא החדשה תיהיה האחרונה שהכנסתי...הישנה היא הראשונה שהכנסתי..

הסתדרתי :)

היית אומר מלכתכילה שאתה משתמש במסד נתונים. טיפ לעתיד: בכל טבלה שאתה יוצר תשים עמודה של created שבה יש את הtimestamp שביצעת את הפעולה. ככה תוכל לסדר את הרשומות שלך יותר טוב.

dor77 07-01-12 18:13

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

link 07-01-12 18:40

ציטוט:

נכתב במקור על ידי dor77 (פרסם 831248)
רעיון טוב..איך אכניס את השעה המדוייקת?
מה יכנס? זמן שרת?
אשמח להכוונה, רעיון טוב!

פונקציית time מחזירה לך את הזמן בשניות שעבר מאז ה01/01/1970 ידוע בתור unix time stamp. וזה הולך ככה:
PHP קוד:

$query query("INSERT INTO table SET value='value1', created="time()); 


AlmogBaku 10-01-12 09:53

אני לא מבין מה סיבכתם?
במידה ואתה רוצה לעשות סורטינג לפי השם.. תשלח את זה בשאילה!
SORT BY `name` ASC

link 10-01-12 14:28

ציטוט:

נכתב במקור על ידי Baku (פרסם 831660)
אני לא מבין מה סיבכתם?
במידה ואתה רוצה לעשות סורטינג לפי השם.. תשלח את זה בשאילה!
SORT BY `name` ASC

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

אדיר 12-01-12 08:13

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

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


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

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