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

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

Interactive 21-07-06 01:25

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

הדירוג בנוי ככה שכל פעם שמישהו מדרג את אותו הבנאדם נכנס למסד מספר הדירוג (1-5) הip של המדרג ואיזה משפט הוא דרג...וכדי להגיע אל הדירוג אני מחשב ככה: ממוצע הדירוגים חלקי מספר המדרגים. וזאת טבלה אחת.

טבלה שניה היא עם כל הפרטים של המשפט (שם, אימיל המשפט וכו')


עכשיו איך אני בעצם בודק מהם 2 המשפטים הכי מדורגים?

RS324 21-07-06 06:40

ב SQL יש לך את הפונקציה AVG שעושה ממוצע אוטומטי
לדוגמא

PHP קוד:

SELECT AVG(rating) AS rate FROM lines ASC LINIT 2 


Interactive 21-07-06 12:19

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

RS324 21-07-06 13:30

אמור לעבוד :
אם מחזיר שגיאה תראה מה עשית

PHP קוד:

SELECT AVG(rating) AS rate,totalvoters
 FROM lines 
 ORDER BY rate
,totalvoters
 ASC LINIT 2 


mlnn 21-07-06 14:29

תעשה כמו שאני עושה :)
יש לך נגיד 5 משפטים, מישהו הצביע למשפט 3, אז אתה מוסיף למשפט3 אחד, ואתה גם מוסיף אחד לסך הכל דירוגים.
ואז נגיד הצביעו:
1-2
2-3
3-0
4-5
5-0
אז יוצא לך סך הכל דירוגים: 2+3+0+5+0=10
ואז אתה מחלק...
1=20%
2=30%
3=0%
4=50%
5=0%
ובהתחלה אל תהפוך לאחוזים ותבדוק מי הכי גדול...........

Interactive 21-07-06 19:04

ציטוט:

נכתב במקור על ידי mlnn
תעשה כמו שאני עושה :)
יש לך נגיד 5 משפטים, מישהו הצביע למשפט 3, אז אתה מוסיף למשפט3 אחד, ואתה גם מוסיף אחד לסך הכל דירוגים.
ואז נגיד הצביעו:
1-2
2-3
3-0
4-5
5-0
אז יוצא לך סך הכל דירוגים: 2+3+0+5+0=10
ואז אתה מחלק...
1=20%
2=30%
3=0%
4=50%
5=0%
ובהתחלה אל תהפוך לאחוזים ותבדוק מי הכי גדול...........

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

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

RS324 21-07-06 19:10

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

תראה לי מה יש בטבלאות כלומר מבחינת שמות והכל
ואני אסדר לך את זה

Interactive 21-07-06 19:37

אוקי אז ככה
טבלת הדירוג (rank):
vote - int - הדירוג (1-5)
who- int - מספר המשפט שדירגו
ip- varchar(15) - הip של הבנאדם שדירג
id-int
תמונה: http://know.co.il/rank.gif

טבלת המשפטים (know):
checked- text- בודק האם אישרו את המשפט
name- text - שם הכותב
text- text- המשפט עצמו
email- text- האימיל של השולח
type- text - הקטגוריה של המשפט
ip- varchar(15) - הip של השולח
id -int

ותודה רבה לך :)

Tomer 21-07-06 20:58

ציטוט:

נכתב במקור על ידי Interactive
אוקי אז ככה
טבלת הדירוג (rank):
vote - int - הדירוג (1-5)
who- int - מספר המשפט שדירגו
ip- varchar(15) - הip של הבנאדם שדירג
id-int
תמונה: http://know.co.il/rank.gif

טבלת המשפטים (know):
checked- text- בודק האם אישרו את המשפט
name- text - שם הכותב
text- text- המשפט עצמו
email- text- האימיל של השולח
type- text - הקטגוריה של המשפט
ip- varchar(15) - הip של השולח
id -int

ותודה רבה לך :)

אחרי שאתה מחשב הכל, תמצא את הדירוג הכי גבוה ותוציא את ה who שלו, לאחר מכן אתה עושה SELECT לטבלה know כשיש WHERE id='$who' ואתה מקבל את המשפט..
מקווה שזה מה שחיפשת.

Alter 21-07-06 21:34

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


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

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