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

الموضوع: ادخال استعلام في مصفوفة و استخراج البيانات منها

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

    Exclamation ادخال استعلام في مصفوفة و استخراج البيانات منها



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

    المهم .. عندي جدول فيه 6 حقول هذا هو
    كود:
     
    CREATE TABLE `category` (
    `id` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    `subcat` INT(5) NOT NULL, 
    `title` VARCHAR(255) NOT NULL, 
    `t_count` INT(10) NOT NULL, 
    `c_count` INT(10) NOT NULL, 
    `ordercat` INT(5) NOT NULL
    ); 
    INSERT INTO category VALUES (1, 0, 'microsoft word', 4, 9, 1);
    INSERT INTO category VALUES (2, 0, 'microsoft frontpage', 8, 11, 2);
    INSERT INTO category VALUES (3, 2, 'design', 7, 5, 1);
    المهم .. قمت بتخزين الاستعلام في مصفوفه بالطريقة هذه
    كود PHP:
    $result mysql_query("SELECT * FROM category ORDER BY ordercat;");
    while(
    $row mysql_fetch_array($result)) {
    $categories[] = $row;

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

    فلو اريد اطلع نتائج حقل t_count للقسم رقم 3 (مثلا) فكيف؟ لاني كتبت كود طويل و ما ينفع اشوفه هههه :shy:
    طبعا النتيجه لازم تكون 7 :eek2:
    اكيد راح تقولوا لي حط هذا
    $categories[2][4]
    بس المشكله لو انا اريد اعيد الاندكس حق هذه المصفوفه
    يعني مره اعمل له اندكس عن طريق id و مره عن طريق subcat و مره اخذ فقط الاقسام اللي تندرج تحت القسم 2 مثلا





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


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


    عزيزي احمد

    اشلونك وشخبارك


    تفضل هذه الداله تقوم بجلب جميع الاقسام باستعلام واحد وحفظهم في مصفوفه ليسهل التعامل معها فيما بعد
    * ملاحظة عند عدم وجود اقسام سترجع قيمة من نوع boolean وهي الـ FALSE
    كود PHP:
    function get_cats()
    {
        
    $result mysql_query("SELECT * FROM category");
        if(
    mysql_num_rows($result)<1$return FALSE;
        else
        {
            while (
    $row mysql_fetch_object($result))
            {
                
    $return['title'][$row->id]        = $row->title;
                
    $return['subcat'][$row->id]        = $row->subcat;
                
    $return['t_count'][$row->id]    = $row->t_count;
                
    $return['c_count'][$row->id]    = $row->c_count;
                
    $return['ordercat'][$row->id]    = $row->ordercat;
            }
        }
        return 
    $return;

    والآن طريقة التعامل مع تلك المصفوفه..
    وماتريده هو حساب جميع المواضيع الموجوده في جميع الاقسام الرئيسيه منها والفرعية..
    او بحساب جميع المواضيع الموجوده في قسم معين (مع حساب جميع المواضيع الموجوده في الاقسام الفرعية المندرجه منه.. الى مالا نهايه)

    تفضل هذه الداله تقوم بذلك
    كود PHP:
    function cat_topics($cats=array(),$id=NULL)
    {
        if(empty(
    $cats) || !is_array($cats)) $return FALSE;
        else
        {
            
    $return = (int) 0;
            if(
    $id===NULL || !array_key_exists($id,$cats['c_count']) )
                foreach(
    $cats['c_count'] as $count$return += $count;
            else
            {
                
    $return += $cats['c_count'][$id];
                foreach(
    $cats['subcat'] as $child_id => $parent_id)
                    if(
    $parent_id==$id$return += cat_topics($cats,$child_id);
            }
        }
        return 
    $return;

    وتأخذ تلك الدال باراميتران..
    الاول مصفوفه الاقسام التي سبق وان جلبناها من الداله get_cats()
    والباراميتر الثاني.. هو لحساب مواضيع قسم معين.. فإن كانت فارغه سيقوم بارجاع عدد جميع المواضيع

    مثال
    قم بزراعة التالي
    كود PHP:
    CREATE TABLE IF NOT EXISTS `category` (
      `
    idint(10NOT NULL auto_increment,
      `
    subcatint(5NOT NULL,
      `
    titlevarchar(255NOT NULL,
      `
    t_countint(10NOT NULL,
      `
    c_countint(10NOT NULL,
      `
    ordercatint(5NOT NULL,
      
    PRIMARY KEY  (`id`)
    ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=;

    --
    -- 
    Dumping data for table `category`
    --

    INSERT INTO `category` (`id`, `subcat`, `title`, `t_count`, `c_count`, `ordercat`) VALUES
    (10'microsoft word'491),
    (
    20'microsoft frontpage'8112),
    (
    32'design'751),
    (
    43'test'020),
    (
    54'test'020); 
    ومن ثم جرب التالي (مع تغيير مايلزم تغييره)

    كود PHP:
    $conn mysql_connect('localhost','XXX','YYY');
    mysql_select_db('ZZZ',$conn);

    $cats get_cats();
    $all cat_topics($cats);
    $msc cat_topics($cats,2);

    echo 
    "All cats: $all<br />microsoft frontpage cat: $msc"
    بالتوفيق عزيزي





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة

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


    عذرا ..
    كتبت الرد ثم حذفته .. فلم يكن له علاقه بالسؤال





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

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


    شكرا اخوي مبارك على الكود

    الفكره وصلت ...

    يالله متى يصير عندنا كلاس نقدر من خلال نتحكم في فهرسة المصفوفه بشكل كامل ؟؟!!





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

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


    شكرا اخوي مبارك على الكود

    الفكره وصلت ...

    يالله متى يصير عندنا كلاس نقدر من خلال نتحكم في فهرسة المصفوفه بشكل كامل ؟؟!!
    بي اش بي توفر لك دوال كافي للتعامل مع المصفوفوات كل ما عليك هو إجادة إستخدامها
    PHP: Arrays - Manual

    بطريقة جيده ... فهرس المصفوفه دوما رقم ID للصف بدلا من الفهرسه بشكل متسلسل.
    كود PHP:
    <?php
    $result 
    mysql_query("SELECT * FROM category ORDER BY ordercat;");
    while(
    $row mysql_fetch_array($result)) {
    $categories[$row['id']] = $row;
    }
    ?>






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

  6. #6


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

    $a = array("1" => array("catid"=>1, "parentid"=>0, "catname"=>"my name", "catdescription"=>"hi"));

    print_r($a);

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

    وتستخدم معها foreach بكل سهولة

    طورت دوال للتعامل مع الأمر والعرض أو وضعها في بلوك قائمة منسدلة إلخ
    بسطور لا تتعدي ال 9 سطور أحيانا والدالة تنادي نفسها بقيمة إفتراضيتها 0 لجلب الأقسام الرئيسية أولاً





    __________________
    السيف أصدق أنباء من الكتب

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


    اخي العزيز ضيف بما انك دخلت ( و قلما تدخل على موضوع عادي و ترد )
    الفكره هي اني اقوم بالاستعلام مره وحده
    SELECT * FROM category

    الحين اريد اخزن جميع ما سبق في مصفوفه بحيث اني ما اقوم بالاستعلام مره اخرى داخل هذا الجدول

    فمثلا انا عندي في الصفحة

    SELECT * FROM category
    SELECT * FROM category where subcat='id'
    SELECT t_count,c_count FROM category where id='xxx'

    يعني كذا استعلام من نفس الجدول

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





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

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


    المثال التالي يوضح فقط طريقة التعامل مع المصفوفوات ويبين مرونة بي اتش بي ... الاستعلام عن جميع الأقسام من أجل ان توجد عدد الأقسام الفرعية لكل قسم رئيسية غير عملي جدا ... يجب تحديد الاستعلام والاستعلام عن الاقسام التى تحتاجها فقط لعرضها في الصفحه وليس الكل .
    كود PHP:
    <?php
    $result 
    mysql_query("SELECT * FROM category ORDER BY ordercat;");
    while(
    $row mysql_fetch_array($result)) {
        if(
    $row['subcat']) { // اذا افترضنا أن الأقسام الرئيسية يكون subcat صفر او لا شيء
            
    $categories[$row['subcat']][$row['id']] = $row//اضافة القسم الفرعي الىالقسم الرئيسي
            
    $categories[$row['subcat']]['count'] += 1// زيادة عدد الاقسام عن اضافة قسم
            
    $categories[$row['subcat']]['t_count'] += $row['t_count']; // عداد يزيد قيمة من حقل لا اعلم ماهو :) .
            
    $categories[$row['subcat']]['c_count'] += $row['c_count']; // نفس السابق
        
    } else {
            
    $categories[$row['id']]['row'] = $row;
        }
    }
    print_r($categories); //انظر الى شكل المصفوفوه
    ?>
    - بهذه الطريقة يمكن باستعلام واحد بناء مصفوفوه ... تحتوى على جميع البينات التى تريدها وبتقسيم واضح .





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

  9. #9
    عضو نشيط
    تاريخ التسجيل
    Aug 2007
    المشاركات
    73


    ملاحظة: لقد تعمدت فهرسة المصفوفة على اساس اسم حقل الجدول.. لتسهيل فرزها واجراء العمليات الحسابيه عليها
    بافتراض
    كود PHP:
    $cats get_cats(); 
    لمعرفة عدد جميع المواضيع
    كود PHP:
    $t_total array_sum($cats['t_count']); 
    ولمعرفة عدد جميع التعليقات
    كود PHP:
    $c_total array_sum($cats['c_count']); 
    ولمعرفة اي قيمة لحقل معين
    كود PHP:
    echo $cats[X][Y]; 
    حيث ال X = اسم الحقل وال Y = رقم المعرف


    بالتوفيق





    __________________
    مملكة الموت
    =======================
    100(سبحان الله وبحمده ،،، سبحان الله العظيم) = 0 سيئة





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

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

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