صفحة 2 من 2 الأولىالأولى 12
النتائج 16 إلى 22 من 22

الموضوع: الحاجة أم الإختراع ( 1 ) : سكريبت عداد الزوار يعمل على قاعدة البيانات

  1. #16
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    السلام عليكم ..
    أحبتي الكرام ..
    طلب مني الأخ الفاضل زهير مشاط شرح عملية سير البرنامج ..
    و أسأل الله أن يعينني على ذلك ..
    و أي سؤال أنا جاهز بما أستطيع إن شاءالله ..

    بسم الله ..

    ==========
    أولاً بالنسبة لقاعدة البيانات :
    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 .. أو آخذ دورة فيها ..
    إنما هي إجتهادات ..
    والله يوفقنا و إياكم للعمل بمرضاته ..

    رضا ..





    رضا غير متواجد حالياً

  2. #17
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    نسيت أمراً وهو :
    mysql_close();
    و هو يعمل على إغلاق قاعدة البيانات من باب إحتياطي بعد أن كانت هناك عملية إتصال ببداية السكربت ..

    محسن .. تسلم بارك الله فيك ..





    رضا غير متواجد حالياً

  3. #18
    عضو نشيط
    تاريخ التسجيل
    Apr 2002
    المشاركات
    128


    جزاك الله خيرا اخي رضا على جهودك الطيبة ...
    حاولت ان اركب العداد على مجلة نيوك ولكنه لم يعمل ... مع انني طبقت الطريقة ...وقمت بعمل تحديث للصفحة ولكنه لم يعمل ...فما الحل





    __________________
    الحمد لله دائما وابدا
    musa غير متواجد حالياً

  4. #19
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    موسى .. و إياك بارك الله فيك ..
    أعتقد لأنه فيه تعارض ..
    حيث في نفس قاعدة بيانات المجلة هناك جدول مستخدم اسمه counter ..
    لذلك عمل تعارض يمكن ..
    على كل بالأصل بالمجلة فيه نفس العداد السابق لكن ببرمجة مختلفة ..
    تلقاه اللي إسمه الصفحات المستعرضة ..
    هو نفسه هذا يعني ما تحتاج تركب هذا السكربت ..





    رضا غير متواجد حالياً

  5. #20
    عضو نشيط
    تاريخ التسجيل
    Apr 2002
    المشاركات
    128


    الف شكر اخوي رضا ... في الحقيقة ما لقيت الا جدول واحد في القاعدة يحمل اسم counter واعتقد انه هو اللي انا اضفته من خلال هذا الموضوع ... ولكن عندما اخترت بلوك total hits من قائمة المجموعات في المجلة ... اشتغل عداد المجلة ... وجزاك الله الف خير





    __________________
    الحمد لله دائما وابدا
    musa غير متواجد حالياً

  6. #21
    Banned
    تاريخ التسجيل
    Mar 2002
    المشاركات
    192


    أخي رضا ..

    هل العداد الذي استخدمته يقوم بإغلاق ملف البيانات إجراء عملية التحديث؟

    إذا لم يكن هناك مانع، الرجاء وضع شفرته هنا لمقارنتها بشفرتي، وشكراً لك.





    4915 غير متواجد حالياً

  7. #22
    عضو فعال جدا
    تاريخ التسجيل
    Dec 2000
    المشاركات
    2,697


    أخي 4915 ..
    لم أفهم ماذا تقصد ؟!! ..
    إن كنت تقصد العداد الذي شرحته ..
    فأنظر الشفرة الخاصة به بأعلى الصفحة ..
    أما إن كنت تقصد العداد القديم الذي يحفظ العدد على ملف نصي فهذه شفرته :
    <?
    $file = fopen("counter.txt","r+");
    $counter = fread($file, filesize("counter.txt"));
    fclose($file);
    $counter += 1;
    $file = fopen("counter.txt","w+");
    fputs($file, $counter);
    fclose($file);
    echo "$counter";
    ?>
    و نعم هو يقفل ملف البيانات ..
    أنظر الأمر fclose($file); ..
    صدقني ..
    غير العداد حقك و خذ عداد قاعدة بيانات ..





    رضا غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض