-
PDA

عرض كامل الموضوع : سكريبت عداد الزوار يعمل على قاعدة البيانات


imad
15/07/2005, 00:35
سكريبت عداد الزوار يعمل على قاعدة البيانات

يمكن طرح الموضوع ليس بجديد لكن أحببت أن اشارك به

الحاجة : سكريبت عداد الزوار يعمل على قاعدة البيانات و ذلك لأن أكثر عدادات الزوار تخزن العدد بملف نصي و دائماً ما يواجه الكثيرين مشكلة و هي أنه العداد
( يصفر) أي يحذف نفسه و يبدأ العد من جديد و كنت أنا و كثير ممن أعرفهم قد واجهتنا نفس المشكلة في عدادات الزوار العتيقة هذه .

الحل : سكريبت عداد الزوار يعمل على قاعدة البيانات قمت بإستخلاصه من أحد برامج المقالات ليعمل كعداد زوار خارجي

الإهداء : لكل الاخوة في أخوية
# السكربت :
<?php
$dbserver="localhost";
$dbuser="";
$dbpass="";
$dbname="counter";
$table="counter";
mysql_connect($dbserver,$dbuser,$dbpass);
mysql_select_db($dbname);
mysql_query("UPDATE $table SET counter=counter+1")or die("هناك خطأ !!");
$tablequery=mysql_query("SELECT counter FROM $table");
$result=mysql_fetch_array($tablequery);
print("$result[counter]");
mysql_close();
?>


أعتقد والله أعلم أنه السكربتات التي تشتمل على أكثر من أمر غالباً تبدأ بـ <? 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 ..
فلذلك لن يظهر للزائر سوى الرقم الموجود بالحقل و الذي يتم تحديثه كلما دخل زائر آخر ..


#
CREATE TABLE `counter` (
`counter` int(15) NOT NULL default ''
)
TYPE = MyISAM;
INSERT INTO counter VALUES ('0');



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');

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