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

الموضوع: ما هي طريقة اعادة ترتيب نتائج الاستعلام بهذه الطريقة؟؟

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

    ما هي طريقة اعادة ترتيب نتائج الاستعلام بهذه الطريقة؟؟



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

    هناك طريقة رائعة وهي تتيح لك اعادة ترتيب نتائج الاستعلام كما تريد
    للتوضيح كالتالي :
    لنفرض ان لدينا استعلام select من قاعدة البيانات وسيعرض لنا الاسماء التالية

    • احمد
    • محمد
    • علي
    • ابراهيم
    • عماد
    وكالتالي ..

    الان اذا اردنا ان نجعل النتيجة ( ابراهيم) تظهر فوق (علي) و (عماد) يظهر فوق (احمد) وترتيبها كما نريد عن طريق الضغط على رابط لرفع النتيجة بمقدار 1 او خفضها بمقدار 1 ايضا وعادة ما يكون سهمين بجانب النتيجة بحيث تتيح لك عرضها فوق النتيجة التى تليها او تحتها ..
    علما باني شاهدت هذه الخاصية قبل ذلك لكن لا اذكر اين !!
    فهل من كود يشرح هذه الطريقة؟





    التعديل الأخير تم بواسطة مهندس مصرى ; 10-02-2008 الساعة 04:56 PM
    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير


  2. #2
    عضو جديد
    تاريخ التسجيل
    Aug 2007
    المشاركات
    18


    بامكانك ان تجعل عمود في الجدول في قاعدة البيانات تسميه tab مثلاً

    و تجعل فيه قيمة الترتيب و من ثم عند الاستعلام قم بعرض النتائج مرتبة تبعاً لذلك الحقل باستخدام ORDER BY





    __________________
    RedMan Blog
    مدونة تقنية تهتم بتطوير مواقع الويب و قضايا تنمية المجتمع

  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2000
    المشاركات
    504


    بحاول اجيب حل من عندي

    قم بانشاء حقل مثلاً feild5
    هذا الحقل ياخذ قيمة 1 عند اضافة اول بيانات له

    بعد كذا عند اضافت اي بيانات جديد راح يزيد +1

    بعد كذا عند الاستعراض للبيانات

    تضع سهم للاعلى قيمته +1
    update table set feild5=feild5+1
    وضع سهم الاسفل قيمته -1
    update table set feild5=feild5-1
    طبعاً القيمه هي تحديث للحقل feild5

    ان شاء الله وصلت المعلومه واعذرنا اذا صار فيه تقصير






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


    شكراً لكم على المساعدة ..
    نعم انا كنت اعلم هذا الحل . لكن هذه ليست المشكلة
    انما المشكلة بعد تغيير رقم عرض اى عنصر لابد من تغيير عرض العناصر الاخرى كلها
    يعني مثلا
    عماد ,,, 1
    محمد,,, 2
    احمد ,,, 3
    علي ,,, 4

    الان سنجعل احمد = 1 وهي بسيطة عن طريق عمل update للحقل الذي يوجد به "احمد"
    الان سيكون لدينا حقلين بنفس القيمة وهي 1 (احمد - عماد)
    فهل هناك طريقة لتحديث جميع السجلات مرة اخرى باعادة ترقيمها؟
    وشكرا لكم





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

  5. #5
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    589


    عملت على هذا الامر ووجدت انه يستهلك استعلامات كثيره وتركته

    الافضل الاستعانه بكلاس يخدم هذا الامر عن طريق الـ xml





    __________________
    ومن اعجب الاشياء انك لاتدري وانك لاتدري بانك لاتدري
    فإن كنت لاتدري ولم تكُ بالذي يسال من يدري فكيف اذن تدري
    تمام العمى طول السكوت وانما شفاء العمى يوماً سؤالك من يدري

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


    بمكن عمل ازاحة للترتيب كالتالي:
    ان تزيد واحد على الارقام التى اكبر او تساوي الرقم المراد الازاحه اليه
    تريد ازاحة "علي" الى الرقم 2 يصبح الاستعلام
    كود PHP:
    UPDATE tbl_name SET sort=sort+1 WHERE sort>=
    كود PHP:
    UPDATE tbl_name SET sort=2 WHERE name='علي' 
    اعتقد سيعمل بشكل سليم , وحتى لا يحدث فراغات في الترتيب يمكن الاستعلام عن الاسم اولا وتحديث فقط الصفوف التى بين الترتيبين
    كود PHP:
    UPDATE tbl_name SET sort=sort+1 WHERE sort>=AND sort<






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

  7. #7


    الاستعلام الاول لرفع حقل معين والاستعلام الثاني لتنزيل حقل معين

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

    كود PHP:
    if ($id)
    {
    $id intval$_GET['id'] );

    $result mysql_query("SELECT sort FROM tbl_name WHERE id='$id'") or die (mysql_error() );
    while(
    $row mysql_fetch_array($result)){
    $sort =$row[sort];
    }
       
    $sql1=mysql_query("UPDATE tbl_name SET sort=sort+1 WHERE sort=$sort-1") or die (mysql_error() );
       
    $sql2=mysql_query("UPDATE tbl_name SET sort=sort-1 WHERE id='$id'") or die (mysql_error() );
    }
    echo 
    "<div align=\"center\">تم التحديث بنجاح</div>\n"

    كود PHP:
    if ($id)
    {
    $id intval$_GET['id'] );

    $result mysql_query("SELECT sort FROM tbl_name WHERE id='$id'") or die (mysql_error() );
    while(
    $row mysql_fetch_array($result)){
    $sort =$row[sort];
    }
       
    $sql1=mysql_query("UPDATE tbl_name SET sort=sort-1 WHERE sort=$sort+1") or die (mysql_error() );
       
    $sql2=mysql_query("UPDATE tbl_name SET sort=sort+1 WHERE id='$id'") or die (mysql_error() );
    }
    echo 
    "<div align=\"center\">تم التحديث بنجاح</div>\n"






    __________________
    لا اله الا الله محمد رسول الله

    لا تقل لا أعلم بل اقرأ و تعلم

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


    شكراً لجميع الاخوة الذين تعاونوا ..
    RedMan
    الطالب
    s6ur
    daif
    II MATRIX II

    شكرا لكم جميعا





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

  9. #9


    العفو اخوي ونتمنى ان تكون قد وجدت ضالتك





    __________________
    لا اله الا الله محمد رسول الله

    لا تقل لا أعلم بل اقرأ و تعلم

  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    أخي الكريم سبق أن واجهت هذه المشكلة مع نظام بسيط لإدارة المحتوى قمت بتطويره سابقا ويدعى راما، الفكر ببساطة أنك لست بحاجة إلى تعديل كافة السجلات، بل العملية ببساطة هي التبديل فيما بين ترتيب السجل الحالي والسجل الذي يسبقه أو يليه فقط بحسب طبيعة العملية هل هي نقل خطوة للأعلى في الترتيب أم خطوة إلى الأسفل، فمثلا إن كان الترتيب الأصلي هو:

    ID الاسم الترتيب
    1 عماد 1
    2 محمد 2
    3 أحمد 3
    4 علي 4

    وأردت نقل علي خطوة واحدة للأعلى، فلديك بداية رقم ID الخاص به، فتستطيع الحصول على قيمة ترتيبه وهي 4، ثم تنقص منها مقدار 1 وتنفذ إستعلام بغية الحصول على ID السجل الذي يسبقه في الترتيب، وهو في هذه الحالة السجل 3 الخاص بأحمد

    بعد ذلك تنفذ إستعلامي تعديل أولهما يعدل قيمة الترتيب للسجل الذي يراد نقله مرتبة واحدة للأعلى وهو سجل علي ذي ID التي قيمتها 4 ويعطى ترتيب أقل بمقدار 1 لتصبح قيمة ترتيبه هي 3.

    بعد ذلك يتم إجراء إستعلام تحديث آخر على السجل الذي كان يسبقه في الترتيب والذي حصلنا في الخطوة الأولى على قيمة ID الخاصة به وهي 3 (أي سجل أحمد)، على إستعلام التحديث المنفذ أن يعطي قيمة ترتيب تزيد بمقدار 1 عن القيمة الحالية لتصبح 4

    لاحظ ضرورة وجود حقل ID للدلالة على السجل المراد تغييره وعدم الإكتفاء بالترتيب كمؤشر إلى السجل وذلك نظرا لأن لأن بعد تنفيذ أو استعلام تحديث سنحصل على سجلين لهما ذات قيمة الترتيب وهي 3 (سجل علي بعد التحديث وسجل أحمد قبل التحديث).

    إن إجراء العملية الأخرى للنقل خطوة واحدة إلى الأسفل في الترتيب مشابهة جدا لما سبق أن تم شرحه أعلاه، ويمكن استنتاجها بسهولة إعتمادا على شرح الخطوات المعروضة في هذه المشاركة.

    على كل حال، تحافظ هذه الطريقة على إبقاء أرقام الترتيب متسلسلة دون فراغات فيما بينها مثلما تؤدي إليه بعض الحلول الجزئية التي سبق إيرادها في إجابات بعض الأصدقاء على هذا الإستفسار





    __________________
    خالد الشمعة - Khaled Al-Shamaa
    PHP and Arabic language

  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    547


    بخصوص نظام راما لإدارة المحتوى لمن لديه فضول الإطلاع، فهو منشور ضمن موقع Sourceforge على العنوان التالي:

    SourceForge.net: Rama Zaiten CMS





    __________________
    خالد الشمعة - Khaled Al-Shamaa
    PHP and Arabic language

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


    حياك الله اخي DNSerror وشكرا جزيلا لك على الرد..
    هناك مشكلة بسيطة ..
    مثلا لو كان لدينا فراغ بين سجل نتيجة حذف احد السجلات يعني مثلا لو لدينا سجلات ارقامها كالتالي (5) و (6) و (7) و (8) ..
    لنفترض انه تم حذف السجل رقم (5) الان اذا اردنا رفع السجل (4) مكان السجل (6) والاستعلام في الاصل انا مفترض ان يزيد 1 يعني سيكون الرقم بعد الرفع هو (5) (بافتراض اني حذفت السجل رقم 5 من قاعدة البيانات).
    ويتم خفض السجل (6) بمقدار 1 فيكون 5 ايضا ً !
    فهل من حل لهذه المشكلة؟
    وشكراً لكم مجدداً على المساعدة.
    بالمناسبة اخي DNSerror انا معجب جدا بالكلاسات التي قمت ببرمجتها وهي كلاسات فى الصميم وممتازة جدا جزاك الله عنا خيراً





    التعديل الأخير تم بواسطة مهندس مصرى ; 16-02-2008 الساعة 01:29 AM
    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير





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

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

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