النتائج 1 إلى 13 من 13

الموضوع: طلب شرح عمل نظام التقييم

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55

    طلب شرح عمل نظام التقييم



    السلام عليكم ورحمة الله وبركاته

    الرجاء تزويدي بمعلومات وطرق لبناء نظام التقييم مثلاً تقييم مقال ونجوم وهكذا

    بارك الله فيكم







  2. #2
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55


    هل من مجيب ؟






  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    الفكرة معقدة نوعاً ما ..

    لا أعلم إن كانت هذه الفكرة المتبعة لكن ..

    سيكون هناك جدول يحتوي على سجلات التقييم .. لنسمه ratings
    كود:
    id, post_id, value ( 0, 1, 2, 3, 4, 5 )
    نقوم بإستخراج السجلات لكل تقييم ونقوم بحسابها ..

    كود PHP:
    select count(idfrom ratings where post_id and value 0;
    // ..
    select count(idfrom ratings where post_id and value 5
    الآن نقوم بالمقارنة بين النتائج .. نضعهم في مصفوفة ..
    كود PHP:
    $post_id 1;
    for (
    $i 0$i <= 5$i++) {
        
    $result mysql_query('select count(id) from ratings where post_id = '.$post_id.' and value = '.$i);
        
    $ratings[$i] = mysql_result($result00);
        
    mysql_free_result($result);
    }
    mysql_close($link); 
    الآن سيكون الناتج لدينا مثل ..
    كود PHP:
    Array
    (
        [
    0] => 3
        
    [1] => 12
        
    [2] => 17
        
    [3] => 30
        
    [4] => 52
        
    [5] => 59

    على اعتبار ان
    كود PHP:
    $ratings[0
    يحتوي على عدد الاشخاص الذين قيمو الموضوع بالرقم 0
    وهكذا مع بقية العناصر ..

    نقوم الان بالتأكد من ان احدهم قام بالتصويت على العنصر ..
    اي بمعنى اصح لا تكون المصفوفة $ratings تساوي
    كود PHP:
    array (000000
    كود PHP:
    $no_ratings true;
    for (
    $i 0$i <= 5$i++) {
        if (
    $ratings[$i] != 0) {
            
    $no_ratings false;
            break;
        }

    قد يقول البعض لماذا لا تقوم باستخدام
    كود PHP:
    if ($ratings != array (000000)) { } 
    فانا افضّل التأكد من كل عنصر بشكل منفرد ، لضمان صحة الحساب ..

    الان اذا لم يكن هنالك تقييم للعنصر بعد .. نعرض له رسالة تخبره انه لم يتم تقييم الموضوع او نقوم بحساب التقييم ..
    وهو على الطريقة التالية ..

    كود PHP:
    #1
    $max max($ratings);
    #2
    for ($i 0$i <= 5$i++) {
        if (
    $ratings[$i] == $max) {
            
    $keys[] = $i;
        }
    }
    #3    
    $rating max($keys);
    #4
    if ($ratings[$rating 1] >= ($ratings[$rating] / 2) and $ratings[$rating 1] != $ratings[$rating]) {
        
    $rating $rating 0.5;

    - نحضر اكبر عنصر
    - نحضر مفتاح اكبر قيمة الذي هو في نفس الوقت التقييم وبما انه قد يكون هناك اكثر من عنصر متساويين في القيمة اي مثلا : عدد الاشخاص الذي قامو بالتقييم للرقم 4 = عدد الاشخاص الذين قامو بالتقييم للعدد 5 فاننا نحضر اكبر عدد بينهم ايضاً
    - نقوم بالنظر للعدد الاكبر من رقم التقييم اي مثلاً لو أن التقييم 3 ننظر للعدد الاكبر منه وهو 4 ونرى ان كان عدد الاشخاص الذي قامو بالتقييم بالرقم 4 اكبر او يساوي نصف عدد التقييم ( 3 ) ، لكي نقوم باضافة 1/2 في حالة حدوث ذلك ..

    مع ملاحظة انه في حالة تساوي عدد التقييمات لاكثر من عدد فانه سيأخذ العدد الاكبر ، مثلاً لو قام شخص بالتقييم للرقم واحد وجاء آخر وقام بالتقييم للرقم 2 ولم يتم التقييم لخيارات اخرى فانه سيأخذ الرقم 2 .. وهكذا

    قاعدة البيانات :
    كود:
    CREATE TABLE `ratings` (
      `id` int(6) NOT NULL auto_increment,
      `post_id` int(3) NOT NULL,
      `value` int(1) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    
    INSERT INTO `ratings` VALUES (1, 1, 0);
    INSERT INTO `ratings` VALUES (2, 1, 1);
    INSERT INTO `ratings` VALUES (3, 1, 3);
    INSERT INTO `ratings` VALUES (4, 1, 3);
    INSERT INTO `ratings` VALUES (5, 1, 4);
    INSERT INTO `ratings` VALUES (6, 1, 4);
    INSERT INTO `ratings` VALUES (7, 1, 4);
    INSERT INTO `ratings` VALUES (8, 1, 4);
    INSERT INTO `ratings` VALUES (9, 1, 5);
    INSERT INTO `ratings` VALUES (10, 1, 5);
    INSERT INTO `ratings` VALUES (11, 1, 5);
    ملف التقييم :
    كود PHP:
    $post_id 1;
    for (
    $i 0$i <= 5$i++) {
        
    $result mysql_query('select count(id) from ratings where post_id = '.$post_id.' and value = '.$i);
        
    $ratings[$i] = mysql_result($result00);
        
    mysql_free_result($result);
    }
    mysql_close($link);
    $no_ratings true;
    for (
    $i 0$i <= 5$i++) {
        if (
    $ratings[$i] != 0) {
            
    $no_ratings false;
            break;
        }
    }
    if (
    $no_ratings == false) {
        
    $max max($ratings);
            for (
    $i 0$i <= 5$i++) {
                if (
    $ratings[$i] == $max) {
                    
    $keys[] = $i;
                }
            }
        
    $rating max($keys);
        if (
    $ratings[$rating 1] >= ($ratings[$rating] / 2) and $ratings[$rating 1] != $ratings[$rating]) {
            
    $rating $rating 0.5;
        }
        echo 
    '<pre>';
        
    print_r($ratings);
        echo 
    '</pre>';
        echo 
    $rating;
    } else {
        echo 
    'no ratings yet..';

    لا أعتقد ان هذه الطريقة هي الطريقة المتبعة في نظم ادارة المحتوى مثلاً ، قم بالنظر لبعض النماذج المفتوحة المصدر للاستزادة ..

    بقي هنالك شيء واحد وهو طريقة التقييم وهي عن طريق form عادي عن طريق الـ check boxes ، ولابد من استخدام الـ cookies او الـ sessions في حال عدم توفر الاولى لضمان نزاهة التقييم






  4. #4
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55


    يعطيك العافية يالغالي لاكن نظامك في شدة التعقيد ,

    ارجوا مساعدتي في وضع نظام تقييم اخر وشكراً ,






  5. #5
    عضو نشيط
    تاريخ التسجيل
    Apr 2008
    المشاركات
    82


    أخي اطلع على أي نظام مفتوح المصدر كنظام نيوك أو vb مثلاً و حاول أن تتعلم منهم
    ذلك يفيدك أكثر لأنه يعلمك البرمجة باحتراف






  6. #6
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    مر علي تلك الصفحتين
    ستجد فيهما بعض السكربتات الجاهزة للتقييم
    يمكن استخدام اي منهم

    1120 + Ajax/Javascript/Dhtml examples and demos to download
    1120 + Ajax/Javascript/Dhtml examples and demos to download





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55


    يعطيكم العافية يالغالين ,

    لقيت نظام تقييم اعجبني لاكن كيفية طريقة ربطه بالسكربت ؟

    بحيث كل مقال تقييم خاص به ؟ ليس لدي خبرة بالجافا سكربت والاجاكس لأعدل على السكربت الجاهز ,

    شكراً لكم ,






  8. #8
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    يعطيكم العافية يالغالين ,

    لقيت نظام تقييم اعجبني لاكن كيفية طريقة ربطه بالسكربت ؟

    بحيث كل مقال تقييم خاص به ؟ ليس لدي خبرة بالجافا سكربت والاجاكس لأعدل على السكربت الجاهز ,

    شكراً لكم ,
    أين هو ؟





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  9. #9
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55


    تفضل :

    http://riderdesign.com/articles/disp...x?articleid=21

    أو اختر اي واحد من هنا :
    1120 + Ajax/Javascript/Dhtml examples and demos to download



    جزاك الله خيراً





    التعديل الأخير تم بواسطة أبــو عبدالله ; 02-10-2008 الساعة 05:14 PM

  10. #10
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    انا قاعد دلوقتي بدور لحضرتك علي طريقة العمل
    ولو فهمتها حقولك علي الطريقة كاملة





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  11. #11
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    55


    جزاك الله كل خير يالغالي ولا يحرمك الاجر ان شاء الله






  12. #12
    عضو فعال جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    3,929


    أولا .. وبعيدا عن طريقة عرض التقييم او طريقة اضافته

    ستقوم باضافة حقلين داخل جدول المقالات
    الحقل الاول .. سيكون باسم rate وفيه سنضع المجموع الكلي للتقييمات
    الحقل الثاني .. سيكون باسم rates وفيه سنضع عدد مرات التقييم

    طريقة التعامل مع الحقلين ستكون بهذا الشكل
    نفترض ان احد الاشخاص قام بتقييم المقال بخمس نجوم .. وكان هو أول شخص قام بالتقييم
    سيتم اضافة ..
    اضافة 5 الي مجموع ما في الحقل rate
    5 + 0 = 5
    واضافة 1 الي مجموع ما في الحقل rates
    1 + 0 = 1

    ثم قام أحد الاشخاص بتقييم المقال بثلاثة نجوم فقط
    سيتم اضافة ..
    اضافة 3 الي مجموع ما في الحقل rate
    3 + 5 = 8
    واضافة 1 الي مجموع ما في الحقل rates
    1 + 1 = 2

    الآن كيف نستخرج التقييم الحالي للمقال في صفحة العرض
    سنقوم بجلب قيمة الحقلين rate و rates ثم نقسمهم علي بعض
    بهذا الشكل ..
    rate / rates = 00000
    8 / 2 = 4

    بعد ان قمنا بمعرفة التقييم الحالي للمقال يمكننا استخدام احد سكربتات الاجاكس
    التي وضعت رابط لها في ردك السابق
    وارشح لك هذا الاسكربت
    jQuery Helper - Komodos Medias Star-Rater
    نظرا لسهولته الشديدة !

    وعندما تقوم بانزال السكربت ستجد به ملف اسمه ratingsdemo.php
    فيه ضع اوامر التعديل علي الحقلين





    __________________
    تحاور مع العاقل بعقل .. اما ان يقتنع او تقتنع
    وتحاور مع الجاهل بعقل .. اما يطقعش او تفرقش
    وتلك الفاظ لا معنى لها كذلك كلماته

  13. #13
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    613


    نعم .. الطريقة السابقة معقدة او دعنا نقول طويلة نسبياً ، كما أشار الأخ سحاب اون لاين الطريقة هي القيام بجمع

    جميع التقيمات وتقسيمها على عدد مرات التقييم
    كود:
    rating = sum of ratings / number of ratings
    الآن وبالإعتماد على المعادلة السابقة سننشيء ثلاثة حقول إضافية في الجدول الذي يوجد به العنصر او

    العناصر المراد تقييمها ..
    كود:
    ratings(int), ratings_count(int), final_rating(float)
    الآن العملية هي مجرد تحديث للحقول ..

    عندما يقوم احدهم بالتقييم فاننا نحضر قيمتي الحقلين ratings و ratings_count او مهما اردت

    تسميتهما ، ونضيف التقييم الذي قيمه الشخص الى مجموع التقييمات اي
    كود:
    ratings = ratings + new_rating
    ونضيف الرقم الواحد على مجموع التقييمات لان التقييم يكون من شخص واحد بالطبع ..
    كود:
    ratings_count = ratings_count + 1
    كود PHP:
    $ratings_count++; 
    ومن ثم نقوم بتطبيق المعادلة لحساب التقييم ونقوم بتخزينة في حقل التقييم النهائي الـ final_rating

    لذلك سيكون التطبيق بالشكل التالي ..
    كود PHP:
    $post_id 7;
    $new_rating 2.50;

    //1
    select ratingsratings_count from table

    //2
    $ratings $ratings $new_rating;
    $ratings_count++;

    $final_rating round(($ratings $ratings_count), 2);

    //3
    update table set ratings '.$ratings.'ratings_count '.$ratings_count.'

    final_rating '.$final_rating.' where id $post_id

    echo $final_rating






    التعديل الأخير تم بواسطة dev11 ; 10-10-2008 الساعة 08:08 PM





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض