صفحة 3 من 3 الأولىالأولى 123
النتائج 31 إلى 40 من 40

الموضوع: مسابقة للمبرمجين.. اكتب الداله التاليه

  1. #31


    اختصار كمان .. لماذا نتعب نفسنا ونعرّف متغيرات جديدة .. الاختصار حلو

    بدل عمل السطر
    كود PHP:
    $exp explode(" ",$word); 
    وتعريفه في متغير جديد نضعه في ال foreach نفسها

    كود PHP:
    function highlight($text,$words,$confirm=true,$pattern,$more='')
    {
     if(
    is_array($words)){
      while(list(,
    $word)=each($words)){
       if(!
    $confirm){
        foreach(
    explode(" ",$word) as $val){
         
    $text preg_replace('/('.$val.')/mi'"<$pattern $more>$1</$pattern>"$text);
        }
       }
       else 
    $text preg_replace('/('.$word.')/mi'"<$pattern $more>$1</$pattern>"$text);
      }
     }
     else 
    $text preg_replace('/('.$words.')/mi'"<$pattern $more>$1</$pattern>"$text);
     return 
    $text;

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





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

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


    عزيزي رومنسي ksa

    كود PHP:
    a.mag_title
    استعلمنا عن اسم المجله الرئيسية

    وهنا اردنا ان نجمع قيمة الزيارات للمجلة الرئيسية مع جميع الزيارات لجميع الاقسام الفرعه التي تنتمي للمجله الرئيسية
    كود PHP:
    a.mag_visits sum(b.mag_visits) as total_visits 
    a.mag_visits = زيارات المجلة الرئيسية
    + = عملية حسابيه في mysql
    sum(b.mag_visits) = جمع جميع الزيارات في المجلات الفرعيه
    as total_visits = خصصنا هذا الاسم لنتاج العملية الحسابيه

    اما
    كود PHP:
    FROM 
        magazines a
    magazines b 
    فاستعلمنا عن جدولين وهم بالحقيقه جدول واحد سمنيا الاول a والثاني b

    لكي نفرق بين الزيارات للمجله الرئيسية والفرعيه (كذلك لاسم المجله، أضف الى ذلك اننا سنحتاجها في بناء الجملة الشرطيه)


    والشرط كان
    كود PHP:
    WHERE 
        a
    .mag_parent_id=AND b.mag_parent_id=a.mag_id 

    كود PHP:
    a.mag_parent_id=
    ان تكون المجله هي مجله رئيسية اي انها لا تنتمي لأي مجله

    وبشرط ان
    كود PHP:
    .b.mag_parent_id=a.mag_id 
    المجله الفرعيه تنتمي للمجله الرئيسية التي نستعلم عنها اي انها لا تنتمي لاي مجله اخرى سوى المجله التي هي في الاستعلام الحالي


    ونجمعهم على اساس اسم المجلات
    كود PHP:
    GROUP BY 
        a
    .mag_title 

    وأخيرا
    كود PHP:
    ORDER BY
        total_visits DESC 
    نقوم بترتيب النتائج تنازليا بحسب الاكثر زيارات
    باستخدام الاسم الذي سبق وخصصناه لناتج العملية الحسابيه وهو total_visits


    ------------


    عزيزي مهندس مصري
    بالتأكيد لن يعرضها لأن الشرط لن يتحقق في inner join
    اتكلم عن
    كود PHP:
    AND b.mag_parent_id=a.mag_id 


    وبصراحه لم اخض بعد في ال left & right join





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

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


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





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

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


    طيب ما رايكم لنطور الكود قليلاً .. ونجعله يعرض حقل جانبي بعدد الملفات الداخلية لكل ملف رئيسي ؟
    عملتها ايضاً ..
    كما وان هناك مشكلة انه اذا لم يجد ملف داخلي سيعرض القيمة العددية = null لان اصلا ناتج الجمع = null اذا لم يوجد ملفات داخلية في الملف الرئيسي
    جرب بنفسك الكود وستجد انه يعطيك حقل الزيارات = null وكذلك اذا عملت (الكود المطلوب في هذه المشاركة ) وهو عدد الملفات الداخلية جنب كل ملف رئيسي سيعطيك null اذا لم يوجد ملفات داخلية ونريده ان يعطي 0 وكذلك في حالة الزيارات يعطينا زيارات الملف الرئيسي فقط

    هل لديكم افكار





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

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


    عزيزي مهندس مصري

    لقد ضعت قليلا
    ارجو ان تشرح مرة اخرى

    ولي عودة ان شاء الله





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

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


    طيب سابادر بوضع ما توصلت اليه طبعاً بعد ارق وسهر ليالي لاحل هذه المشكلة (مشكلة null) لانها عند عرض المجلات انا كنت اريد عملها ببرنامج في لوحة التحكم يعرض كل المجلات بحيث يعرض المجلات الرئيسية فقط وجنبها حقل بعدد الزيارات الكلي و كذلك عدد الملفات الفرعية
    وواجهتني مشكلة (null) نتيجة الجمع في حالة اذا كان الملف ليس له ملفات فرعية وكان ملف رئيسي فقط واستطعت بالتغلب عليها بعد عشرات التجارب وسهر الليالي

    تفضلوا ما توصلت له .. واذا كان عندكم حل آخر ارجو ذكره ..
    كود PHP:
    select a.mag_title, if(isnull(tmp_count.internal_num),a.mag_visits,(a.mag_visits sumb.mag_visits ))) as total_visits,if(isnull(tmp_count.internal_num),0,tmp_count.internal_num) as internal
    from magazines 
    as a
    left join magazines 
    as b on b.mag_parent_id a.mag_id
    left join 
    (select count(mag_id) as internal_num,mag_parent_id FROM magazines group by mag_parent_id) as tmp_count
    on tmp_count
    .mag_parent_id a.mag_id
    where a
    .mag_parent_id =0
    group by a
    .mag_title
    order by total_visits desc 
    نفذ الكود على قاعدة البيانات عندك ستجده سيعرض حقل اضافي باسم internal وبه عدد الملفات الفرعية لكل ملف رئيسي حتى وان لم يكن له ملفات فرعية سيكتب 0
    وساعود لشرح الكود لمن لم يفهمه





    التعديل الأخير تم بواسطة مهندس مصرى ; 09-09-2009 الساعة 12:17 AM
    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

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


    والله بطل.. لا اعتقد اني كنت سأتوصل لنفس الاجابه الا بعد مراجعة الوثائق الخاصه ب mysql والسهر لايام طوال بالضبط كما فعلت انت

    وبما انك جاوبت على السؤال :]

    ننتظر السؤال الجديد





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

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


    والله بطل.. لا اعتقد اني كنت سأتوصل لنفس الاجابه الا بعد مراجعة الوثائق الخاصه ب mysql والسهر لايام طوال بالضبط كما فعلت انت

    وبما انك جاوبت على السؤال :]

    ننتظر السؤال الجديد
    طيب اولاً هل فهمتم المطلوب؟
    كانت هناك مشاكل في الكود لديك ..
    1- لا يمكنه عرض المجلات الرئيسية اذا كان عدد المجلات الداخلية لها =0
    بسبب ان الربط المستخدم inner join كما تفضلت اي اذا لم يجد نتائج في الجدول الايمن سيتجاهل السجل كله ولن يعرضه (وهذا ما حدث عندما حاولت عرض ملف رئيسي ليس له ملفات فرعية),
    لذلك الحل هو باستخدام left join حتى لا يشترط وجود قيمة للجدول الايمن.

    2- بالاعتماد على النقطة 1 لا يمكن تحقيق المطلوب الثاني وهو عرض الملفات الداخلية لكل ملف رئيسي وان كان عدد الملفات الداخلية به =0

    3- مشكلة واجهتني وهي اذا كان عدد الملفات الداخلية =0 يعطي نتائج الجمع = NULL و كذلك يعطي عدد الملفات الداخلية = NULL وهذا هو ما استغرق كل الوقت في الحل
    اي جرب ازالة الشروط if(isnull واعملها نتائج جمع عادية فسيعطيك القيم null (فقط في حالة عدم وجود مجلات فرعية من المجلة الرئيسية) .. والسبب انك ستجمع القيمة على لا شىء (null)
    لذلك عملت شرطين متداخلين اذا كان الملف رئيسي لا يحتوي على ملفات فرعية (null) فسيعطي قيمة الملف الرئيسي فقط ولا يحتاج لجمع قيم الملفات الفرعية

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





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

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


    بالنسبه لي فلله الحمد قد فهمت

    واما هذه
    كود PHP:
    if(isnull(tmp_count.internal_num
    فهي جديده علي

    وما زلنا ننتظر السؤال الجديد





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

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


    جزاك الله خير اخوي DSQ8.com على الشرح










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

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

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