| |||||||
| المدوّنات | البحث | مشاركات اليوم | اجعل كافة المشاركات مقروءة |
|
| | LinkBack | أدوات الموضوع |
| |||||
| دالة extract لتعريف حقول قاعدة البيانات كمتغيرات كيف الحال؟؟ آسف عالإنقطاع عن دروس البي إتش بي هالكم يوم إن شاء الله رح أنزل عدد جيد من الدروس اليوم جايب لكم شرح عن دالة مفيدة في ظهرت منذ إصدارة PHP 3.0.7 وحتى الآن .. هذي الدالة هي دالة extract وهي مفيدة بعد استخراج النتائج من قاعدة البيانات عن طريق دالة mysql_fetch_array يعني هذي الدالة تخلي الحقول الموجودة في قاعدة البيانات على شكل متغيرات،، وكل متغير يكون باسم الحقل يعني ناخذ مثال: - لنفترض أن لدينا قاعدة بيانات باسم students وفيها جدول باسم students ونريد استخراج جميع المعلومات الموجودة فيها،، لنفترض أن هذه المعلومات هي username وpassword وmarks وschool وclass سنحتاج للكود التالي لاستخراج النتائج ووضعها في متغيرات ،، لاحظوا :: متغيرات (ليست مصفوفات).. كود PHP: الآن، ما رأيكم لو اختصرنا الخمسة أسطر الخاصة بتعريف المتغيرات بسطر واحد فقط .. إذاً فلتتعرفوا إلى الدالة التالية وهي extract ..: :: [php] // الاتصال بقاعدة البيانات $connect = mysql_connect("localhost","root",""); $select = mysql_select_db("students",$connect); // استعلام إس كيو إل من قاعدة البيانات $sql = "SELECT * FROM students"; // تنفيذ الاستعلام في قاعدة البيانات $result = mysql_query($sql); // استخراج النتائج في مصفوفة هي row while ($row = mysql_fetch_array($result)) { extract($row); } [/php فلنجرب الكود التالي الآن والخاص بطباعة محتويات المتغيرات الخمسة مرتبين تحت بعض : كود PHP: وأن الدالة extract وفرت علينا 5 أسطر في سطر واحد .. ماذا لو كان الجدول يحتوي على 10 حقول أو أكثر ؟؟!! عندها ستلاحظ أهمية هذه الدالة في استخراج البيانات من قاعدة البيانات .. فائدة أخرى لهذه الدالة في نفس المهمة .. وهي عند استخراج البيانات من قاعدة البيانات ، فإنك ستحتاج إلى تعريف كل حقل جديد في قاعدة البيانات كلما احتجت إليه .. يعني إذا كان لديك حقلين في قاعدة البيانات وكتبت المثال الأول فإنه سوف يعرف الحقلين فقط ، وإذا قمت بعد ذلك بإنشاء حقل آخر في نفس الجدول فإن البرنامج لن يقوم بتعريف متغير خاص بالحقل الجديد .. أما باستعمال دالة extract فإن البرنامج سيقوم بشكل تلقائي بتعريف جميع حقول الجدول سواء كنت تحتاجها أم لا ، وسواء كانت قديمة أم جديدة ..!! أرجو أن أكون قد أفدتكم في شرح هذه الدالة .. واعذروني على التقصير .. والسلام عليكم ورحمة الله وبركاته
__________________ أحمد أبو النصر Junior php Developer +20166196074 | |||||
|
| |||||
|
مشكور اخوي ودروس ليس في المفضلة فقط بل في الجهاز مباشرة حفظ .
__________________ إميل سعودي مجاني htaccess بكل بساطة الشفرة الموحدة "يونِكود" (إن من مفاسد هذه الحضارة أنها تسمي الاحتيال ذكاءً، والانحلال حرية، و"الرذيلة فناً" والاستغلال معونة) - مصطفى السباعي | |||||
|
| |||||
|
العفو إخواني وجزاك الله خيراً أخي jadweb.com اخوي سورية فعلاًُ هذا هو المقصد من هذه الدالة ...... لاستخراج كل الصفوف استخدم حلقة while كود PHP:
__________________ أحمد أبو النصر Junior php Developer +20166196074 | |||||
|
| |||||
|
أخ Sn3s : استخدام مصفوفة $row أو المصفوفة الأصلية التي تحتوي على النتائج من دالة mysql_fetch_array لن يعمل خارج جملة while أي بعد إغلاق القوس المتعرج } الخاص بجملة while .... وبعض المبرمجين قد يحتاجون إلى جلب بيانات كاملة لتسهيل العملية .. فكما طرحت في أمثلة الموضوع صعوبة استخدام المصفوفة مقابل دالة extract ... ولكل حرية الاختيار فيما بينهما ... وشكراً لمرورك وتعقيبك يا فتى ......! الاخ qe9h ، العفو وشكراً لمديحك ................. في النهاية .. لاحظوا تاريخ الموضوع .....! 29-12-2005 ...! اذا كان فيه فائدة فلا مانع في رفعه ، لكن اتمنى ان لا يكون ذلك يضايق الإدارة تحياتي ،، sBForum
__________________ أحمد أبو النصر Junior php Developer +20166196074 | |||||
|
| |||||
|
أهلاً أستاذي hilaby ...... نعم في الحقيقة أستخدم E_ALL & ~E_NOTICE .. لأن السماح بأخطاء الملاحظات يتعبني مع بعض السكربتات والتجارب .... لكن سوف أقوم بالتجربة والرد إن شاء الله تعالى .. تحياتي ، sBForum
__________________ أحمد أبو النصر Junior php Developer +20166196074 | |||||
|
| |||||
|
بصراحة بحثت كثيراً في كود extract لم أجد خطأ من نوع الملاحظات فيه Notice .. عدت ونظرت إلى كود الاستخراج العادي : كود PHP: كود PHP: وشكراً لك .... تحياتي ،، sBForum
__________________ أحمد أبو النصر Junior php Developer +20166196074 | |||||
|
| |||||
|
الان لا يوجد مشاكل ,, فقط توجد بعض الملاحظات في تنظيم الذاكره لانك الان تضع القيم الموجوده في المتغير row$ و نسخها الى عده متغيرات "اي يوجد نسختين من نفس القيم" ... حاول ان لا تفعل ذالك ... دائماً فكر في ان السكربت قد يستخدم في موقع عدد زواره بالملايين ... يعني حاول بقدر الامكان ان لا ترهق الذاكره العشوائيه RAM وشكراً | |||||
|
| |||||
|
ايوة وصلت الفكرة عزيزي hilaby ... هل تقصد بذلك أنه يجب علينا حذف $row كاملة ؟؟ أم أن هناك طرق أكثر مناسبة ؟؟ ربما استخدام المصفوفة $row مباشرة دون التخزين في المتغيرات يكون حلاً لهذه المشكلة .... أنتظرك عزيزي ... تحياتي، sBForum
__________________ أحمد أبو النصر Junior php Developer +20166196074 | |||||
|
| |||||
|
نعم .. فقط استخدم المصفوفه row$ مباشر دون تخزين الا اذا كانت لديك خوارزميه تجبرك ان لا فعل ذالك و اصلا المصفوفه row$ سيحذف محتواها من ناتج الداله mysql_fetch_array عندما لا توجد اي سجل "record" جديد في الناتج و سيكون محتوى المصفوفه row$ هي NULL و لذالك يخرج من الداله while لان الدالة while تخرج من الloop عندما تكون الشرط 0 "صفر" او false او NULL وشكراً | |||||
|
| |||||
| اقتباس:
بالنسبة لـ row هي نعم تحذف محتواها عند الخروج من حلقة while حيث أن هذه الحلقة يكون شرطها كما يلي: كود PHP: بالنسبة لمشاكل تنظيم الذاكرة أعتقد أنها لن تؤدي إلى أخذ حيز كبير من الذاكرة .. لكن سيتم التخلص فيما بعد من محتويات مصفوفة $row ...... صحيح، ليس من الجيد أن نقول مصفوفة row لأنه اسم متغير نحن نضعه ... لكن هذا هو الشـــــائع في ذكرها وفي التعامل مع دالة mysql_fetch_array ..... أشكرك بعمق أخي hilaby وأتمنى دائماً أن نناقش أمور البرمجة بنفس الطريقة لأننا افتقدنا روح النقاش في الآونة الأخيرة .... تحياتي لك ولجميع هيئة أعضاء وإدارة سوالف سوفت، sBForum
__________________ أحمد أبو النصر Junior php Developer +20166196074 | |||||
|
![]() |
| أدوات الموضوع | |
| |