|
إنضمامك إلي منتديات استراحات زايد يحقق لك معرفة كل ماهو جديد في عالم الانترنت ...
انضم الينا
#1
| ||
| ||
بسم الله الرحمن الرحيم الحمد لله والصلاة والسلام على سيدنا محمد علية افضل الصلاة واتم التسليم اللهم ليسى لنا علم إلا بما علمتنا وسع علمك كل شيء سبحانك ياذا الجلال والاكرام اللهم علمنا ماينفعنا انك قادر على كل شيء اما بعد السلام عليكم ورحمة الله وبركاتة يمكنكم متابعة الدرس الاول من الرابط التالي قبل البدء بمتابعة هذا الشرح يفضل الرجوع للدرس الاول لفهم المبادئ http://www.traidnt.net/vb/traidnt2403299/ اليوم ان شاء الله ببدأ معاكم درس 2 وهو برمجة كلاس لادخال البيانات للقاعدة. وسيتم برمجة الكلاس بحيث يكون منفصل عن ملف ادخال البيانات + سيتم استخدام كلاس mysqli وسنستخدم في الادخال prepare bind_param execute قبل البدأ وجب ان انوه ان هذا الدرس لمساعدة المبتدئين في البرمجة للتفكر اكثر في الكلاسات وطريقة عملها فلا يخطر ببالك حاليا اني اقوم ببرمجة كلاس ادخال متعدد او التخاطب مع الكلاس للأدخال لاكثر من جدول فهذا الشرح فقط للرقي بالمبتدئين من الاكواد الاعتيادية إلى بنية الكلاسات + التخلص من mysql وتعويضها بداول mysqli . في هذه الدرس سوف نتخلص بأذن الله من الكود التالي رمز PHP: $add = mysql_query("insert into table() values()"); وتعويضه بـ كلاس mysqli + استخدام prepare و bind_param و execute نتوكل على الله اولا نقوم بإنشاء قاعدة بيانات ![]() تابع ![]() الخطوة 3 ![]() لا تنسى وضع id تلقائي PRIMARY KEY + AUTO_INCREMENT او قم بزرع الكود التالي بعد انشاء القاعدة ليتم اضافة الجدول رمز PHP: CREATE TABLE IF NOT EXISTS `news` ( `id` int(11) NOT NULL auto_increment, `title` varchar(50) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=ucs2 AUTO_INCREMENT=1 ; ---------------------------------------------- بعد انشاء قاعدة البيانات نقوم بانشاء مجلد وليكن اسمة class داخلة نقوم بإنشاء مجلدين ![]() نقوم بإنشاء ملف داخل مجلد cofing وليكن اسمة cofing.php نكتب داخلة كود ملف الاتصال التالي مع تغير مايلزم رمز PHP: $host = "localhost"; // اسم الخادم $dbuser = "root"; // اسم المستخدم $dbpass = "123"; // الرقم السري للمستخدم $dbname = "dbnews"; // اسم قاعدة البيانات $db = new MySQLi($host,$dbuser,$dbpass,$dbname); $db->query("SET NAMES 'utf8'"); بعد انشاء القاعدة وربطها بكود الاتصال الان مايهمنا هو متغير كود الاتصال اعتقد الكود لا يحتاج شرح كلة متغيرات الاتصال وهذا معروف مايهمنا هو المتغير رمز PHP: $db الذي قمنا به بتشغيل الكأئن الان قبل برمجة الكلاس راح نكتب كود الفورم اولا نفتح ملف وليكن اسمة insert.php ونحفظة في مجلد class ![]() اولا نقوم بكتابة كود الفورم داخل الملف رمز PHP: نضيف input من نوع text واسمة c_title لنكتب فية عنوان الخبر رمز PHP: title : ثم نقوم بإضافة كود من نوع textarea وباسم cont رمز PHP: title : content : وأخيرا نقوم بإضافة كود input من نوع submit وباسم add لارسال البيانات رمز PHP: title : content : ليصبح عندنا هذا الفورم ![]() طبعا بمكانكم تجميل الفورم او الصفحة بإللي يناسبكم انا شرحي هنا يختصر على البرمجة استقبال البيانات وارسالها وماحبيت اضع اكواد جمالية حتى مااشتت الانتباه. اوك نكمل بعد ماقمنا بعمل ملف insert.php ننشئ ملف جديد وليكن اسمة class_insert.php نحفظة داخل مجلد s_class ![]() الان نقوم ببرمجة الكلاس داخل الملف نقوم بانشاء الكود التالي لفتح بنية الكلاس + اسم insers للكلاس رمز PHP: class insers{ } الان نقوم بتعريف المتغيرات رمز PHP: class insers{ // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا } نقوم بتعريف المتغيرات داخل فانكشن الان ننشئ function داخل الكلاس وليكن اسمها insert_data ليصبح الكود رمز PHP: class insers{ // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا #================= public function insert_data(){ }// close function }// close class داخل الفانكشن اولا نقوم بجلب متغير الاتصال بالقاعدة اللي قلت علية انه هو المهم بدالة global رمز PHP: global $db; ثم نقوم بتعريف المتغيرات إللي كتبناها اعلى بالكلاس اول كود وهو كود زر الارسال رمز PHP: $this->subm = $_POST['add']; // اسم انبت زر الارسال اكيد عرفتو وش معنا $this في الدرس الاول إللي اعتمدنا علية من اخوي سعودي اوكي نكمل بعدين قمنا بكتابة كود البست إللي كنت تكتبه بالبرمجة العادية وداخلة اسم input حفظ الخبر ( وبالتحديد زر الارسال ) باقي لدينا input عنوان الخبر + textarea كود تعريف عنوان الخبر رمز PHP: $this->ti = $_POST['c_title']; // = اسم انبت عنوان الخبر كود تعريف التكست اريا محتوى الخبر رمز PHP: $this->co = $_POST['cont']; // = اسم التكست اريا ليصبح الكود رمز PHP: class insers{ // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا #================= public function insert_data(){ global $db; #========================== $this->subm = $_POST['add']; // اسم انبت زر الارسال $this->ti = $_POST['c_title']; // = اسم انبت عنوان الخبر $this->co = $_POST['cont']; // = اسم التكست اريا #========================== }// close function }// lose class الان نكمل داخل الفانكشن نقوم بالتحقق اذا تم الضغط على زر ارسال رمز PHP: if(isset($this->subm)){ } ثم نفتح if اخر داخل if الرئيسي لنتحقق من ان عنوان الخبر ليسى فارغ رمز PHP: if(isset($this->subm)){ if(empty($this->ti)){ } } طيب مارآيكم نقوم بإنشاء متغير جديد لرسائل الخطأ اوك ننشئ لان سوف نحتاجة بعدين لظهار الاخطأ في اي مكان نريد داخل ملف insert اللي موجود فية فورم الاضافة اوك نقوم بإضافته اعلى مع المتغيرات وليكن اسمة return رمز PHP: private $return; // متغير اظهار رسائل الخطأ لتكن لدينا هذه المتغيرات داخل بنية الكلاس رمز PHP: #================= // متغيرات البست private $subm; private $ti; private $co; #================= private $return; // متغير اظهار رسائل الخطأ تنبية المتغيرات تعريفها داخل بنيت الكلاس لا احد يضع التعريف داخل الفانكشن نكمل نضع متغير الخطا مع كتابة رسالة الخطأ ليصبح الكود بالشكل التالي رمز PHP: if(isset($this->subm)){ if(empty($this->ti)){ $this->return = "العنوان فارغ"; } } نكمل نتحقق من محتوى الخبر رمز PHP: if(isset($this->subm)){ if(empty($this->ti)){ $this->return = "العنوان فارغ"; }elseif(empty($this->co)){ $this->return = "محتوى الخبر فارغ"; } } ليصبح الكود رمز PHP: class insers{ // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا #================= private $return; // متغير اظهار رسائل الخطأ public function insert_data(){ global $db; #========================== $this->subm = $_POST['add']; // اسم انبت زر الارسال $this->ti = $_POST['c_title']; // = اسم انبت عنوان الخبر $this->co = $_POST['cont']; // = اسم التكست اريا #========================== if(isset($this->subm)){ if(empty($this->ti)){ $this->return = "العنوان فارغ"; }elseif(empty($this->co)){ $this->return = "محتوى الخبر فارغ"; } } }// close function }// lose class الان نقوم بوضع else ليصبح الكود الكامل بهذا الشكل رمز PHP: class insers{ // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا #================= private $return; // متغير اظهار رسائل الخطأ public function insert_data(){ global $db; #========================== $this->subm = $_POST['add']; // اسم انبت زر الارسال $this->ti = $_POST['c_title']; // = اسم انبت عنوان الخبر $this->co = $_POST['cont']; // = اسم التكست اريا #========================== if(isset($this->subm)){ if(empty($this->ti)){ $this->return = "العنوان فارغ"; }elseif(empty($this->co)){ $this->return = "محتوى الخبر فارغ"; } else{ /// هنا سيتم اضافة كود الادخال لقاعدة البيانات }// close else }// close if post submit }// close function }// lose class الان نقوم باضافة كود الادخال لقاعدة البيانات طبعا سيتم ادخال البيانات عن طريق استخدام كلاس mysqli وسنستخدم في الادخال prepare bind_param execute طبعا الطريقة هذة ليسى لها علاقة بالكلاس إللي نقوم ببرمجتة بامكانكم استخدام الادخال العادي اللي هو رمز PHP: $db->query("INSERT INTO news(title,content) values('".$this->ti."','".$this->co."')"); لكن انا حبيت افيدكم بالطرق الاخرى للادخال + الحماية والحديثة لذلك تابعوني سنقوم بأستخدام الطرق المتطورة prepare قبل مانكتب الكود خلونا نعرف متغير لكي يفيدا في رسائل الاخطأ الاستعلام وليكن اسمة quer او اي اسم يريحك لتكون عندنا 5 متغيرات للان وإللي هي رمز PHP: // متغيرات البست private $subm; private $ti; private $co; #================= private $return; // متغير اظهار رسائل الخط private $quer; // متغير لتنفيذ الاستعلا اوك بعد مااضفنا متغير خلونا نروح داخل else ونقوم بكتابة كود الادخال رمز PHP: $this->quer = $db->prepare("INSERT INTO news(title,content) values(?,?)"); شرح بسيط رمز PHP: $this->quer المتغير إللي عرفناه رمز PHP: $db هو متغير الاتصال اللي كتبناه في ملف cofing نكمل دالة prepare المسؤلة عن تعريف جداول قاعدة البيانات ليتم الادخال إليها طيب لو جاء شخص وقال انا لدي اكثر من جدولين لدي 4 او 5 او 10 كيف الاستخدام يكون بهذا الشكل رمز PHP: $this->quer = $db->prepare("INSERT INTO news(title,content,userid,username) values(?,?,?,?)"); اضف اسم الحقل ثم اضغ علامة ؟ له يعني لو لدي 6 حقول اذا يجب ان يكون لدي 6 علامات من ؟ الاستفهام هنا تعني المدخل ولكن قبل الادخال يجب تنقيحة وتعريفة بدالة bind_param يعني اذا لدي حقل انتجر او استرنق سوف نعرفة في الدالة الان نضيف دالة bind_param اسفل الكود السابق رمز PHP: $this->quer->bind_param('ss',$this->ti,$this->co); الشرح رمز PHP: $this->quer هو المتغير اللي قمنا باضافتة وقمنا به بتشغيل دالة prepare ثم وضعنا رمز PHP: ->bind_param لتشغيل الدالة نكمل داخل الدالة وضعنا اول بارمتر يساوي ss ماهذا هذا يالغالي اختصار لنوع الحقل نوعة استرنق اي نصي طيب لو غيرة s إلى i معناة اي شيء سيضاف داخل الانبت من نوع نص الدالة ماراح تقبلة وبتحولة لرقم 0 لان i هو اختصار لنوع انتجر ولن يحفظ إلى رقم فقط طيب لو لدي 4 حقول اريد اضافتها 2 حقول نصية و 2 حقول انتجر رقمي الطريقة تكون رمز PHP: $this->quer->bind_param('ssii',$this->ti,$this->co,$this->u,$this->uid); اتمنا اتضحت الفكرة تنبية يجب الانتباه إلى الترتيب اذا كان الحقل الاول هو انتجر تضع i والثاني كذالك لو نصي تضع s إلى الخ.. طبعا الترتيب تاخذه من الدالة السابقة مثال رمز PHP: $this->quer = $db->prepare("INSERT INTO news(title,content,userid,username) values(?,?)"); $this->quer->bind_param('ssis',$this->ti,$this->co,$this->u,$this->uid); اتمنا فهمت هذا ليسى درسي ولكن حبيت اوضح عمل الدالة لكي لا يكن فية مشاكل نرجع لموضوعنا إللي سوف نقوم بحفظ بيانات حقلين فقط إللي هي الخبر + المحتوى اذا سيصبح الكود كامل بهذا الشكل رمز PHP: class insers{ // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا #================= private $return; // متغير اظهار رسائل الخطأ public function insert_data(){ global $db; #========================== $this->subm = $_POST['add']; // اسم انبت زر الارسال $this->ti = $_POST['c_title']; // = اسم انبت عنوان الخبر $this->co = $_POST['cont']; // = اسم التكست اريا #========================== if(isset($this->subm)){ if(empty($this->ti)){ $this->return = "العنوان فارغ"; }elseif(empty($this->co)){ $this->return = "محتوى الخبر فارغ"; } else{ $this->quer = $db->prepare("INSERT INTO news(title,content) values(?,?)"); $this->quer->bind_param('ss',$this->ti,$this->co); }// close else }// close if post submit }// close function }// lose class هل حتى الان ماشين تمام اتمنا شرح الداول السابقة ماشتت انتباهكم طيب نكمل باقي لدينا دالة execute قبل نطبق الدالة مارئيكم باضافة متغير ؟؟ ادري كثرة من المتغيرات ويمكن الاستغنا عن هذا المتغير لكن انا تعمدة اضافة المتغيرات لتفهم اكثر كيف التعامل معاها. اجل نقوم باضافة متغير داخل الكلاس وليكن اسمة done الان لدينا 6 متغيرات رمز PHP: // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا #================= private $quer; // متغير لتنفيذ الاستعلام private $return; // متغير اظهار رسائل الخطأ private $done; // تاكيد عملية الادخال الان نرجع لكودنا السابق ونضيف اسفلة الكود التالي رمز PHP: $this->done = $this->quer->execute(); وهو للتنفيذ بكذا خلصنا من كود الاضافة طيب الان بنقوم بالتحقق هل تم اضافة البيانات رمز PHP: if($this->done){ $this->return ="تمت اضافة الخبر بنجاح"; }// close if done باقي لدينا ارجاع قيمة الدالة function بالكود التالي رمز PHP: return $this->return; لماذا ارجعت قيمة رمز PHP: $this->return هذا هو إللي عرفنا فية الاخطأ + هو إللي سيظهر رسالة تاكيد الاضافة طيب اخيرا باقي لدينا اخر كود وهو كود تشغيل الكلاس رمز PHP: $start = new insers; بكذا يكون كود الكلاس كامل هو رمز PHP: class insers{ // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا #================= private $quer; // متغير لتنفيذ الاستعلام private $return; // متغير اظهار رسائل الخطأ private $done; // تاكيد عملية الادخال public function insert_data(){ global $db; #========================== $this->subm = $_POST['add']; // اسم انبت زر الارسال $this->ti = $_POST['c_title']; // = اسم انبت عنوان الخبر $this->co = $_POST['cont']; // = اسم التكست اريا #========================== if(isset($this->subm)){ if(empty($this->ti)){ $this->return = "العنوان فارغ"; }elseif(empty($this->co)){ $this->return = "محتوى الخبر فارغ"; } else{ $this->quer = $db->prepare("INSERT INTO news(title,content) values(?,?)"); $this->quer->bind_param('ss',$this->ti,$this->co); $this->done = $this->quer->execute(); if($this->done){ $this->return =''; }// close if done }// close else }// close if post submit return $this->return; }// close function }// lose class $start = new insers; الان الكلاس خلصنا منه باقي لدينا خطوة اخيرة لتشغيل عمل الكلاس بنسوي انكلود للكلاس + انكلود للكوفنق وتشغيل فانكشن الموجودة بالكلاس ؟؟ وين بتقول اكيد داخل ملف insert لسى تفتكرة الملف إللي وضعنا فية كود الفورم نفتح ملف insert.php ![]() ونضع داخلة كود الاستدعاء + كود تشغيل الفنكشن رمز PHP: include("cofing/cofing.php"); // جلب ملف الاتصال بالقاعدة include("s_class/class_insert.php"); // جلب ملف الكلاس echo $start->insert_data(); ليصبح الكود الكامل لملف insert هو رمز PHP: include("cofing/cofing.php"); // جلب ملف الاتصال بالقاعدة include("s_class/class_insert.php"); // جلب ملف الكلاس echo $start->insert_data(); ?> title : content : الان اتجة إلى ملف insert.php وقم باضافة اخبار وشف النتيجة اخيرا وش رايكم نضيف ميتا ريفرش رمز PHP: $this->return .=''; عشان نتجنب الادخال المتكرر ليصبح كود الكلاس كامل رمز PHP: class insers{ // متغيرات البست private $subm; // اسم انبت زر الارسال private $ti; // = اسم انبت عنوان الخبر private $co; // = اسم التكست اريا #================= private $quer; // متغير لتنفيذ الاستعلام private $return; // متغير اظهار رسائل الخطأ private $done; // تاكيد عملية الادخال public function insert_data(){ global $db; #========================== $this->subm = $_POST['add']; // اسم انبت زر الارسال $this->ti = $_POST['c_title']; // = اسم انبت عنوان الخبر $this->co = $_POST['cont']; // = اسم التكست اريا #========================== if(isset($this->subm)){ if(empty($this->ti)){ $this->return = "العنوان فارغ"; }elseif(empty($this->co)){ $this->return = "محتوى الخبر فارغ"; } else{ $this->quer = $db->prepare("INSERT INTO news(title,content) values(?,?)"); $this->quer->bind_param('ss',$this->ti,$this->co); $this->done = $this->quer->execute(); if($this->done){ $this->return ='تمت الاضافة بنجاح'; $this->return .=''; }// close if done }// close else }// close if post submit return $this->return; }// close function }// lose class $start = new insers; الدرس التالي ان شاء الله الاستعلام عن البيانات جاري اعداد الدرس واخيرا ان اصبت من الله وحدة وان اخطأت فمن نفسي والشيطان تمنياتي للجميع بالتوفيق ولا تنسوني من صالح دعواتكم اخوكم عبدالله الصور المصغرة المرفقة ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
مواقع النشر (المفضلة) |
| |
![]() | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
[ دورة ] دورة فهم البرمجة بالكلاسات والفانكشن ( الدرس الاول ) تعريف function & class | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 03-12-2014 10:00 PM |
الدرس الثانى الجزء الثانى من دورة جوجل بلس المقدمة من معهد مطور فى بى | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 08-17-2011 02:40 AM |
الدرس الثانى بدورة تعليم البرمجة من معهد (سكيورتى العرب). | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 07-29-2009 11:20 PM |
الدرس الثانى بدورة تعليم البرمجة من معهد (سكيورتى العرب). | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 07-29-2009 10:50 PM |
الدرس الثانى من سلسلة تعليم تقنية البرمجة بدون كود بالفيديو | محروم.كوم | منتدى أخبار المواقع والمنتديات العربية والأجنبية | 0 | 05-25-2009 08:20 PM |