صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 20

الموضوع: ما أفضل دالة للأقسام الفرعية وبـ أستعلام واحد بطريقة خوارزمية

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

    ما أفضل دالة للأقسام الفرعية وبـ أستعلام واحد بطريقة خوارزمية



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

    أخوانى أنا أحترت مع الأقسام الفرعية

    أنا شغال على دالة جيدة لاكن بها عيب أنها تعمل أستعلامات بعدد الأقسام مثلآ لو لدى 50 قسم تعمل 50 أستعلام وذلك لأنها تعتمد على الأستدعاء الذاتى وفى كل أستدعاء تقوم بتنذ query
    وعند دخول 100 ذائر يحدث لوود شديد فى الموقع وفى النهاية السيرفر يقع رغم أنهوا جيد


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

    أنا لدى فكرة فى هذا الموضوع لاكن غير قادر على تنفيذها أرجو من أخوانا تنفيذها
    والفكرة هى مثلآ

    كود PHP:
    table -> categories
    id
    sub
    name
     
    insert into categories 
    (idsub namevalues ('1''0''a')
    insert into categories (idsub namevalues ('2''1''a2 from a')
    insert into categories (idsub namevalues ('3''2''a3 from a2')
    insert into categories (idsub namevalues ('4''3''a4 from a3')
    insert into categories (idsub namevalues ('5''0''b')
    insert into categories (idsub namevalues ('6''5''b2 from b')
    insert into categories (idsub namevalues ('7''6''b3 from b2')
    insert into categories (idsub namevalues ('8''7''b4 from b3'

    كود PHP:
    $sql mysql_query("select * from categories ");
     
    while(
    $row mysql_fetch_assoc($sql)){
       
    $array[] = $row;

    النقطة الهامة هنا



    كود PHP:
    Array
    (
        [
    0] => Array
            (
                [
    id] => 1
                
    [sub] => 0
                
    [name] => a
            
    )
        [
    1] => Array
            (
                [
    id] => 2
                
    [sub] => 1
                
    [name] => a2 from a
            
    )
        [
    2] => Array
            (
                [
    id] => 3
                
    [sub] => 2
                
    [name] => a3 from a2
            
    )
        [
    3] => Array
            (
                [
    id] => 4
                
    [sub] => 6
                
    [name] => a4 from a3
            
    )
        [
    4] => Array
            (
                [
    id] => 5
                
    [sub] => 0
                
    [name] => b
            
    )
        [
    5] => Array
            (
                [
    id] => 6
                
    [sub] => 4
                
    [name] => b2 from b1
            
    )
        [
    6] => Array
            (
                [
    id] => 7
                
    [sub] => 5
                
    [name] => b3 from b2
            
    )
        [
    7] => Array
            (
                [
    id] => 8
                
    [sub] => 5
                
    [name] => b4 from b3
            
    )


    ونخلى العرض كذلك

    كود PHP:
    a
    a2 from a
    >>a3 from a2
    >>>a4 from a3
    b
    b2 from b
    >>b3 from b2
    >>>b4 from b3 
    أرجو أن أكون قدرت أوصل الفكرة والفكرة محتاجة خوارزمى محترف وأن صح التعبير







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


    ما ادري انا ما ركزت في المثال الاخير زين او ان المثال فيه خلل

    على العموم أفضل فكرة في هالمجال انه يكون فيه حقلين في الجدول, احدهما للـ ParentID والآخر للـ Level

    وتستخرج البيانات كلها باستعلام واحد, وتعمل Loop على الـ Levels





    __________________
    Saudi Wanderer
    My Blog : SWanderer

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    779


    السلام عليكم
    اعطينا ستركتشر الجدول اللي معك و ان شاء الله نساعدك





    __________________
    أهلا و سهلا بكم في :-
    موقع دار الأوائل
    تفضل معنا خدمات الاستضافة
    موقع العبقري لخدمات الاستضافة

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


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

    S.Wanderer الأقسام كلها بجدول واحد,

    عبقري العرب هذة بيانات الجدول


    كود PHP:
    CREATE TABLE `categories` (
      `
    idint(10NOT NULL,
      `
    subint(10NOT NULL,
      `
    namevarchar(100NOT NULL,
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    insert into categories (idsub namevalues ('1''0''a');
    insert into categories (idsub namevalues ('2''1''a2 from a');
    insert into categories (idsub namevalues ('3''2''a3 from a2');
    insert into categories (idsub namevalues ('4''3''a4 from a3');
    insert into categories (idsub namevalues ('5''0''b');
    insert into categories (idsub namevalues ('6''5''b2 from b');
    insert into categories (idsub namevalues ('7''6''b3 from b2');
    insert into categories (idsub namevalues ('8''7''b4 from b3'); 







  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    779


    شوف هذه الحل
    مرفق الملفات





    الملفات المرفقة الملفات المرفقة
    __________________
    أهلا و سهلا بكم في :-
    موقع دار الأوائل
    تفضل معنا خدمات الاستضافة
    موقع العبقري لخدمات الاستضافة

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Feb 2008
    المشاركات
    281


    عبقري العرب

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

    كود PHP:
    a
    a2 from a
    >>a3 from a2
    >>>a4 from a3
    b
    b2 from b
    >>b3 from b2
    >>>b4 from b3 
    ومشكور للمساعدة






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


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

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

    كود PHP:
    <?

    $dbserver 
    'localhost';
    $dbname '';
    $dbuser 'root';
    $dbpass '';

    $conmysql_connect($dbserver,$dbuser,$dbpass);  
    mysql_select_db($dbname,$con);


    function 
    list_cat_select($parent, &$menus$level=0)
    {

        if(
    is_array($menus[$parent]))
        foreach (
    $menus[$parent] as $items)
        {
            
    $mark str_repeat('» '$level);
            echo 
    "<option name=\"{$items['0']}\">{$mark}{$items['1']}</option>\n";
            
    list_cat_select($items['0'], $menus, ($level 1));
        }
    }

    $menus = array();

    $sql mysql_query('SELECT id,name,sub from categories '0);

    while(list(
    $vx_id$vx_name$vx_subcat) = mysql_fetch_row($sql))
    {
        
    $menus[$vx_subcat][] = array($vx_id$vx_name);
    }


    ?>
    <select name="" dir="rtl">
    <?list_cat_select(0$menus);?>
    </select>
    ,السلام عليكم





    __________________
    سبحان الله وبحمده سبحان الله العظيم

  8. #8
    عضو سوبر نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    779


    عادي اخوي انا اعطيتك كلاس الشجره و هو مفتاح للي تريده انت
    عموما بشوف لك تعديل مثل ما تريد





    __________________
    أهلا و سهلا بكم في :-
    موقع دار الأوائل
    تفضل معنا خدمات الاستضافة
    موقع العبقري لخدمات الاستضافة

  9. #9
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


    اخي الكريم انا مبتدئ في php بس الكود ده منكن ينفع معاك ودة ما ارجوة جربة وشوفة وان شاء لله ينفع


    كود PHP:
    <?php

    $sql
    =mysql_query("select*from اسم  جدول الاقسام ");
    while(
    $row=mysql_fetch_array($sql)){

    $sqlf=mysql_query("select*from جدول الفرعيات او مواضيع where cat_id='$row[ا  اسم  حقل  التلرقيم التلقائي لجدول الاقسام]'");
    while(
    $rowf=mysql_fetch_array($sqlf)){

    الذي تريد اخراجة من  الجدول المواضيع


    }


    }



    ?>
    بتوفيق





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com



  10. السلام .. حلك هنا .. الشرح بعدين .. اول شيء جربه
    كود PHP:

    <?php
    function pushAsSub($root,$focus,$rootOfCurrent){
      foreach(
    $root as $key=>$value){
        if(isset(
    $rootOfCurrent[$key])){
          
    $root[$key]['subs'] = pushAsSub($rootOfCurrent[$key],$value,$rootOfCurrent);
        }
      }
      return 
    $root;
    }

    function 
    getResult($resourceId){
      
    $subCats = array();
      
    $root = array();

      while(
    $row mysql_fetch_array($resourceId,1)){
        if(
    $row['sub']==0){
          
    $root[$row['id']] = array('id'=>$row['id'],'sub'=>$row['sub'],'name'=>$row['name']);
        }
        else{
          
    $subCats[$row['sub']][$row['id']] = array('id'=>$row['id'],'sub'=>$row['sub'],'name'=>$row['name']);
        }
      }

      foreach(
    $root as $key=>$value){
        
    $root[$key]['subs'] = pushAsSub($subCats[$key],$value,$subCats);
      }
      return 
    $root;
    }


    $db mysql_connect('localhost','root','');
    mysql_select_db('xxx',$db);
    $result mysql_query('select * from categories ORDER BY sub');
    $subCatagiries getResult($result);

    echo 
    '<pre>';
    print_r($subCatagiries);
    echo 
    '</pre>';
    ?>
    ملاحظه:
    انت استخدمت مثال صعب الفهم، لانك كتبت a2 form a1 او a4 from a3 وهذا يتعب الشخص اللذي يريد ان يساعدك، فلماذا لا تستخدم هذا المثال Car => toyota => camery => green
    ففي المستقبل حاول ان تضع السؤال .. وايضا اجاباتك بامثله سهل الفهم والاستخدام

    فاستبدل محتوى قاعده بياناتك بهذه:

    كود:
    CREATE TABLE IF NOT EXISTS `categories` (
      `id` int(10) NOT NULL auto_increment,
      `sub` int(10) NOT NULL,
      `name` varchar(100) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=18 ;
    
    -- 
    -- Dumping data for table `categories`
    -- 
    
    INSERT INTO `categories` (`id`, `sub`, `name`) VALUES 
    (2, 1, 'Japanies'),
    (3, 2, 'toyota'),
    (4, 3, 'Camery'),
    (10, 4, 'Blue'),
    (12, 1, 'USA'),
    (11, 4, 'Green'),
    (1, 0, 'cars'),
    (9, 2, 'Nissan'),
    (13, 12, 'FORD'),
    (14, 12, 'HUMMER'),
    (15, 14, 'H2'),
    (16, 15, 'BLACK'),
    (17, 15, 'RED');
    والنتيجه

    كود:
    Array
    (
        [1] => Array
            (
                [id] => 1
                [sub] => 0
                [name] => cars
                [subs] => Array
                    (
                        [2] => Array
                            (
                                [id] => 2
                                [sub] => 1
                                [name] => Japanies
                                [subs] => Array
                                    (
                                        [3] => Array
                                            (
                                                [id] => 3
                                                [sub] => 2
                                                [name] => toyota
                                                [subs] => Array
                                                    (
                                                        [4] => Array
                                                            (
                                                                [id] => 4
                                                                [sub] => 3
                                                                [name] => Camery
                                                                [subs] => Array
                                                                    (
                                                                        [10] => Array
                                                                            (
                                                                                [id] => 10
                                                                                [sub] => 4
                                                                                [name] => Blue
                                                                            )
    
                                                                        [11] => Array
                                                                            (
                                                                                [id] => 11
                                                                                [sub] => 4
                                                                                [name] => Green
                                                                            )
    
                                                                    )
    
                                                            )
    
                                                    )
    
                                            )
    
                                        [9] => Array
                                            (
                                                [id] => 9
                                                [sub] => 2
                                                [name] => Nissan
                                            )
    
                                    )
    
                            )
    
                        [12] => Array
                            (
                                [id] => 12
                                [sub] => 1
                                [name] => USA
                                [subs] => Array
                                    (
                                        [14] => Array
                                            (
                                                [id] => 14
                                                [sub] => 12
                                                [name] => HUMMER
                                                [subs] => Array
                                                    (
                                                        [15] => Array
                                                            (
                                                                [id] => 15
                                                                [sub] => 14
                                                                [name] => H2
                                                                [subs] => Array
                                                                    (
                                                                        [16] => Array
                                                                            (
                                                                                [id] => 16
                                                                                [sub] => 15
                                                                                [name] => BLACK
                                                                            )
    
                                                                        [17] => Array
                                                                            (
                                                                                [id] => 17
                                                                                [sub] => 15
                                                                                [name] => RED
                                                                            )
    
                                                                    )
    
                                                            )
    
                                                    )
    
                                            )
    
                                        [13] => Array
                                            (
                                                [id] => 13
                                                [sub] => 12
                                                [name] => FORD
                                            )
    
                                    )
    
                            )
    
                    )
    
            )
    
    )






    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  11. #11
    عضو نشيط جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    364


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

    الحقيقة كان لدي تعديل وتطوير كبير لهذا الكلاس بحيث انه يمكن استخدامه بطريقة اخرى غير طريقة عرض القائمة المنسدلة (يعني يعيد مصفوفة قابلة للاستخدام) لكني فقدت الكلاس المعدل من فترة

    الكلاس في المرفقات وتستطيع الاطلاع على ملاحظات مبرمج الكلاس من خلال هذه الصفحة:
    http://www.toarab.ws/modules.php?nam...article&sid=38

    يمكنك الاطلاع على الكلاس ثم تعديله بالشكل الذي يناسبك

    واذا اردت خدماتي في هذا الامر فراسلني على بريدي الالكتروني


    تقبل مني ارق تحية





    الملفات المرفقة الملفات المرفقة
    __________________
    الخدمات البرمجية
    تعديلات برمجية - تطوير برمجيات جاهزة - صيانة قواعد بيانات
    برمجة خاصة (الأولوية للأفكار الجديدة والخاصة)

    المراسلة : http://it.rewaq.com



  12. القائد: رايت حلك ولكن الطريقه شوي غريبه او خوارزميه مختلفه عن للذي استخدمتها في حلي. سافعل مقارنه سرعه لارى ان كان اللحل اللذي وضعته اسرع ...
    حلك يستخدم الfor loops و حلي يستخدم الwhile loop .. معروف ان الwhile loop اسرع .. ولكن .. الخوارزميه ليست نفس اللذي وضعته ..
    شكرا على اشارتك للحل ..





    __________________
    هلابي افضل المواقع العربية تصميماً
    انصح باستخدام ابونتو

  13. #13
    عضو نشيط جدا
    تاريخ التسجيل
    Dec 2004
    المشاركات
    364


    القائد: رايت حلك ولكن الطريقه شوي غريبه او خوارزميه مختلفه عن للذي استخدمتها في حلي. سافعل مقارنه سرعه لارى ان كان اللحل اللذي وضعته اسرع ...
    حلك يستخدم الfor loops و حلي يستخدم الwhile loop .. معروف ان الwhile loop اسرع .. ولكن .. الخوارزميه ليست نفس اللذي وضعته ..
    شكرا على اشارتك للحل ..
    ما وضعته انا هو الكلاس الأصلي الذي قام بعمله المبرمج والذي اشرت إلى الموقع الذي حصلت منه على الكلاس

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

    لكن الكلاس المعدل من قبلي بعيد عن متناول يدي حاليا ...

    لكني سأعمل على تعديل هذا الكلاس حاليا بحيث يصبح شبيها بالذي قمت بعمله سابقا


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





    __________________
    الخدمات البرمجية
    تعديلات برمجية - تطوير برمجيات جاهزة - صيانة قواعد بيانات
    برمجة خاصة (الأولوية للأفكار الجديدة والخاصة)

    المراسلة : http://it.rewaq.com

  14. #14
    عضو نشيط
    تاريخ التسجيل
    Jun 2007
    المشاركات
    255


    موضوع راااائع <<< متابع

    شكرا لكم شباب والله يعطيكم العافيــــــــــــــــــــه ..






  15. #15
    عضو نشيط
    تاريخ التسجيل
    Feb 2008
    المشاركات
    281


    أستاذ مصطفى - www.khdma.com:الدالة تعمل بنجاح وجميلة لأنها تستخدم أستعلام واحد لاكن أريد أن تعطينى فى النهاية الناتج فى مصفوفة كى استخدموا فى القالب.

    القائد : هذا الكائن يرهق السيرفر لأنوا يعمل على الأستدعاء الذاتى وفى كل أستدعاء يعمل أستعلام وفى النهاية يقع السيرفر

    كود PHP:
        function listJumpf($listJump,$catid
         { 
             global 
    $row,$cat_id
             
    $Jump .= ' '
             
    $Jump .= "حدد قسم مما يلي"
             
    $Jump .= " -------------------------------- "
             
    $result$this->query("select * from rafia_cat where catType='$catid' and subcat='0' order by ordercat ASC"); 
             
    $li 1
             while(
    $row=$this->dbarray($result)) 
             { 
                 
    $Jump .= $li ) " $row["title"] . ""
                
    //  $li; 
                 
    $Jump .= $this->sublistJump($listJump,$row['id'],$li); 
                 
    $Jump .= " -------------------------------- "
                 
    $li++; 
              } 
             
    $Jump .=  ' '
             return 
    $Jump
        } 
    أستاذ خالد- hilaby: دالتك تقريبآ هى ما أبحث عنها لاكن كيف أخرج جميع النواتج عن طريق foreach او while

    وشكرآ لك من شارك فى الموضوع وياليت تضعلى مثال بسيط لأستخراج العناصر من while || foreach










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

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

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