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

الموضوع: مشكلة عند استخدام order by rand و ال paging

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

    مشكلة عند استخدام order by rand و ال paging



    السلام عليكم
    رمضان كريم ويللا شدو حيلكم فى العشر الاواخر
    عندى سؤال
    انا عملت استعلام من القاعدة select والترتيب order by rand() تمام وجميل
    وشغال زى الفل
    بس لما عملت تعدد الصفحات شغال تمام بس المشكلة انه لما يقسم النتائج الى عدة صفحات كلما احول الى صفحة يستخدم الدالة rand مرة اخرى ويعطى نتائج عشوائية وكثيرا من هذه النتائج يكون موجود بالصفحة الاولى وكذلك فى الثالثة والرابعة و.........

    يعنى مثال

    لدينا اى دى رقم 25 فى الصفحة الاولى مثلا
    لما نحول على الصفحة الثانية فيه احتمال نجده ايضا وربما نجده فى الصفحة الثالثة لانه يستخدم الدالة فى كل صفحة
    فهل هناك حل بحيث يستخدمها مرة واحدة وعند تقليب الصفحات يعطى نتائج مختلفة عن الصفحات السابقة؟؟





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير


  2. #2
    عضو نشيط جدا
    تاريخ التسجيل
    May 2007
    المشاركات
    509


    اخوي جرب استعمل DISTINCT وهو امر خاص بعدم تكرار النتائج ...

    يكون الاستعلام كالتالي :

    كود PHP:
    SELECT DISTINCT field_name FROM table_name OEDER BY RAND() 

    ان شاء الله تزبط معك ... والى الامام حبي .





    __________________
    EbNCaNa اخوكم ابن قانا

    [درس] قائمة بريدية بأسهل الطرق بواسطة PHP

    [توقيعك يجب أن لا يكون أطول من 400 حرف يتضمن تجاوز كود المنتدى] - الى متى المعاناة يا حضرة الأدارة ؟

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


    الله يبارك فيك ومشكور على المساعدة
    للاسف ما زبطت
    النتائج تتكرر نفس المشكلة بس لاحظ انا قلت لما انتقل لصفحة اخرى





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  4. #4


    استخدم LIMIT أخي الكريم

    أو ضع الاستعلام لكي نقوم بمعرفة المشكلة بالضبط





    __________________
    تابعني على Twitter

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


    أخي الكريم ، مالفائدة من تعدد الصفحات إذا كانت النتائج عشوائية ؟
    أقترح إستخدام الإستعلام التالي في حال لو أردت تفعيل تعدد الصفحات ( طبعاً النتائج غير عشوائية ، ستكون آخر عشر سجلات مضافة ) :
    كود:
    select * from table order by id desc limit 10






    __________________
    مدونة؟

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


    انا مستخدم limit اصلا وهذا لازم عشان قصة تعدد الصفحات
    هو كل شىء شغال تمام بس المشكلة انه الامر rand يتم تنفيذه من جديد عند تقليب الصفحات وهذا طبيعى
    لانه عند كل تحديث يتم تنفيذ الاستعلام بالقاعدة مرة اخرى فيتعامل معه كانه استعلام جديد.
    لكن الان انا اقول هل هناك طريقة لجعله يرتب العناصر مرة واحدة فقط بالامر rand يعنى اذا قام المستخدم بقلب الصفحات يعطيه نتائج مختلفة على حسب استعلام الذى اجراه فى الصفحة الاولى





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

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


    هل هناك طريقة لجعله يرتب العناصر مرة واحدة فقط بالامر rand
    الطريقة هي بإزالة الأمر rand() ..






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


    الطريقة هي بإزالة الأمر rand() ..
    وكانك يابو زيد ما غزيت
    اخى الكريم
    هذه كانت فعلا الطريقة التى استخدمتها منذ زمن
    لكن حاليا اريد عرض نتائج عشوائية
    هناك اخ قال لى يمكن عن طريق الكوكيز
    هل من طريقة ؟؟





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  9. #9
    عضو شرف
    تاريخ التسجيل
    Apr 2002
    المشاركات
    1,379


    لا اعلم مالفائدة من هذا , لكن يمكن فعل ذلك بطريقتين:
    - عبر تخزين قيمة rand في الجلسه للمستخدم , ثم استخدامها في كل مره تريد البحث.
    - ان يوضع جدول للبحث يتم تخزين النتائج بشكل مؤقت فيه , مثل منتديات vb .





    __________________
    ضيف الله العتيبي مبرمج حر و مهندس معتمد من زيند (ZCE)
    الاتصال: daif@daif.net او جوال: 0556639884
    الخدمات: تقديم استشارات برمجيه, تطوير بوابات/خدمات إلكترونيه للقطاع العام او الخاص .

  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Feb 2007
    المشاركات
    393


    كود:
    order by rand
    تقدر تخليها
    كود:
    order by rand(N)
    وتعطيك نتايج عشوائية ثابتة وتتغير حسب ال N .. حيث الN عدد صحيح
    وتخزنه في السيشن كما تفضل الاخ ضيف
    كود PHP:
    @session_start();
    if(!
    $_SESSION['RAND']) $_SESSION['RAND'] = rand(1,300);
    $s mysql_query("Select * from TABLE order by Rand($_SESSION[RAND])"); 






    __________________
    موقعي الشخصي
    www.Flasher.ws

    جزيرة الفنون
    www.Artsisland.net

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


    جزاك الله خيرا الاخ daif و الاخ flasher على المساعدة
    ساقوم بالتجربة ان شاء الله





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير





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

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

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