الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استفسارات عن معرفة المتواجدين حاليا في القاعدة وعن تسجيل آخر زيارة

مغلق
بدأه أصيل في 6 يوليو 2006 · 9 رد · 756 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

الاخوة الكرام :

كيف يمكن معرفة الاعضاء الموجدوين داخل قاعدة البيانات ( الاشخاص المسجلين ويتعاملون مع القاعدة ).

وكيف يمكن اظهار آخر زيارة للعضو كانت بتاريخ ......

واخيرا كيف يمكن تسجيل جميع ماقام به العضو منذ تسجيل دخوله ( طبعا انا استخدم الجلسات session )

#2

اخي الكريم اصيل

- بالنسبة للسؤال الاول

يمكن ذلك عندما يقوم العضو بتسجيل الدخول تقوم بتحويل قيمة حقل اسمه مثلا online بقيمة 1 و اذا قام بعمل تسجيل الخروج بقيمة 0

و عند اظهار المتواجدين الان تقوم بعمل استعلام ( كويري) كل القيم لهذا الحقل التي تساوي 1

SELECT * FROM `Table` WHERE `Field` = 1;

بالنسبة للسؤال الثاني :

ايضا عن طريق حقل باسم lastvisit و تقوم بإخال تاريخ اليوم عند تسجيل العضو للدخول

اما بالنسبة للسؤال الثالث :

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

و اتمنى ان اكون قد شرحت شرحا وافيا و مفهما

IsmSalSig.gif

cpyright.jpg

#3

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

ساجرب الطريقة وبالنسبة للسؤال الثالث سانتظر رد احد الخبراء .

لدي مشكلة واقفة معي لدي جدولين members يحوي الحقول id , username , pass , departid

والجدول الثاني department يحوي الحقول departid , department

طبعا المطلوب قائمتين منسدلتين الاولى اختر منها القسم والثاني يظهر بها فقط الاعضاء اللي بهذا القسم فقط

طبعا اريد القراءة من قاعدة البيانات ولامشكلة في اعادة تحميل الصفحة عند تحديد القسم في القائمة الاولى وقد انهيت برمجة هذا الجزء بس ماني عارف اكتب بقية الكود للقائمة الثانية .

#4

هل فكرت كيف يعمل هذا المنتدى

أعتقد أن حل مشكلة تحديد المتواجدون حلياً هي أن تضع في قاعدة البيانات جدولين وسميهما session, و online من نوع heap وهي الجدوال التي تكون بياناتها في الذاكرة ، بمعنى أنك إذا أخذت نسخة من قاعدة البيانات تكون تلك الجداول فارغة ؟

س/ لماذا تكون هذين الجدولين من نوع heap ؟ ج/ ما الفائدة من تخزينها على القرص ونسخها احتياطياً ؟

جقول الجدول session هي userid, sid, time, ip

وحقول الجدول online هي userid, artid يعني رقم المستخدم مع رقم المفال أو الموضوع سمه ما شئت .

وجدول الجلسات يعاد تحديثه عندما يسجل المستخدم دخوله وعند تصفحه في عموم الموقع، فيشار إلى أن المستخدم فلان من المتواجدون في الموقع ، وإن كنت لا ترى له جدوى فلعلك تجد له استخدامات أخرى .

وجدول المتواجدون حالياً يعاد تحديثه عندما يتصفح المستخدم المواضيع ، فيشار إلى أن المستخدم فلان يتصفح هذا الموضوع .

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

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

كيف وما صيغته؟ هذا أتركته للنقاش

أرجو أنني أفدتك بعضاً مما تريد .

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 7 يوليو 2006 في 11:50

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#5

اخي اصل

بعد ما يختار القسم في القائمة الاولى اعمل استعلام (كويري) على رقم القسم لجدول الاعضاء بحيث يقوم

بإحضار جميع الاعضاء بحيث departid للعضو يساوي departid للقسم

و من ثم يقوم بتعبئتهم في القائمة

بالتوفيق ان شاء الله

تم تعديل هذه المشاركة بواسطة IsmSal في 7 يوليو 2006 في 15:55

IsmSalSig.gif

cpyright.jpg

#6

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

فكرة حقل online جميلة لكن كيف اعيد القيمة الى 0 اذا لم يستخدم المستخدم زر تسجيل خروج وانما مثلا استعمل زر X او من ملف إغلاق وأغلق المتصفح نهائيا

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

اخي IsmSal حاولت لكن الكود لم يعمل ومرفق لك ماقمت به :

<?

