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

الموضوع: خبراء البرمجة لو سمحتم : هل هذه الطريقة مجدية في إنشاء الأقسام بشكل غير محدود ؟!!

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697

    خبراء البرمجة لو سمحتم : هل هذه الطريقة مجدية في إنشاء الأقسام بشكل غير محدود ؟!!



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

    قاعدة البيانات عبارة عن :
    - رقم تسلسلي id
    - إسم القسم cat
    - موضع القسم loc ( موضعه هل هو قسم أساسي أم فرعي من قسم أساسي سابق أو أي قسم فرعي )

    و طبعاً يكون مع الجدول إفتراضياً إدراج هذه البيانات :
    - الرقم التسلسلي = 1
    - إسم القسم = قسم رئيسي
    - موضع القسم = 1 ( يرجع لنفسه )

    و طبعاً في البرنامج في لوحة التحكم و بشاشة إضافة قسم يكون هناك خانة لكتابة إسم القسم و قائمة منسدلة لتحديد موضع القسم و تعرض الأقسام المتوفرة في القاعدة ( طبعاً مع وجود إختيار قسم رئيسي الذي يحمل التسلسل 1 و الموضع 1 مسبقاً )

    مثال على الإضافة :
    الآن لو إفترضنا عمل السابق حينما نذهب لشاشة إضافة قسم ستظهر لنا خانة إسم القسم ( نسميه مثلاً مقالات إسلامية ) ثم هناك إختيار موضع القسم ( في بداية البرنامج لن يكون هناك سوى إختيار قسم رئيسي المضاف مسبقاً )
    ستكون في قاعدة البيانات البيانات الجديد هذه :
    - الرقم التسلسلي = 2
    - إسم القسم = مقالات إسلامية
    - موضع القسم = 1 ( قسم رئيسي )

    لنعمل على إضافة قسمين جديدين ( مقالات طبية و مقالات تقنية )
    سيكون هناك :
    - الرقم التسلسلي = 3 ، 4
    - إسم القسم = مقالات طبية ، مقالات تقنية
    - موضع القسم = 1 ( قسم رئيسي )

    سنلاحظ عند إضافة القسمين أنه في خانة موضع القسم أصبحت تظهر جميع الأقسام بمعنى أنه بالإمكان أن نختار بدلاً من قسم رئيسي يحمل القيمة 1 للموضع ممكن نختار قسم مقالات إسلامية ليكون موضع القسم = 2

    مثال على هذا :
    نريد إضافة قسم فرعي داخل ( مقالات إسلامية ) لنسميه مثلاً الدعوة الإسلامية
    إذاً ستكون البيانات :
    - الرقم التسلسلي = 5
    - إسم القسم = الدعوة الإسلامية
    - موضع القسم = 2 ( مقالات إسلامية )

    و نريد مثلاً إضافة قسم فرعي داخل الدعوة الإسلامية بإسم ( آداب الدعوة ) :
    - الرقم التسلسلي = 6
    - إسم القسم = آداب الدعوة
    - موضع القسم = 5 ( الدعوة الإسلامية )

    و هلم مجرة !!
    فهل هذه الطريقة ترونها مجدية ؟!!!

    جربتها و نجحت معي في الإضافة لكن لم أجربها بعد في العرض
    و واجهتني مشكلة عند صفحة تعديل قسم لم أستطع أظهر موضع القسم بالشكل المطلوب

    على كل أرجو أن يكون الشرح واضح
    منتظر رأيكم في هذه الطريقة !!





    رضا غير متواجد حالياً


  2. #2
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    نسيت أوضح شيء بخصوص جدول القاعدة :
    و هو أن إسم القسم عبارة عن جدول يسمح فيه الكتابة 255 حرف
    و موضع القسم عبارة عن جدول يخزن فيه قيمة رقمية هي عبارة عن رقم كل قسم id





    رضا غير متواجد حالياً

  3. #3
    عضو فعال
    تاريخ التسجيل
    Sep 2000
    المشاركات
    1,041


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

    حولها الى كود وشوف شو راح يصير ......

    ذكرت فى مقالك

    =============================
    قاعدة البيانات عبارة عن :
    - رقم تسلسلي id
    - إسم القسم cat
    - موضع القسم loc ( موضعه هل هو قسم أساسي أم فرعي من قسم أساسي سابق أو أي قسم فرعي )
    ==============================
    هل تقصد هنا توزيع الاقسام من فرعية الى فرعية فرعية ؟؟؟

    اذا كان هنا الكلام صحيح فالفكرة صح ..........

    لطيف جدا





    __________________
    Perfection Is A Never Ending Story
    mabsoot غير متواجد حالياً

  4. #4
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    عفواً مبسوط ما فهمت إيش تقصد بإحترام عدد الخانات و إسم الجدول ..

    بالنسبة للقاعدة ستكون هكذا :

    كود PHP:
    CREATE TABLE `category` (
      `
    idint(10unsigned NOT NULL auto_increment,
      `
    namevarchar(255NOT NULL default '',
      `
    locint(10unsigned NOT NULL default '0',
      
    PRIMARY KEY  (`id`),
      
    KEY `id` (`id`)
    TYPE=MyISAM
    موضع القسم سيحتوي على كلمة ( قسم رئيسي ) إفتراضياً و بقيمة لـ loc = 1 و حيث يتم الطلب في الصفحة الرئيسية عن المواقع التي موضعها = 1 بإعتبار أنها أقسام رئيسية

    و إذا أضفنا أقسام أخرى فسيكون loc = رقم id القسم الذي تندرج تحته

    أتمنى يكون شرحي واضح ؟؟؟؟





    رضا غير متواجد حالياً

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


    أخ رضا، أحييك على وضع هذا الموضوع الهام..

    الطريقة التي اقترحتها ممتازة حيث أنه بالإمكان أن تعرف التفرعات (الأبناء) لأي قسم بدلالة رقمه،
    ولكنك ستواجه مشكلة عندما تحتاج إلى إعادة الفرع البعيد (الحفيد) إلى الفروع الأساسية (الآباء والأجداد).
    أي أنه لو كان لديك التفرع التالي:

    - القسم الرئيسي > القسم الإسلامي > الدعوة > آداب الدعوة > دروس

    فإنك عندما تريد أن تنسب القسم (دروس) إلى الأقسام الأعلى فستحتاج إلى عمل حلقات تكرارية من خلال البرنامج للوصول إلى كافة الآباء: (آداب الدعوة < الدعوة < القسم الإسلامي < القسم الرئيسي)
    ولن تستطع أن تنفذ ذلك من خلال تعليمات SQL مباشرة.

    ويمكنك الاعتماد على طريقتك إذا كان تعدد التفرعات هام بالنسبة لك، أما إذا كان بإمكانك الاكتفاء بعدد معين من التفرعات (5 مستويات مثلاً) فإن الأفضل أن تقوم بإنشاء 5 جداول مختلفة (كل جدول لمستوى) بحيث يمكنك ربطها معاً من خلال تعليمات SQL وبالتالي الحصول على عائلة أي قسم من خلال تعليمة SQL واحدة وفي سجل واحد.

    اطلع أيضاً على الموضوع http://www.arabteam2000.com/vb/showt...threadid=11807
    الصفحة الأولى والثانية http://www.arabteam2000.com/vb/showt...7&pagenumber=2
    قد تجد من النقاش ما يعطيك فكرة ما





    __________________
    visualmind (at) php.net
    أعتذر كثيراً عن غيابي من المشاركات والذي لن يطول أكثر إن شاء الله.
    VisualMind غير متواجد حالياً

  6. #6

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

    __________________

    ألا في سبيل الله ما أنا فاعل - - - عطاء وإقدام وحزم ونائل

    عبدالعزيز السعيد غير متواجد حالياً

  7. #7
    فضلاً اكتب اسمك الحقيقي هنا
    زائر


    سبق وأن طرح هذا الموضوع في موقع المطور العربي

    على العنوان التالي : http://www.arabbuilder.com/forum/sho...=&threadid=401

    واقرأ رد الكاتب [ mubarmej ] - الرد رقم ( 9 ) .






  8. #8
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2001
    المشاركات
    576


    أنا استخدم الطريقة التالية:
    id:معرف القسم
    title:إسم القسم
    sub:إذا كان القسم رئيسي يأخذ القيمة صفر أما لوكان فرعي فيأخذ قيمة القسم المتفرع منه(الأب).
    indexs:هنا أضع السلسلة فيما لوكان القسم فرع وليس رئيسي بالشكل التالي:
    1|3|5
    ومن خلال دالة خاصة أمرر فيها هذه القيمة تعطيني أين انا موجود الآن مع روابط لكل قسم.





    php4 غير متواجد حالياً

  9. #9
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


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

    ncE بارع Pri .. شكراً لك .. زرت الرابط لكن أعتقد والله أعلم أن بطريقتك هذه لن يكون هناك سوى أقسام فرعية للأساسية .. بمعنى أب و إبن فقط لا يمكن عمل حفيد و خلافه ..

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

    php4 .. ممكن توضح أكثر ؟؟ ..





    رضا غير متواجد حالياً

  10. #10
    عضو نشيط جدا
    تاريخ التسجيل
    Nov 2001
    المشاركات
    576


    ماقصدته هو مايلي:
    لدي جدول خاص بالأقسام فيه :
    id:معرف للقسم ينشأ تلقائياً عند إدخال أي قيمة في الجدول.
    title:إسم القسم
    sub:تصنيف القسم
    indexs:فهرسة القسم

    الآن ساشرح لك كيف يعمل ولكن سأشرح قبلها عمل الـsub&indexs حتى تستوعب فائدتهما:
    sub:إذا كان القسم رئيسي أي أب فسيأخذ القيمة صفر أما لو كان فرعاً فسيأخذ قيمة الـid لأبيه.

    indexs:هنا الفهرسة وهي تلغي مشكلة الرجوع التي ذكرها اخي صلاح،حيث لو كان القسم رئيسي فستكون فارغة اما لو كان فرعاً فسيأخذ قيمة indexs الخاصة بابيه ويضيف عليها إسم ابيه+معرف ابيه وبهذه الطريقة ستلغي مسالة الرجوع الطويل والدخول في حلقات تكرارية متعددة تستهلك موارد النظام،فمع هذه الطريقة ستحتاج فقط لرجوع واحد وتحديداً لأب القسم الذي انت به فقط.

    شكل مدخلات indexs
    تكون بالشكل التاليليس إلزامي يمكنك إتخاذ الشكل الذي يعجبك)

    لنفرض أنك موجود في القسم ج المتفرع من ب المتفرع من أ وقيم معرفهم هي بالترتيب 123 فستجد قيمة الـindexs لكل منهم كالتالي:

    أ>>فارغة لأنه رئيسي
    ب>>أ:1 قيمة ابيه وسمه
    ج>>ب:2|أ:1 قيمة أصوله واسمائها

    إذا لتطبع مسارك في اي قسم كل ماعليك هو إدخال قيمة indexs في دالة تصممها لعمل ذلك فمثلاً لفك البيانات إستخدم الدالة explode

    هذا ماقصدته اخي الكريم بكلامي السابق





    php4 غير متواجد حالياً

  11. #11
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    شرح وافي الله يجزيك خير الله لا يحرمنا من علمك ..





    رضا غير متواجد حالياً





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

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

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