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

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

Homie 18-05-06 11:13

[PHP] ממוצע, איך?
 
קיבלתי אתמול מהמורה שלי לתכנות את הכבוד לתכנת מערכת PHP של הציונים של הבית ספר - וכן, יש סיכוי שהיא תיהיה המערכת של הבית ספר שלי [אני ישאיר כמה חורי הבטחה בשבילי, ;) סתם!].

קיצר, יצרתי את המערכת לאחר חודשיים, המערכת דיי פשוטה. מה כבר אפשר לעשות?;)

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

אז המטרה היא שיוכלו להכניס לתיבת input של text מספר ID של ילד, ואז את המחציות שבהן אני רוצה לדעת את הממוצע ואז אני יוכל לראות את ממוצע של הציון של הילדיפ, לא הספיק לבית הספר, הם גם ביקשו ממני לעשות שחוץ ממוצע של כל ילד, תיהיה אפשרות לצפות בממוצע של כל הציונים של כל הילדים, וגם אחרי זה שיהיה ניתן לבחור מחציות.

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

תודה רבה ויום נעים.

eLad 18-05-06 11:27

המממ

טבלה פשוטה של התלמידים
קוד:

tblStudents
nId | sName | nClass

טבלה של הציונים:
קוד:

tblExams
nId | nStudentId | sExamName | nExamSubject | nClass | nPeriod | nGrade

כאשר Period זה הסמסטר (1 - מחצית א', 2 - מחצית ב' או אפשר לעבוד שליש / רבע וכו')

תעשה JOIN בין הטבלאות ותוכל לשלוף כל נושא (nExamSubject) והציונים שלו. תכניס למערך JS צד לקוח את הציון בכל נושא ואז תעשה את המומצע של המערך (סכום האיברים חלק מס' האיברים + 1). כמובן שאפשר לשכלל את זה ולכל מבחן לתת משקל שונה (באחוזים) ואז אתה לוקח את הציון, מכפיל אותו באחוז ומוסיף לממוצע.

בסופו של דבר התוצאה תראה משהו כזה:

מבחנים בתנ"ך -
מבחן פרק א' - 100
מבחן פרק ב' - 80
מבחן פרק ז' - 90
ממוצע - 90

Elad-A 18-05-06 11:30

נראה לי הוא מדבר על PHP אחי...

eLad 18-05-06 11:38

ציטוט:

נכתב במקור על ידי Elad-A
נראה לי הוא מדבר על PHP אחי...

נו, אז? מה זה משנה? זה אותו עיקרון לכולם |Rolleyes|

MasterNir 18-05-06 12:28

תעשה ממוצע מתמטי, כמו בכל מקום אחר שהיית עושה ממוצע.
תרוץ על כל הציונים של התלמיד עם שני משתי עזר, אחד מונה (+1 על כל ריצה של הלולאה) ואחד סכום כל הציונים, אח"כ תחלק את סכום הציונים במספר במונה וקיבלת את התשובה.

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

sUP 18-05-06 12:50

יש שאילתת SQL שעושה את זה..

PHP קוד:

$avrg mysql_query("select avg(שם עמודה) as avr from טבלה"); 
$avrg mysql_fetch_array($avrg);
echo 
$avgr[avr]; 

תקנו אותי אם אני טועה.. זה פשוט לפי הזיכרון חח

eLad 18-05-06 12:51

ציטוט:

נכתב במקור על ידי sUP
יש שאילתת SQL שעושה את זה..

PHP קוד:

$avrg mysql_query("select avg(שם עמודה) as avr from טבלה"); 
$avrg mysql_fetch_array($avrg);
echo 
$avgr[avr]; 

תקנו אותי אם אני טועה.. זה פשוט לפי הזיכרון חח

אם כבר אז זה התחביר
קוד:

SELECT AVG(fld) FROM tbl

MasterNir 18-05-06 12:56

אלעד, הוא פשוט הוסיף alias, זה אפשרי...

ועדיף לעשות פעולות כאלה ב-PHP, הוא בדרך כלל מבצע אותם יוצר מהר (בגלל המשאבים שמוקצים לשרת HTTP לעומת המשאבים שמוקצים לשרת בסיס הנתונים והניצול של השרתים במשאבים)

eLad 18-05-06 13:13

ציטוט:

נכתב במקור על ידי MasterNir
ועדיף לעשות פעולות כאלה ב-PHP, הוא בדרך כלל מבצע אותם יוצר מהר (בגלל המשאבים שמוקצים לשרת HTTP לעומת המשאבים שמוקצים לשרת בסיס הנתונים והניצול של השרתים במשאבים)

לא בגלל הנימוק הזה :)

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

MasterNir 18-05-06 13:21

הסיבה שלך מעשית, שלי לוגית... אבל שתיהן נכונות... (:


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

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