• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

M.B.O

مشرف مساعد
  • عدد المشاركات

    851
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة M.B.O

  1. الكتب العلمية تحتاج الى بحث وتجربة كل معلومة تقرأها لذلك اعتقد ان الكتاب الالكتروني هو الانسب بحيث يكون اسهل عليك البحث والتجربة مباشرة، اما الكتاب الورقي ممتازة لقراءة القصص والروايات ومايشابهها، لكن الموضوع في النهاية يعتمد على الشخص وعلى طريقة استيعابه.
  2. تأكد من معلومات الاتصال بقاعدة البيانات مثل اسم المستخدم وكملة المرور كذلك تأكد من عنوان الخادم
  3. بسم الله الرحمن الرحيم والصلاة والسلام على سيدنا محمد وعلى اله وصحبه أجمعين لاحظ كثرة الاستفسارات في عدة منتديات حول موضوع لو كان عندي قائمتين منسدلة select list كيف أغير مثلا ً محتويات القائمة الثانية عندما يحدد المستخدم عنصر معين في القائمة الأولى ، ومثال على ذلك هو الدول والمدن ، أي عندما يختار المستخدم دولة معينة تتغير محتويات المدن إلى مدن الدولة التي حددها المستخدم ، والأمثلة كثيرة على هذا الأمر . [ مثال مباشر على الدرس اضغط هنا ] الموضوع بسيط جدا ً فقط محتاج قليل من التركيز . الامر لايمكن حصره على مثال معين او طريقة معينة الامثلة كثيره وكذلك ربما قد لا نتحتاج لاستخدام قواعد بيانات مثل MySQL ملف XML قد يفي بالغرض او حتى ملف txt لكن حتى تتضح الصورة اكثر بالنسبة للمبتدئين اخترت ان اعمل المثال على قاعدة بيانات MySQL ، ويمكن للشخص اختيار ما يناسبه ولا يقتصر الموضوع على طريقة واحدة . في البداية وقبل كتابة أي أوامر برمجية نحتاج نحلل الموضوع ونفهم الفكرة كيف سوف تتم لان الاكواد قد تختلف من شخص إلى أخر لكن الفكرة واحدة. سأبدأ أولا ً بتحليل قاعدة البيانات كيف سوف تكون ، رغم أنها بسيطة جدا ً لكن زيادة لزيادة الفهم أكثر وتفصيل الأمور . العناصر الأساسية في هذا الموضوع هما عنصرين قد يزيدوا لكن في هذا الدرس سأفترض أنهم عنصرين فقط تسهيلا ً للفهم وسآخذ مثال الدول والمدن. العنصر الأول مثلا ً وليكن هو الدولة countries والعنصر الثاني هي المدينة Cities، إذن سيكون لدي هناك جدول للدول وجدول أخر للمدن , نأخذ أولا ً جدول الدول وسأضع فيه ثلاثة حقول فقط هما رقم الدولة ID وكذلك اسم الدولة name و القيمة value هذه سنستخدمها مع الوسم select بإمكانك أن تضع حقول أكثر حسب رغبتك ، أما في جدول المدن سأضع اربعة حقول الأول رقم المدينة ID والثاني اسم المدينة name والثالث value والرابع countrie_id عبارة عن foreign key من جدول الدول لعمل العلاقة مابين جدول الدول وجدول المدن . سيكون المخطط البياني للجداول بالشكل التالي : هذا هو المخطط البسيط للجدولين وهذا مثال أخر لبعض السجلات في الجدولين : حسنا ً اعتقد أن الفكرة اتضحت الآن بالنسبة لتخطيط قاعدة البيانات , سننتقل إذن إلى تحليل آلية العمل . سنحتاج إلى ملفين PHP الملف الأول نسميه form.php والملف الثانية Cities.php ايضا ً ننشى مجلد للملفات المؤقته بأسم tempCities كذلك لا ننسى مكتبة jQuery - في البداية عند فتح الصفحة ينفذ استعلام على قاعدة البيانات لجلب الدول ووضعها في قائمة منسدلة مثلا ً لنسمي هذه القائمة بـ list1 ، ثم ينفذ استعلام آخر لجلب المدن المتعلقة بالدولة المحددة حاليا ً في list1 ثم يضعها في قائمة منسدلة أخرى ولنسميها list2 ، هذه الخطوة الأولى وهي الافتراضية عند دخول المستخدم إلى الموقع للمرة الأولى . - الخطوة الثانية وهي عندما يقوم المستخدم باختيار عنصر من list1 تتغير القيم في list2 . - سأضيف خطوة أخرى اختياريه لإضافة مزيد من المرونة ، وهي أن الاستعلام في قاعدة البيانات ينفذ مره واحده فقط ثم يتم حفظ القيم في ملف مؤقت على الخادم Server وفي المرة الثانية يتم اخذ البيانات من الملف المؤقت وليس من قاعدة البيانات ، هذا الأمر سيعطي أولا ً سرعة اكبر في جلب البيانات وثانيا ً سيخفف الضغط على الخادم. حسنا ً بعد أن حللنا قاعدة البيانات وتصورنا آلية العمل نبدأ الآن بالتطبيق العملي باستخدام التقنيات التي ستساعدنا في هذه العملية . نأخذ أول خطوة وهي كتابة الهيكلة الأساسية لكودHTML في ملف form.php : <html> <head> <title>Change List</title> </head> <body> <form method="POST" action="#"> <select name="list1" id="Countries"> </select> <select name="list2" id="Cities"> </select> <input type="submit" value="go" /> <form> <div id="loading" style="display:none">Loading</div> </body> </html> لاحظ الكود بسيط جدا ً سأوضح ابرز الأمور فقط . أنشأت نموذج بداخلة قائمتين منسدلة الأولى اسمها list1 والثانية list2 بالإضافة إلى id لكل قائمة هذا الـ id فائدته ستتضح فيما بعد ، لاحظ أنني لم أضع أي خيارات على القائمة والسبب آن هذه الخيارات سيتم جلبها من قاعدة البيانات، أيضا ً أضفت div بداخله نص لكنه غير ظاهر يظهر فقط في فترة تغيير القائمة , هذا الأمر اختياري فقط لإضافة بعض الجماليات بإمكانك الاستغناء عنه ، وسيتضح هذا الأمر لنا في السطور القادمة . حسنا ً الخطوة التالية وهي جلب أسماء الدول ووضعها في list1 ، عن طريق الكود التالي : <select name="list1" id="Countries"> <?php $query = mysql_query("SELECT id,name,value FROM countries"); while($rows = mysql_fetch_array($query)) { echo '<option value="'.$rows['value'].'">'.$rows['name'].'</option>'; } ?> </select> إلى هنا اعتقد انه لا جديد الاكواد مألوفة للكل ، نتقل الآن إلى الخطوة الأهم في هذا الموضوع وهي القائمة المنسدلة الخاصة بالمدن والتي أسميناها list2 القائمة المنسدلة للمدن تأخذ احتمالين ، الاحتمال الأول وهو عند استعراض الصفحة لأول مره تظهر مدن الدولة المحدد افتراضيا ً في القائمة المنسدلة الأولى ، والاحتمال الثاني هو عندما يقوم المستخدم بتغيير الدولة تتغير معها الدولة . سنأخذ أولا ً الاحتمال الأول وهو عند استعراض الصفحة لأول مره . بما أن القائمة المنسدلة للمدن مرنه وغير ثابتة أي تتغير حسب الخيار الموجود في القائمة المنسدلة الأولى وكذلك حسب اختيار المستخدم إذن في هذه الحالة سأستخدم لغة من نوع Client-side حتى تفي بالغرض , سأستخدم لغة الجافاسكربت Javascript واختصارا ً للوقت والجهد سأستخدم مكتبة jQuery كونها ستسهل علينا الأمر خصوصا ً عند التعامل مع تقنية الاجاكس Ajax. بعد تضمين مكتبة jQuery الى مشروعنا سأبدأ بتعريف دالة بلغة الجافاسكربت باسم getCities هذه الدالة هي المسئولة عن تغيير محتويات القائمة المنسدلة للمدن list2 ، تقوم بإرسال قيمة الدولة الى ملف Cities.php ثم يتم الاستعلام عن مدن الدولة في ملف Cities.php بعد المعالجة تقوم دالة getCities بأخذ القيم المرجعة بعد الاستعلام من ملف Cities.php ووضعها في القائمة المنسدلة للمدن list2 ، كود الدالة سيكون كا التالي : function getCities() { // جلب قيمة الخيار المفعل حاليا ً في القائمة المنسدلة للدول var countryValue = $("#Countries").val(); // مسار مجلد الملفات المؤقته var temCity = "tempCities/"; // مسار الملف المؤقت للدولة المحددة في القائمة المنسدلة للدول var tempURL = temCity + countryValue + ".txt"; // يتم استخدام هذا المتغير في حالة لم يكن هناك ملف مؤقت للدولة // يتم ارسال البيانات الى ملف البي اتش بي عن طريق المصفوفة بوست var dataPost = "co_val=" + countryValue; // اظهار رسالة التحميل للمستخدم مابين اختيار الدولة وعرض المدن $("#loading").fadeIn(100); // استخدام تقنية الاجاكس عن طريق مكتبة الجيكوري لجلب مدن الدولة $.ajax( { url : tempURL, // اذا لم يتم العثور على الملف المؤقت لمدن الدولة error : function() { $.ajax({ url : "Cities.php", type : "POST", data : dataPost, success : function(result) { $("#loading").fadeOut(100); // اخفاء القائمة المنسدلة للمدن في حالة لم يتم ادخال اي مدن للدولة (result == "null") ? $("#Cities").hide(0) : $("#Cities").show(0); // اضافة المدن للقائمة المنسدلة للمدن $("#Cities").html(result); } }) }, // جلب البيانات من الملف المؤقت للدولة success : function(result) { $("#loading").fadeOut(100); (result == "null") ? $("#Cities").hide(0) : $("#Cities").show(0); $("#Cities").html(result); } }) } كل سطر برمجي به تعليق للتوضيح , لا مشكلة إذا لم تفهم الكود بشكل كامل سيتضح إن شاء الله في الأسطر القادمة . سأوضح الفكرة العامة للكود بشكل مختصر , مثل ما ذكرت في الاعلى الكود في الأعلى عبارة عن دالة هذه الدالة مهمتها الأساسية هي جلب البيانات من قاعدة البيانات آو من الملف المؤقت , ترسل قيمة الحقل المحدد في القائمة الأولى عن طريقة تقنية الاجاكس باستخدام POST هذا في حالة لم يكن هناك ملف مؤقت , في حالة هناك ملف مؤقت لمدن الدولة يتم جلب البيانات من الملف المؤقت . بعد أن عرفنا الدالة سنقوم الآن باستخدامها ، مثل ما ذكرت في الأعلى آن هناك احتمالين للقائمة المنسدلة الأولى , الاحتمال الأول وضحته بالأعلى وهو عند استعراض الصفحة لأول مره والاحتمال الثاني هو عندما يقوم المستخدم بتغيير الدولة في القائمة الأولى , واختصارا ً للجهد قمت بتعريف الدالة التي بالأعلى وهي التي سنستخدمها في الاحتمالين أي عند البداية وعند تغيير خيارات الدول , وكود استخدام الدالة سيكون بالشكل التالي : $(document).ready(function() { getCities(); $("#Countries").change(function() { getCities(); }) }) قد تلاحظ آن الاكواد غريبة بعض الشيء إذا لم تكن لديك خلفية مسبقة عن مكتبة jQuery أو الجافا سكربت , لذلك أي شي غير واضح لا تنسى أن تسأل عنه حتى أوضحه لك أن شاء الله إلى هنا نكون قد انتهينا من ملف form.php والكود النهائي لهذا الملف يفترض أن يكون بالشكل التالي : <html> <head> <title>Change List</title> <script type="text/javascript" src="jQuery.js"></script> <script type="text/javascript"> function getCities() { // جلب قيمة الخيار المفعل حاليا ً في القائمة المنسدلة للدول var countryValue = $("#Countries").val(); // مسار مجلد الملفات المؤقته var temCity = "tempCities/"; // مسار الملف المؤقت للدولة المفعلة في القائمة المنسدلة للدول var tempURL = temCity + countryValue + ".txt"; // يتم استخدام هذا المتغير في حالة لم يكن هناك ملف مؤقت للدولة // يتم ارسال البيانات الى ملف البي اتش بي عن طريق المصفوفة بوست var dataPost = "co_val=" + countryValue; $("#loading").fadeIn(100); // استخدام تقنية الاجاكس عن طريق مكتبة الجيكوري لجلب مدن الدولة $.ajax( { url : tempURL, // اذا لم يتم العثور على الملف المؤقت لمدن الدولة error : function() { $.ajax({ url : "Cities.php", type : "POST", data : dataPost, success : function(result) { $("#loading").fadeOut(100); // اخفاء القائمة المنسدلة للمدن في حالة لم يتم ادخال اي مدن للدولة (result == "null") ? $("#Cities").hide(0) : $("#Cities").show(0); // اضافة المدن للقائمة المنسدلة للمدن $("#Cities").html(result); } }) }, // جلب البيانات من الملف المؤقت للدولة success : function(result) { $("#loading").fadeOut(100); (result == "null") ? $("#Cities").hide(0) : $("#Cities").show(0); $("#Cities").html(result); } }) } /* ----------------------- */ $(document).ready(function() { getCities(); $("#Countries").change(function() { getCities(); }) }) </script> </head> <body> <form method="POST" action="gg.php"> <select name="list1" id="Countries"> <?php $query = mysql_query("SELECT id,name,value FROM countries"); while($rows = mysql_fetch_array($query)) { echo '<option value="'.$rows['value'].'">'.$rows['name'].'</option>'; } ?> </select> <select name="list2" id="Cities"> </select> <input type="submit" value="go" /> <form> <div id="loading" style="display:none">Loading</div> </body> </html> نتقل الآن إلى ملف Cities.php هذا الملف دورة الأساسي في جلب المدن من قاعدة البيانات , طبعا ً لا نتعامل معه بشكل مباشر إنما عن طريق الاجاكس من ملف form.php كود ملف Cities.php سيكون بالشكل التالي : $couVal = $_POST['co_val']; if($couVal) { $queryTown = mysql_query("SELECT name,value FROM cities WHERE country_value = '$couVal'"); $num = mysql_num_rows($queryTown); if($num > 0) { while($rows = mysql_fetch_array($queryTown)) { echo '<option value="'.$rows['value'].'">'.$rows['name'].'</option>'; $fp = fopen("tempCities/".$couVal.".txt","a"); fwrite($fp,'<option value="'.$rows['value'].'">'.$rows['name'].'</option>'); } fclose($fp); }else { echo 'null'; } } شرح الكود : أولا ً قمت بتعريف متغير محتواه عبارة عن المصفوفة POST لو رجعنا إلى الخلف قليلا ً سنلاحظ أننا استخدامنا تقنية الاجاكس وكذلك استخدمنا POST لإرسال البيانات إلى ملف Cities.php ، مرننا البيانات عبر قيمة co_val البيانات التي أرسلناها هي عبارة عن قيمة الخيار المحدد حاليا ً في القائمة المنسدلة للدول , نرسل هذه القيمة إلى ملف Cities.php ثم نستعلم عن المدن المتعلقة بهذه الدولة , إذن المتغير couVal يحتوي على قيمة Value للمدينة المحدد في القائمة المنسدلة للدول . في السطر التالي قمت بوضع شرط لاختبار أن هناك فعلا ً قيم مرسلة ، هذه القيمة هي عبارة عن رمز الدولة ليتم الاستعلام عنه ثم في الأسطر التالية قمت بعملية استعلام عادية وطباعة القيم , الأمر المهم الأخر في هذا الكود هو أنني قمت بتنفيذ دالة fopen لعمل ملف مؤقت في مجلد tempCities هذا الملف حتى لا يتم الاستعلام مره أخرى من قاعدة البيانات ويتم اخذ البيانات من الملف المؤقت للتخفيف على الخادم وكذلك للسرعة . إلى هنا انتهى الدرس , اعذروني إذا كانت هناك أي أخطاء أو لم أقم بإيصال المعلومة بشكل صحيح ، أسعد باستقبال أسئلتكم واستفساراتكم . دمتم بود M.B.O
  4. شكرا على مجهودك اخي الكريم.
  5. مضى وقت طويل على كتابتي للموضوع واعتذر على عدم متابعة الموضوع وقراءة الردود اخي sameh89 اذا كانت لازلت بحاجة لهذا الكود يمكنك مراسلتي على الخاص وسأرسل لك الكود بشكل كامل.   اخي محمد الطاهر الدرس يشرح ما تريده ارجوا مراجعته ويمكن تطبيقه على الدريم ويفر او غيره
  6. كأول خطوة عليك القيام بها هي تحليل قاعدة البيانات وانشاء الجداول اللازمة، هذه اهم خطوة وعلى ضوئها يتم بناء النظام، بإمكانك ارفاق Schema قاعدة البيانات حتى نساعدك في كود البرنامج بشكل أفضل.
  7. حسب مالاحظت في اغلب الكتب، ان الكاتب في يضع خبراته وتجاربة ويكمل عليها بمعلومات من كتب او مواضيع اخرى بحيث لا يعتمد فقط على مالديه من معلومات، يعني كانك تقول ان هذا الكتاب مكمل لكتب اخرى وقليله جدا الكتب التي تجدها فعلا مميزة بماليدها . لذلك ما المانع ان تقرأ كتب اخرى وتقتبسب منها او تترجم بعض جزئياتها لتؤلف كتاب عربي بمحتوى جيد، ثم تعتمد على اسلوب النسخ بحيث تصدر النسخة الاولى بأخطاء كثيرة ثم في النسخ التي تليها تتافدى الاخطاء وهكذا الى ان تصل الى كتاب ذو محتوى ممتاز. اما بالنسبة لموضوع القراء اعتقد انه اذا كل كاتب فكر وركز على هذه النقطة لما كانت هناك كتب تقرأ اتمنى لك التوفيق
  8. موقع ممتاز حاولة حل احد الخوارزميات بس استغربت من شي الي هي الارقام مع الفاصلة ، يعني ايش الفرق مابين 118 و 118.0 <_< ههههه رغم ان الخوارزمية سهله لكنها تحتاج شوية تركيز
  9. مع احترامي للمبرمج لكن الموضوع لا يعتبر انجاز ولا شي، هذا الموضوع مستهلك وكثير ناس طبقوة وتجود مكتبات لهذا الامر هذه مكتبة في هذا الموضوع http://opencv.willowgarage.com/wiki/   وهذا SDK على الدوت نت http://touchless.codeplex.com/   وهذا درس http://www.codeproject.com/Articles/498193/Mouse-Control-via-Webcam   ولو بحث على اليوتيوب بتحصل فيديوهات كثيرة عن هذا الموضوع وبإمكانيات افضل، وعلى ما اظن ان مايكرسوفت عملت جهاز نسيت اسمه يعمل فكرته انك تلعب وتتحرك وحركاتك تطبق على اللعبة
  10. يلزمك اولا ً انشاء قاعدة بيانات عبر php my admin ثم الاتصال بها عبر دالة mysql_connect ثم تحديد قاعدة البيانات عبر mysql_select_db  ثم تنفيذ دوال الاستعلام باستخدام mysq_query
  11. اشتقت لمنتداي المفضل كثيرا ً ، فترة الغياب كانت كبيرة ومبروك على الرجوع مره اخرى وان شاء الله القادم افضل بصراحه كنت اتوقع ان يعود الموقع افضل من الشكل الحالي ، ياريت تعيدون النظر في شكل الموقع على الاقل القديم كان افضل ربي يوفقكم
  12. بغض النظر عن مايكرسوفت او غيرها اعتقد ان تغير تخصصك بناء على طلب جهة ماء يعتبر مشكلة شخصية اكثر مماهي هي مشكلة متعلقة بالجهة هذه ، ربما تكون المشكلة عدم ثقة بالنفس او رغبة لكسب شي معين مثل المال او غيره.
  13. إختراق

    حسيت انها رواية خيالية ، خيالك واسع اخي عماد وقلمك رائع استمر الله يحفظك
  14. اطلع على هذه الروابط راح تفيدك http://stackoverflow.com/questions/8151494/friend-system-in-php-mysql http://www.daniweb.com/web-development/php/threads/168369/php-friends-request-system http://stackoverflow.com/questions/3385589/how-to-create-facebook-like-friends-system-in-php-with-mysql
  15. جرب برنامج IDM ومسك الكلمة وهذا هو رابط الكلمة http://www.howjsay.com/mp3/name.mp3 جرب تغير كلمة name الى الكلمة الي تريدها وراح يتحمل معك الصوت
  16. روح على لوحة التحكم ثم اختر Administrative Tools ( أدوات إدارية ) ثم اختر Services ( الخدمات ) ثم ابحث عن الخدمة التي تبدأ بعنوان Apache وانقر بيمين الماوس عليها ثم اختر Start ( بدء ) . اذا كان شغال سوي له ايقاف ثم شغل من جديد
  17. رائع اخي الكريم شكرا على مجهودك
  18. أيهم تفضل ؟

    أي الأربعة أنت ؟ بالنسبة لي البرمجة هي عشق وهوس ومهنة وخلال 6 سنوات مريت بكل المراحل التي ذكرتها والان اعتبر نفسي Developer واسعى للوصول الى مستوى Software Engineer ربما هذا الامر نسبي هناك طلبة باكلريوس وربما ماجستير لديهم علم بهذه الامور لكن في الواقع العملي هم مجرد Scripter او Coder التسميات وتحزين المعلومات لا يهم ، مايهم هو ما يستطيع المبرمج ان يفعله على ارض الواقع
  19. الأخ الكريم/الأخت الكريمة السلام عليكم ورحمة الله وبركاته. مرحباً بكم في منتدى الفريق العربي للبرمجة تأسف إدارة المنتدى لغلق الموضوع وذلك لمخالفته قوانين المشاركات، فقرة طلب حل الواجبات والتمارين. قواعد طرح المشاركات http://www.arabteam2000-forum.com/index.php?showtopic=29343 شاكرين لكم حُسن تعاونكم
  20. عفوا اختي ولكن من باب الفائدة اعتقد ان هناك مشكلة في قاعدة البيانات عندك مثل ماقال الاخ Hamdan Taima موضوعك اختي لا علاقة له بالجلسات Sessions ولا النطاق الفرعي sub domain تحليلك لقاعدة البيانات اعتقد غلط. اعتقد قاعدة البيانات المفروض تكون كذا. School ------------ ID SchoolName EduAdministration Headmaster ------------ ID Username Password SchoolID Students --------------- SN Name Type Religion SchoolID الان تعملي البرنامج عادي عندما يدخل المدير ممكن تحفظي في الجلسة فقط رقم المدرسة SchoolID وعند اضافة طالب فقط تستخدمي رقم المدرسة لا داعي لحفظ نص المدرسة والادارة التعليمية لانه ممكن تحصل لك مشاكل