$con = mysql_connect ("localhost","ali","123");
mysql_select_db("support",$con);
$sql = "SELECT * FROM aqsam ORDER BY id DESC";
$result = mysql_query ($sql,$con);

?>
<form name="test" method="post" action="do.php">
<select size="1" name="D1" dir="rtl" >
<option selected>select qsm</option>
<?
while ($row = mysql_fetch_array($result)) {
?>

<option value="<? echo $row[qsmid]; ?>"><? echo $row[qsmnm]; ?></option>
<?
}
?>
</select>
<?
$sql1 = "SELECT * FROM members WHERE (qsmid = 'D1') ";
$result1 = mysql_query ($sql1,$con);
?>
<select size="1" name="D2" dir="rtl">
<option selected>select usernm</option>
<?
while ($row1 = mysql_fetch_array($result1)) {
?>

<option value="<? echo $row1[qsmid]; ?>"><? echo $row1[usernm]; ?></option>
<?
}
?>
<input type="submit" value="send">
</form>

حيث جدول aqsam يحوي الحقول id , qsmid ,qsmnm

وجدول memebers يحوي الحقول id , usernm ,pass , qsmid

والمطلوب اعتقد واضح لما يحدد في القائمة الاولى القسم qsmnm يظهر في القائمة الثانية usernm اللي في هذا القسم وطبعا qsmid هو اللي يربط بينهما .

#7

جاري الرد اخي

IsmSalSig.gif

cpyright.jpg

#8

الذي يظهر أني طولت عليك بالجداول والذي يكفي جدول واحد وهو online مثلاً وفيه userid, time, atrid هذا يكفي لهذا الغرض لأن من تواجد في قراءة موضوع فهو متواجد في المنتدى مثلاً .

إذا طلب المستخدم هذا الرابط مثلاً index.php?logout ينفذ استعلام تحديث للحقل online

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

إذا ما عرفت لهذا الكود فالمسألة سهلة في كل مرة تتحمل الصفحة ضع هذا الاستعلام

DELETE FROM online WHERE (time < NOW() -900 ):

أنا ما جربت الكود، لأن الجدول لم يزل في الخيال.

بالنسبة لجدول aqsam ويحوي الحقول id , qsmid ,qsmnm لم أفهم ما عمل الجدول وما المراد بالحقول.

عند طلب الصفحة index.php?qsmid=2&list=online

نفذ الاستعلام التالي :

SELECT username FROM memebers WHERE (qsmid=2);

لعل هذا ما تريد .

أعتذر أخي IsmSal لم أر ردك وكنت مشتغلا بالكتابة ، وإن شاء الله سنرى عندك المفيد .

تم تعديل هذه المشاركة بواسطة أبو محمد اللحياني في 7 يوليو 2006 في 22:01

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#9

أخي أبو محمد اللحياني شكرا لك تقريبا الفكرة بدأت توضح بالنسبة لي رح أجرب وأوافيك بالرد .

بالنسبة للكود اللي ارفقته انا هو بخصوص عرض قائمتين منسدلتين تقرأ بيناتهما من قاعدة البيانات بحيث القائمة الاولى يتم اختيار القسم والثانية تظهر الاعضاء حسب القسم المختار من القائمة الاولى .

#10

اخي اصيل ابشر

تفضل هذا الكود

<?php
$con = mysql_connect ("localhost","ali","123");
mysql_select_db("support",$con);
$sql = "SELECT * FROM aqsam ORDER BY id DESC";
$result = mysql_query ($sql,$con);
?>
<form name="do" method="get" action="<?php echo $PHP_SELF;?>" >
<select size="1" name="D1" dir="rtl" onChange="document.forms['do'].submit();">
<option selected="selected">Qsm</option>
<?php
while ($row = mysql_fetch_array($result)) {
?>
<option value="<? echo $row[qsmid]; ?>"><? echo $row[qsmnm]; ?></option>
<?php } ?>
</select>
<?php
$sql1 = "SELECT * FROM members WHERE (qsmid = '$D1') ";
$result1 = mysql_query ($sql1,$con);
?>
<select size="1" name="D2" dir="rtl">
<?
while ($row1 = mysql_fetch_array($result1)) {
?>

<option value="<? echo $row1[qsmid]; ?>"><? echo $row1[usernm]; ?></option>
<?
}
?>
</select>
</form>

و اذا كنت بحاجة للجدول الذي اجريت عليه التجربة فأنا جاهز

بالتوفيق و رعاك الله

تم تعديل هذه المشاركة بواسطة IsmSal في 8 يوليو 2006 في 13:56

IsmSalSig.gif

cpyright.jpg

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…