السلام عليكم ..
أحبتي الكرام ..
طلب مني الأخ الفاضل زهير مشاط شرح عملية سير البرنامج ..
و أسأل الله أن يعينني على ذلك ..
و أي سؤال أنا جاهز بما أستطيع إن شاءالله ..
بسم الله ..
==========
أولاً بالنسبة لقاعدة البيانات :
CREATE TABLE `counter`
يقوم هذا الأمر كما لو ترجم بالعربي بإنشاء جدول بقاعدة البيانات يحمل الإسم counter ..
`counter` int(15) NOT NULL default ''
يقوم هذا الأمر بإنشاء حقل بجدول القاعدة يحمل الإسم counter و تحديده بأنه سيكون رقم و ذلك من خلال int و أعتقد حسب علمي البسيط أن 15 تعني عدد الخانات !! ..
ووضعنا أمر إنشاء الحقول بين علامتي القوسين ( ) و ذلك لتحديد الحقول المطلوب إنشائها ..
TYPE = MyISAM;
هذا الأمر فائدته أنه يجعل الحقول قابلة للكتابة و MyISAM نوع من أنواع الكتابة بقاعدة البيانات ..
INSERT INTO counter VALUES ('0');
هذا الأمر يدرج القيمة ( 0 ) في الجدول counter و بالحقل الوحيد counter كذلك الموجودين بقاعدة البيانات ..
و بالنسبة لهذا الأمر لأنه أنشأنا حقل واحد فقط بجدول قاعدة البيانات فلذلك وضعنا القيمة بين ' ___ ' بينما لو كان عندنا حقلين و نود إدارج القيمة صفر فيهما سيكون بهذا الشكل :
INSERT INTO counter VALUES ('0','0');
و يدرج الأمر القيمة حسب ترتيب إنشاء الحقل ..
فلو أنشأنا حقلين الأول counter و الثاني online مثلاً و نود إدارج رقم ( 9 ) في counter و رقم ( 3 ) في online فسنعمل الطريقة التالية :
INSERT INTO counter VALUES ('9','3');
يجب التفرقة بين الحقل و الجدول ..
فلو عندنا جدول ثاني و نود إدارج قيمة فيه فنكرر نفس الأمر مع تغيير إسم الجدول ..
مثلاً لدينا جدول counter و جدول online .. إذاً نضع :
INSERT INTO counter VALUES ('9');
INSERT INTO online VALUES ('3');
هذا فيما يتعلق بإنشاء الجداول و الحقول بقاعدة البيانات و إدراج القيم بها ..
==========
==========
ثانياً بالنسبة للسكربت ..
أعتقد والله أعلم أنه السكربتات التي تشتمل على أكثر من أمر غالباً تبدأ بـ <? php و تنتهي بـ ?> ..
بينما التي تحتوي على أمر واحد غالباً تكون على الشكل <? و بالنهاية ?> و لا أدري عن صحة هذه المعلومة![]()
..
و في حالتنا طبعاً هناك عدة أوامر ..
$dbserver="localhost";
$dbuser="";
$dbpass="";
$dbname="counter";
$table="counter";
هنا يتم توضع معلومات قاعدة البيانات و الجدول في متغيرات و قد تختلف هذه المتغيرات بإختلاف السكربتات ..
فمثلاً هناك سكربتات تكتب سيرفر قاعدة البيانات فقط بكلمة server أو sqlserver و غيرها ..
mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname);
بهذا الأمر يتم الإتصال بقاعدة البيانات مع تحديد المتغيرات و هي بالترتيب ..
حيث يطلب أولاً سيرفر قاعدة البيانات .. ثم غالباً سيواجهه إسم المستخدم و كلمة المرور .. ثم يختار إسم قاعدة البيانات المختارة ..
mysql_query("UPDATE $table SET counter=counter+1")or die("هناك خطأ !!");
هذا الأمر يقوم بعملية إتصال بقاعدة البيانات و عمل تعديل و تحديث على $table و نلاحظ أننا وضعنا قيمة هذا المتغير في معلومات قاعدة البيانات بالسكربت بأنه الجدول counter لذلك كأن الأمر يعني :
mysql_query("UPDATE counter SET counter=counter+1")or die("هناك خطأ !!");
و يتم التحديث أو التعديل على الحقل counter و ذلك بعد تحديده بواسطة الأمر SET ..
و تعني counter=counter+1 أي أنه يتم تعديل قيمة الحقل counter إلى نفس القيمة الحالية + 1 ..
و لعلنا لو تذكرنا أننا أدرجنا القيمة صفر عن إنشاء جدول قاعدة البيانات ..
بمعنى عند تشغيل السكربت لأول مرة سيضيف 1+0 فيصبح العدد بالحقل = 1 .. و هلم مجرة إذا جاء زوار يزداد مرة بعد مرة ..
$tablequery=mysql_query("SELECT counter FROM $table");
بعد أن قمنا بالإتصال بقاعدة البيانات سابقاً يقوم هذا الأمر بالإتصال بجدول معين بقاعدة البيانات و مباشرة يختار حقل معين بالجدول و هو counter ..
$result=mysql_fetch_array($tablequery);
هذا الأمر يعني أن النتيجة النهائية و التي ستظهر للزائر ستكون من خلال عملية الإتصال بالجدول مباشرة tablequery ووضعنا $result كمتغير لعملية طلب معين من حقول الجدول ..
print("$result[counter]");
هذا الأمر يطلب طباعة النتيجة بحقل counter و عرضها على الزائر ..
و إستخدمنا print و هناك أيضاً echo .. و الجدير بالذكر أن جميع الأوامر السابقة لن تظهر للزائر أو المشاهد سوى الأوامر التي تكون إما عن طريق print أو echo ..
فلذلك لن يظهر للزائر سوى الرقم الموجود بالحقل و الذي يتم تحديثه كلما دخل زائر آخر ..
==========
حقيقة أتمنى أن يكون شرح هذا السكربت واضحاً ..
و أعذروني على شرحي الغير منهجي أو غير علمي ..
فوالله أني لم أدرس ال php .. أو آخذ دورة فيها ..
إنما هي إجتهادات ..
والله يوفقنا و إياكم للعمل بمرضاته ..
رضا ..