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

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 06-11-08, 20:20   # 1
Tomer Pearl
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 170

Tomer Pearl לא מחובר  

שאלה לגבי בנייה נכונה של סקריפט דירוגים PHP

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

את שתי הדרכים אני מבין ומסוגל לבצע בקלות, השאלה היא איזה דרך היא יותר נכונה מבחינת חיסכון במשאבים, והאם יש הבדל משמעותי בינהן.
תומר (:
  Reply With Quote
ישן 06-11-08, 20:35   # 2
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

this is 2 different solutions to the same problem

in the first case, you aimed to creating another table
i would use that if i wanted to know who voted what and for what item

the second options is having a 'rate' field in the items and 'raters' field
then when someone adds their rate, you are increasing raters by one and raise 'rate' by his numeric value of his vote
then when you want to know the average vote you just divide the votes by the voters
this is useless when you want to know who voted what

personally, i would use the first one
just make some index's and use the right datatypes for each of the columns

good luck mate
__________________
  Reply With Quote
ישן 06-11-08, 20:45   # 3
Tomer Pearl
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 170

Tomer Pearl לא מחובר  

ציטוט:
נכתב במקור על ידי nitsanbn צפה בהודעה
this is 2 different solutions to the same problem

in the first case, you aimed to creating another table
i would use that if i wanted to know who voted what and for what item

the second options is having a 'rate' field in the items and 'raters' field
then when someone adds their rate, you are increasing raters by one and raise 'rate' by his numeric value of his vote
then when you want to know the average vote you just divide the votes by the voters
this is useless when you want to know who voted what

personally, i would use the first one
just make some index's and use the right datatypes for each of the columns

good luck mate
תודה על התגובה...
לא הבנתי את המשפט האחרון
ציטוט:
just make some index's and use the right datatypes for each of the columns
מזאת אומרת להכין אינדקסים? ולהשתמש בסוגי נתונים, הכוונה היא לסוג השדה שמכיל את הנתנוים?
  Reply With Quote
ישן 07-11-08, 09:41   # 4
FuZuL
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2006
הודעות: 354

FuZuL לא מחובר  

תשמע תחפש פה בפורום גם לי הייתה את הבעיה ונתנו אחלה פתרון..
__________________
PHP קוד:
1337 (_)83||-|4><><0|
  Reply With Quote
ישן 07-11-08, 16:59   # 5
O-B
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: בבית
גיל: 36
הודעות: 1,423
שלח הודעה באמצעות ICO אל O-B

O-B לא מחובר  

הדרך הראשונה היא היותר נכונה לדעתי..
אבל במקום לחשב את סכום הדירוגים וחלק ב מספר המצביעים פשוט תשתמש ב AVG בשליפה מהמסד והוא יחסוך את החישוב..
ואין צורך לעדכן את טבלת הסיקורים פשוט למשוך את ה AVG מהמסד יחד עם שאר הנתנוים ע"י JOIN
__________________
בברכה עובד, מפתח אתרים.
  Reply With Quote
ישן 07-11-08, 18:10   # 6
vadimg88
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
גיל: 37
הודעות: 710

vadimg88 לא מחובר  

אם אתה מגדיר עמודה מסויימת בתור INDEX האופטימיזציה שלה טוב יותר ואם צריך לבצע שאילתות הם יבוצעו מהר יותר. במילים אחרות זה מומלץ לטבלאות/עמודות עם הרבה תוכן שצריך אחר כך לבצע שאילתות אליהם.
  Reply With Quote
ישן 09-11-08, 07:40   # 7
HOLD
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Oct 2008
הודעות: 623

HOLD לא מחובר  

ציטוט:
נכתב במקור על ידי O-B צפה בהודעה
הדרך הראשונה היא היותר נכונה לדעתי..
אבל במקום לחשב את סכום הדירוגים וחלק ב מספר המצביעים פשוט תשתמש ב AVG בשליפה מהמסד והוא יחסוך את החישוב..
ואין צורך לעדכן את טבלת הסיקורים פשוט למשוך את ה AVG מהמסד יחד עם שאר הנתנוים ע"י JOIN
איך עושים את זה ?
  Reply With Quote
ישן 09-11-08, 10:57   # 8
Tomer Pearl
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Feb 2008
הודעות: 170

Tomer Pearl לא מחובר  

ציטוט:
נכתב במקור על ידי O-B צפה בהודעה
הדרך הראשונה היא היותר נכונה לדעתי..
אבל במקום לחשב את סכום הדירוגים וחלק ב מספר המצביעים פשוט תשתמש ב AVG בשליפה מהמסד והוא יחסוך את החישוב..
ואין צורך לעדכן את טבלת הסיקורים פשוט למשוך את ה AVG מהמסד יחד עם שאר הנתנוים ע"י JOIN
איך עושים את זה?

ציטוט:
נכתב במקור על ידי vadimg88 צפה בהודעה
אם אתה מגדיר עמודה מסויימת בתור INDEX האופטימיזציה שלה טוב יותר ואם צריך לבצע שאילתות הם יבוצעו מהר יותר. במילים אחרות זה מומלץ לטבלאות/עמודות עם הרבה תוכן שצריך אחר כך לבצע שאילתות אליהם.
העמודה של הID, אותה אני תמיד מגדיר כINDEX... זה מה שהתכוונת אליו?
  Reply With Quote
ישן 09-11-08, 12:56   # 9
O-B
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: בבית
גיל: 36
הודעות: 1,423
שלח הודעה באמצעות ICO אל O-B

O-B לא מחובר  

עושים את זה ע"י בניית שאילתה נכונה.
[php] select *,AVG(`rates`.`rate`) as `avgrate` from `reviews` join left `rates` on `reviews`.`id` = `rates`.`review`group by `reviews`.`id` [\php]
זה נראה לי אמור לעבוד, אם לא נסה ללמוד על פונקציות שהשתמשתי פה ושנה לפי הצורך..
__________________
בברכה עובד, מפתח אתרים.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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