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

الموضوع: ممكن طريقة جلب المعلمات من قواعد البيانات بحيث ان يكون id بداخل array

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270

    ممكن طريقة جلب المعلمات من قواعد البيانات بحيث ان يكون id بداخل array



    السلام عليكم


    لدينا المتغير التالي

    كود:
    $str = "1,33,4,5,75,5,8,34,45,63,94,12,84,34,23434,53,20,37,88";
    لنفرض اننا قمنا بتحويله الى مصفوفة array


    كود:
    $new = explode($str, ",");

    الان هذه المصفوفة تحتوي id خاص في نتائج في قاعدة البيانات كيف ممكن قرائة النتائج من قاعدة البيانات عندما يكون ال id in array

    كود:
    SELECT id FROM Test WHERE id in_array($new)
    فكيف ممكن تطبيق الامر السابق؟؟

    شكرا جزيلا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر



  2. #2


    التعليمة مكتوبة خطأ أساساً
    كما أني لم أفهم ما تريد

    عموما ما تضعه في التتعليمة ليس array ولكن (1, 2, 3 )
    أرقام مرصوصة ومفصولة ب , وبين قوسين
    وهو من نوع string
    وللحصول عليها حول المصفوفة لنص عن طريف

    كود PHP:
    $array = array(1234);
    $ids implode("," $array); 
    ثم ضع الناتج بين قوسين
    كود PHP:
    $sql "SELECT id FROM Test WHERE id in ($ids)"
    وممكن زيادة بحيث لو كانت المصفوفة فارغة لا يحدث لك خطأ داتابيز

    كود PHP:
    $sql "SELECT id FROM Test WHERE id in (-1,$ids)"
    أو أستخدم دالة شرطية لو كانت المصفوفة فارغة لا ينفذ الكويري

    وكتوضيح بسيط هذه

    كود PHP:
    $array = array(1234); 
    مصفوفة ولكن هذه

    كود PHP:
    $str "1, 2, 3, 4"
    نص string

    الأن وضح سؤالك أكثر أخي





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

  3. #3
    عضو شرف
    تاريخ التسجيل
    May 2007
    المشاركات
    1,647


    هناك خطأ في كود المجروح، التصحيح:

    كود PHP:
    $sql "SELECT id FROM Test WHERE id in ($ids)"
    والاستعلام الثاني:
    كود PHP:
    $sql "SELECT id FROM Test WHERE id in (-1,$ids)"
    * قمت بحذف array فقط من كل استعلام.

    تحياتي، أشرف السمهوري





    __________________
    # اتبعني على Twitter
    # عِرفان ساهم ببناء المحتوى العربي العلمي على الإنترنت!

  4. #4


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





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

  5. #5
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    شكرا جزيلا جميعا
    بارك الله فيكم





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  6. #6
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    السلام عليكم

    اخواني مشي الحال مع هذا الامر
    كود:
      $sql = "SELECT id FROM Test WHERE id in ($ids)";
    ولاكن المشكلة الان اني اريد الترتيب يكون كما هو مرتب في $ids

    يعني $ids = "9,3,5,4,7,33,87,9,7,4";

    فأريد النتائج ان تظهر بنفس الترتيب اي 9 وبعدها 3 وبعدها 5 ...... الخ

    فكيف عمل ذلك؟؟





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  7. #7
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    أهل ممكن يا اخوان؟





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  8. #8


    هتحتاج لعب مصفوفات و LOOP
    عملتها من قبل وسأقولها علي السريع وأتمني أن تجرب حتي تصل

    أولاً حمل نتائج الكويري في مصفوفة لها KEY و VAL
    ال KEY هو رقم النتيجة واللي هو بالطبع رقم من الأرقام الل في IDS
    وال VAL هو كل محتوي تلك النتيجة

    والطريقة كالتالي
    كود PHP:
    while ($myrow MYSQL_FETCH_ARRAY($RESULT))
            {
                
    $files[$myrow['fileid']] = $myrow;
            } 
    الأن أذهب لل ids
    أفصلها في مصفوفة مرة أخري أو هات المصفوفة القديمة قبل عمل implode لها
    ثم قم بعمل لوب
    كود PHP:
    foreach($ids AS $val)
    {
        
    $newfiles[$val] = $files[$val];

    $newfiles ستحوي نفس المصفوفة $files المجلوبة من قاعدة البيانات ولكن بالترتيب اللي في المصفوفة ids
    أو يمكنك داخل اللوب الأخيرة طباعة النتائج في القالب مباشرة وسيتم الطباعة بترتيب ال ids

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





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

  9. #9
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    السلام عليكم


    شكرا جزيلا اخي المجروح

    ممكن توضيح اكثر شوي ؟؟؟ ما فهمت التفاصيل

    ولم افهم هذا السطر تحديدا $files[$myrow['fileid']] = $myrow;


    شكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  10. #10


    هل فهمت هذه ؟
    كود PHP:
    while ($myrow MYSQL_FETCH_ARRAY($RESULT)) 






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

  11. #11
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    نعم اخي الجريح فهمت هذا السطر





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  12. #12


    طيب أخي السطر هذا
    while ($myrow = MYSQL_FETCH_ARRAY($RESULT))

    يجعل كل row من قاعدة البيانات في مصفوفة سميناها $myrow
    فتقوم أنت بتحميل كل المصفوفات في مصفوفة $files بحيث يكون الكي هو الحقل في قاعدة البيانات ال auto increment واللي وضعته لك فرضاً fileid
    والفاليو هو ال row كاملة من قاعدة البيانات

    فقط أعمل التالي
    غير fileid بالحقل البرايمري كي لديك ( اللي أرقامه في ids )
    ثم بعد اللوب أطبع
    print_r($files);
    وستفهم المقصد





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

  13. #13
    عضو فعال جدا
    تاريخ التسجيل
    Jun 2003
    المشاركات
    2,270


    السلام عليكم
    نعم فهمت المسألة نوعا ما ولاكن المشكلة انه لكل id في القاعدة اسم في حقل ثاني فكيف ممكن اعرضهم الاثنين؟؟؟

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

    كود:
    $RESULTS = mysql_query("SELECT id, name FROM test WHERE id IN ($ids)");

    فالان عندما نقوم بعرض النتائج حسب ترتيب ال $ids اريد ايضا عرض ال name المطابق لل id حسب ترتيب ال id

    فكيف ممكن عمل ذلك؟؟ وكيف عرض النتائج بحيث ينتج عنا

    1 name1
    33 name2
    4 name3
    5 name4
    75 name5
    5 name6
    8 name7
    . .
    . .
    . .
    . .
    الخ etc


    وشكرا





    __________________


    عاشت فلسطين وعاشت المقاومة
    http://www.palintefada.com/arabic
    http://www.palissue.com/arabic
    موقع انتفاضة فلسطين - موقع القضية الفلسطينية
    الكاسر


  14. #14


    الطريقة التي وضعتها لك سترتب المصفوفة بالترتيب اللي تريده لل ids
    واللي هو يشير لباقي المعلومات فستكون المعلومات ترتبت معه

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





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





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

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

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