منتدى استراحات زايد

منتدى استراحات زايد (http://vb.ma7room.com/index.php)
-   منتدى أخبار المواقع والمنتديات العربية والأجنبية (http://vb.ma7room.com/forumdisplay.php?f=183)
-   -   [ دورة ] فهم البرمجة بالكلاسات ( الدرس الثالث ) الاستعلام عن البيانات وعرضها (http://vb.ma7room.com/showthread.php?t=1419103)

محروم.كوم 03-17-2014 11:20 PM

[ دورة ] فهم البرمجة بالكلاسات ( الدرس الثالث ) الاستعلام عن البيانات وعرضها
 

بسم الله الرحمن الرحيم


الحمد لله والصلاة والسلام على سيدنا محمد علية افضل الصلاة واتم التسليم
اللهم ليسى لنا علم إلا بما علمتنا وسع علمك كل شيء سبحانك ياذا الجلال والاكرام
اللهم علمنا ماينفعنا انك قادر على كل شيء


اما بعد

السلام عليكم ورحمة الله وبركاتة

يمكنك متابعة الدرس السابق من الرابط التالي
http://www.traidnt.net/vb/traidnt2403857/

اما درس اليوم الاستعلام عن البيانات بستخدام class منفصل عن ملف العرض

نتوكل على الله ونبدا

اولا نقوم بانشاء ملف وليكن اسمة class_select.php

ونحفظة في مجلد s_class

http://www.traidnt.net/vb/attachment...95082891-8.jpg

نفتح الملف ونقوم ببرمجة الكلاس لجب البيانات من القاعدة
كما تعلمنا سابقا اولا نكتب بنية الكلاس + اسم للكلاس نسمية select_data

رمز PHP:
class select_data {


}
// close class


نقوم باضافة متغيرات 3 من نوع برايفت داخل الكلاس


رمز PHP:
private $quer;
private
$rows;
private
$data;


المتغير
رمز PHP:
private $quer;


للاستعلام
المتغير
رمز PHP:
private $rows;


نستخدة في الوايل
متغير
رمز PHP:
private $data;


نستخدمة في اظهار البيانات

ليكون كود الكلاس بالشكل التالي
رمز PHP:
class select_data {

private
$quer;
private
$rows;
private
$data;

}
// close class


نقوم الان بعمل فانكشن للاستعلام عن البيانات
رمز PHP:
class select_data {

private
$quer;
private
$rows;
private
$data;

public function
get_data(){

}
// close function

}// close class


نجلب اولا كما تعلمنا متغير الاتصال داخل الفانكشن
رمز PHP:
global $db;


الان نعمل استعلام ونجلب البيانات
رمز PHP:
$this->quer = $db->query("SELECT * FROM news ORDER BY id ASC");


الان نتاكد ان يوجد استعلام صحيح او نظهر خطأ
رمز PHP:
if(!$this->quer){
$this->data['eroor'] = "يوجد خطأ في جلب البيانات";
}


لماذا حولنا المتغير إلى مصفوفة
رمز PHP:
$this->data['eroor']


لان سوف نظهره في مكان معين في ملف العرض عند العرض تتضح لكم الفكرة

ليصبح الكود إلى الان بهذا الشكل

رمز PHP:
class select_data {

private
$quer;
private
$rows;
private
$data;

public function
get_data(){
global
$db;

$this->quer = $db->query("SELECT * FROM news ORDER BY id ASC");
if(!
$this->quer){
$this->data['eroor'] = "يوجد خطأ في جلب البيانات";
}

}
// close function

}// close class


نكمل الان نعمل شرط اخر اذا ماكانت فية بيانات يظهر لا توجد بيانات

رمز PHP:
elseif(!$this->quer->num_rows){
$this->data['eroor'] = "لا توجد اخبار حاليا";

}


ليصبح الكود الحالي بهذا الشكل

رمز PHP:
class select_data {

private
$quer;
private
$rows;
private
$data;

public function
get_data(){
global
$db;

$this->quer = $db->query("SELECT * FROM news ORDER BY id ASC");
if(!
$this->quer){
$this->data['eroor'] = "يوجد خطأ في جلب البيانات";
}elseif(!
$this->quer->num_rows){
$this->data['eroor'] = "لا توجد اخبار حاليا";

}

}
// close function

}// close class


الان نعمل else

رمز PHP:
else{


}
// close else



اذا كان الاستعلام صحيح وتوجد بيانات نقوم بستخراج البيانات
رمز PHP:
while ($this->rows = $thise->query->fetch_array(MYSQLI_ASSOC)){


}
// CLOSE WHILE


شرح بسيط عرفنا مصفوفة الوايل بهذا المتغير
رمز PHP:
$this->rows


وقلنا له المتغير ROWS يساوي متغير الاستعلام ومتغير الاستعلام بيجلب كلاس FETCH_ARRAY
وحددنا داخل الاقواس ان نوع ARRAY هي ASSOC نكمل
لو لم تستطيع فهم هذه سقوم بشرحها في الرد بشكل اوسع
الان نكمل ليكون لدينا هذا الكود

رمز PHP:
class select_data {

private
$quer;
private
$rows;
private
$data;

public function
get_data(){
global
$db;

$this->quer = $db->query("SELECT * FROM news ORDER BY id ASC");
if(!
$this->quer){
$this->data['eroor'] = "يوجد خطأ في جلب البيانات";
}elseif(!
$this->quer->num_rows){
$this->data['eroor'] = "لا توجد اخبار حاليا";

}else{
while (
$this->rows = $thise->query->fetch_array(MYSQLI_ASSOC)){


}
// CLOSE WHILE

}// close else

}// close function

}// close class


الان نكمل ونجلب البيانات

شرح هذه الخطوه
وضعنا المتغير data في مصفوفة وعطيناه اسم عشوائي بمكانك تغيرة
رمز PHP:
$this->data['i']


وقلنا له انة يساوي المتغير rows وايضا مصفوفة لجلب الايدي

رمز PHP:
$this->data['i'] = $this->rows['id'];


وايضا لباقي البيانات
رمز PHP:
$this->data['t'] = $this->rows['title'];
$this->data['c'] = $this->rows['content'];


لو تفتكرن الكود العادي الاول وش كنا نعمل نبرمجة بهذا الشكل

رمز PHP:
$query "select * from news";
while(
$row = mysql_fetch_assoc($query)){
$a = $row['id']
$b = $row['title']
$c = $row['content']
}


لكن بكودنا الحالي نفس الفكرة بس مع تغيرmysql إلى mysqli وتغير المتغيرات إلى متغيرات من بنية class

ليصبح الكود بالشكل التالي
رمز PHP:
while ($this->rows = $thise->query->fetch_array(MYSQLI_ASSOC)){
$this->data['i'] = $this->rows['id'];
$this->data['t'] = $this->rows['title'];
$this->data['c'] = $this->rows['content'];

}
// CLOSE WHILE


وكودنا الحالي الان بهذا الشكل

رمز PHP:
class select_data {

private
$quer;
private
$rows;
private
$data;

public function
get_data(){
global
$db;

$this->quer = $db->query("SELECT * FROM news ORDER BY id ASC");
if(!
$this->quer){
$this->data['eroor'] = "يوجد خطأ في جلب البيانات";
}elseif(!
$this->quer->num_rows){
$this->data['eroor'] = "لا توجد اخبار حاليا";

}else{
while (
$this->rows = $thise->query->fetch_array(MYSQLI_ASSOC)){
$this->data['i'] = $this->rows['id'];
$this->data['t'] = $this->rows['title'];
$this->data['c'] = $this->rows['content'];

}
// CLOSE WHILE

}// close else

}// close function

}// close class


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

الان نكمل نضع متغير اخر لتسيق ظهور النص
رمز PHP:
$this->data['showall']


ونضع بيانات الروز داخل TR
رمز PHP:
$this->data['showall'] .= "

"
.$this->data['i']."
"
.$this->data['t']."
"
;


الخطوه اختيارية ممكن ان تنسق بياناتك كما تحب ان تظهر المهم انا اخترة جداول

نكمل لاحظ اني وضعة ( . ) نقطة قبل علامة = وهذا معناه كرر العملية لان احنا بنستخرج البيانات خارج الوايل

نكمل

نرجع قيمة الدالة
رمز PHP:
return $this->data;


نقوم بتشغيل الكلاس
ليصبح الكود كامل
رمز PHP:



الان خلصنا من ملف الكلاس
باقي لدينا ملف العرض

ننشئ ملف باسم index.php
داخل المجلد الرئيسي class

http://www.traidnt.net/vb/attachment...95082891-9.jpg

داخل الملف نقوم بستدعاء ملف الاتصال + ملف الكلاس

رمز PHP:
include("cofing/cofing.php"); // جلب ملف الاتصال بالقاعدة
include("s_class/class_select.php"); // جلب ملف الكلاس


الان بنقوم بتشغيل الفانكشن ولكن بطريقة مختلفة شوي

اول كنا نشغلها بهذا الشكل
رمز PHP:
$st->get_data();


لكن الان بنعمل تغير بسيط بنضع الفانكشن بمتغير ليصبح

رمز PHP:
$e = $st->get_data();


لماذا انا اسندة للفانكشن متغير
الجواب لاني ساقوم بستخراج المتغيرات الموجودة فيها والتي لم اعرفها بـ public
الان بطلع بيانات المصفوفة كيف بطلعها داخل الملف

لاحظ مو احنا قمنا بتحويل المتغير data إلى مصفوفة
رمز PHP:
$this->data['eroor'] = "يوجد خطأ في جلب البيانات";


لحظ ان لدي متغير data يحمل اسم eroor كيف اظهر الخطأ الجواب بهذا الشكل
رمز PHP:
echo $e['eroor'];


بحيث ان المتغير $e هو المتغير إللي شغلنا به الفانكشن و eroor هو اسم المصفوفة اللي تظهر الخطأ

طيب نكمل

نقوم بعمل table لاظهار البيانات
رمز PHP:


#
عنوان الخبر



والان نستدعي كود المصفوفة إللي وضعناه في الفانكشن باسم showall

بهذا الشكل
رمز PHP:


واخيرا اغلاق table

رمز PHP:



ليصبح كود الاندكس كامل
رمز PHP:



#
عنوان الخبر




باقي خطوه انوه لها
ان الكلاسات تعريف المتغيرات تحملة اسماء او خصائص للمتغير
ومن ضمنها private
و public

private هو خاص تستخدمة داخل بنية الكلاس
public هو عام وممكن ان نطلع بيانات المتغير إللي خاصيتة public خارج الكلاس
طيب انت بتسال لماذا انا لم استخدم public دام انا بطلع المتغير خارج الجواب ليسى إلا اني اعلمك كيف تقدر تتحكم بالكلاس

وسأشرحه هنا لتقدر تفهم الاثنين مع بعض

لاحظ اول شيء نقوم بتغير
رمز PHP:
private $data;


إلى
رمز PHP:
public $data;


واترك كل شيء كما هو في الكلاس ثم تعال لنقم بتشغيل المتغيرات في ملف index

لحظ معي اني قمت بطلب المتغير مباشرة بدون تحويل الداول
رمز PHP:



#
عنوان الخبر




رمز PHP:
$st->data['eroor']


data هو اسم المتغير إللي عرفناه وعطيناه خاصية public وهو عام

لكن انتبة لتطبع المتغير بهذا الشكل وخاصيتة تساوي private

سيظهر لديك الخطأ التالي
رمز PHP:
Fatal error: Cannot access private property select_data::$data in C:\AppServ\www\class\index.php on line 12


لاحظ الخطأ يقول لك ان المتغير $data خاصيتة private لا يستطيع تشغيلة خارج الكلاس

بكذا اكون خلصت درس الاستعلام واي استفسار تحت امركم
الدرس التالي ان شاء الله 4 - برمجة كلاس لحذف بيانات من القاعدة + طريقة الحذف تتم بملف اخر منفصل عن ملف الحذف
جاري اعداد الدرس
واخيرا ان اصبت من الله وحدة وان اخطأت فمن نفسي والشيطان
تمنياتي للجميع بالتوفيق ولا تنسوني من صالح دعواتكم اخوكم عبدالله



الصور المصغرة المرفقة http://www.traidnt.net/vb/attachment...5082891t-8.jpg http://www.traidnt.net/vb/attachment...5082891t-9.jpg


الساعة الآن 07:29 AM

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2 TranZ By Almuhajir


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227