معهد دعم اتش فى اى بى اس لحلول الويب - Powered by vBulletin


 
 
النتائج 1 إلى 3 من 3

الموضوع: عمل المتواجدون الان

  1. #1
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    عمل المتواجدون الان


    سأشرح بإذن الله طريقة عمل المتواجدون الآن البسيط بإمكانكم بعد فهم الطريقة تطوير السكربت فهي سهله بإذن الله .

    أولاً يجب أن ننشئ جدول في قاعدة البيانات وهو خاص بالمتواجدون الآن ، وهذا الجدول يتم تحديثه باستمرار تلقائياً وسأشرح لكم معنى تحديث نفسه تلقائياً بعد عرض محتوى الجدول



    كود PHP:
                           CREATE TABLE online (
    id int(11NOT NULL auto_increment,
    visitor varchar(100) default NULL,
    timevisit int(11NOT NULL default '0',
    PRIMARY KEY (id)
    TYPE=MyISAM
    id هو رقم المتواجد الآن وهو من نوع int ويتكرر بإضافة 1 .. أيضاً هو مفتاح الجدول
    visitor هنا يتم تخزين الآي ابي أو الـ host
    timevisit وقت التواجد وهو من نوع int ولم نضعه من نوع date
    لأن الوقت سنقوم بإدخاله كأنه نص باستخدام دالة time في الـ PHP

    ما معنى يتم تحديثه باستمرار ؟
    أي أن حالياً المتواجدون الآن مثلاً 5 .. ستجد الجدول يتكون من 5 سجلات وعند دخول أي مستخدم للصفحة ستجد بأنه أضاف سجل جديد وكذلك عند خروج أي مستخدم من الصفحة يتم حذف السجل الخاص به .

    لننئ ملف وليكن اسمه online.php ونضع الكود التالي :
    أولاً بيانات الإتصال والدخول لقاعدة البيانات


    كود PHP:
                           <? $connect=mysql_connect("localhost","username","password") or die (mysql_error());
    mysql_select_db("php",$connect) or die (mysql_error());?>
    الآن لننشئ متغير قيمته دالة .. هذه الدالة خاصة بإظهار الـ host الخاص بالمستخدم
    والدالة الخاصة بإظهار الهوست هي gethostbyaddr :



    نقره لتكبير أو تصغير الصورة ونقرتين لعرض الصورة في صفحة مستقلة بحجمها الطبيعي



    كود PHP:
                           <? $host=gethostbyaddr($_SERVER['REMOTE_ADDR']) ;?>
    المتغير REMOTE_ADDR وضعناه في مصفوفة $_SERVER لأن معظم المواقع لا تدعم خاصة الـ register globals

    الآن لنحدد الوقت الذي تريد إبقاء المتواجدون الآن بالدالة time ونضعه في متغير وليكن $thime_now




    كود PHP:
    <? $time_now=time()-3600?>
    الآن نجري إستعلام في قاعدة البيانات بتفريغ ( حذف محتويات ) الجدول بشرط
    أن يكون الوقت في الحقل timevisit الموجود في القاعدة أصغر من التوقيت الذي قمت بتحديده أنت بالأعلى



    كود PHP:
                           <? mysql_query("delete from online where timevisit<'$time_now'"); ?>
    الآن نجري إستعلام باستخدام الدالة mysql_num_rows ( فائدة هذه الدالة عرض عدد السجلات بالجدول )
    وفي الأعلى قلت إن عدد السجلات هو نفسه عدد المتواجدون الآن !
    ونريد سجلات حقل id ..


    كود PHP:
                           <? 
    // هذا الإستعلام بإظهار جميع السجلات 
    $query=mysql_query("SELECT id FROM online where visitor='$host'")or die (mysql_error());

    // هذه الدالة لإظهار عدد السجلات
    $rows=mysql_num_rows($query);
     
    ?>
    تـابـع

  2. #2
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: عمل المتواجدون الان


    تـابـع

    تمام هالحين .. هالحين عدد المتواجدون الآن ( عدد السجلات ) موجود في المتغير $rows
    نضع شرط أنه لو كان عدد المتواجدون الآن أكبر من صفر يقوم بتعديل الوقت الموجود في حقل الوقت ..



    كود PHP:
                           <? if ($rows>0){
    mysql_query("update online set timevisit='$time_now' where visitor='$host'"); ?>
    وإذا لم يتحقق الشرط ( أي لم يكن هناك متواجدون الآن أنت فقط المتواجد في الصفحة ) يضيف سجل جديد للجدول ببيانات جديدة



    كود PHP:
                           <? 
    } else {
    mysql_query("insert into online (id,visitor,timevisit) values ('null','$host','$time_now')");
    }
     
    ?>
    وفي الواقع أنه عند دخول مستخدم يضيف سجل جديد له وفي نفس الوقت يقوم بتحديث السجل .


    تـابـع

  3. #3
    أدارى
    الصورة الرمزية HVIPS4


    تاريخ التسجيل: Jun 2011
    رقم العضوية: 6
    الدولة: Cairo
    المشاركات: 1,979
    HVIPS4 غير متواجد حالياً

    رد: عمل المتواجدون الان


    تـابـع

    نجري إستعلام لإظهار السجلات :


    كود PHP:
                           <? $rs=mysql_query("select * from online"); ?>
    حلقة تكرار لإستخراج البيانات ( التوقيت ) :



    كود PHP:
                           <?
     
    while ($ro=mysql_fetch_array($rs)){
     
    $t=date('j M Y - H:i',$ro[timevisit]);
    }
     
    ?>
    الآن إظهار عدد المتواجدون الآن ( عدد السجلات ) باستخدام الدالة mysql_num_rows


    كود PHP:
                           $e=mysql_query("select id from online") or die(mysql_error());
    $on=mysql_num_rows($e); 
    echo "عدد المتواجدون الآن هو $on بتاريخ $t";

    كود الصفحة كاملاً :


    كود PHP:
                           <? $connect=mysql_connect("localhost","username","password") or die (mysql_error());
    mysql_select_db("online",$connect) or die (mysql_error());
     
    $host=gethostbyaddr($_SERVER['REMOTE_ADDR']) ;
     
    $time_now=time()-3600
     
    mysql_query("delete from online where timevisit<'$time_now'"); 
     
    // هذا الإستعلام بإظهار جميع السجلات 
    $query=mysql_query("SELECT id FROM online where visitor='$host'")or die (mysql_error());
     
    // هذه الدالة لإظهار عدد السجلات
    $rows=mysql_num_rows($query);
     
    if (
    $rows>0){
    mysql_query("update online set timevisit='$time_now' where visitor='$host'"); 
    } else {
    mysql_query("insert into online (id,visitor,timevisit) values ('null','$host','$time_now')");
    }
     
    $rs=mysql_query("select * from online");
    while (
    $ro=mysql_fetch_array($rs)){
     
    $t=date('j M Y - H:i',$ro[timevisit]);
    }
     
    $e=mysql_query("select id from online") or die(mysql_error());
    $on=mysql_num_rows($e);
     
    echo 
    "عدد المتواجدون الآن هو $on بتاريخ $t";?>
    وبكذا نكون قد انتهينا من برمجة سكربت بسيط - المتواجدون الآن - وأضف عليه من ابداعاتك كأن تضيف حقل جديد للجدول خاص بتسجيل اسم المتواجدون الآن
    وإدخال المتواجدون الآن بالكوكيز ..

 

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

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