- الرئيسية
- ما الجديد !
-
الصفحات▼
الصفحات
أهلا وسهلا بك زائرنا الكريم في منتدى دعم PBBoard الرسمي، لكي تتمكن من المشاركة ومشاهدة جميع أقسام المنتدى وكافة الميزات ، يجب عليك إنشاء حساب جديد بالتسجيل بالضغط هنا أو تسجيل الدخول اضغط هنا إذا كنت عضواً .
سؤال برمجي للأخ مشراق
-
موضوع مغلق
-
15-09-2010 05:52 مساءً
-
abu_Rabihمعلومات الكاتبالأعضاءعضو فعال
- انضم في :
- 02-08-2009
- رقم العضوية :
- 78
- المشاركات :
- 245
- الدولة :
- الجمهورية العربية السورية
- الجنس:
- تاريخ الميلاد :
- 2-12-1990
- قوة السمعة:
- 678
-
السلام عليكم
أخي سليمان ... وأنا أبرمج هاك من قرأ الموضوع ... وضعت حقلا ضمن pbb_subject اسمه who_visit
ثم كتابة كود تحديث يتم من خلاله اضافة العضو الذي قام بزيارة الموضوع إلى who_visit
لكن المشكلة التي أربكتني ... كيف سأستخرج المعلومات من هذا الحقل who_visit
هل أستخدم الدالة Get list أو ماذا أفعل ؟؟؟؟
-
تم تحرير الموضوع بواسطة :Dr.ZoCo بتاريخ: 15-09-2010 05:54 مساءً
-
-
سؤال برمجي للأخ مشراق15-09-2010 10:23 مساءً [1]
-
Solimanمعلومات الكاتبالادارة العامةPBBoard developer
- انضم في :
- 18-07-2009
- رقم العضوية :
- 1
- المشاركات :
- 13373
- الدولة :
- KSA
- الجنس:
- الدعوات:
- 55
- قوة السمعة:
- 81696
- موقعي:
- زيارة موقعي
-
وعليكم السلام ورحمة الله وبركاتة ،،
عن نفسي لا أفضل الطريقة التي اتبعتها
بدل من ان تضيف حقل اضف جدول مستقل لكي لا تزيد من حمل جدول الـ pbb_subject
مثال لبنية الجدول :
CODECREATE TABLE `pbb_who_visit_subjects` ( `id` int(9) NOT NULL auto_increment, `subject_id` int(10) NOT NULL, `member_id` int(10) NOT NULL, `username` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
يعيب هذه الطريقة انها طويلة حبتين وتسلتزم تعديل عدة ملفات واضافة كلاس جديد للـ Engine لكنها الأفضل والأضمن والأسهل في عمليات الأستخراج والحساب والتنظيم ..
عموماً كيف تمت عملية ادخال الأسماء في الحقل في الطريقة التي استخدمتها هل تم الفصل بين الأسماء بعلامات مثل فاصلة او غير ذلك !!
اطرح طريقة الأدخال لأضع لك طريقة الأستخراج-
تم تحرير المشاركة بواسطة :Soliman بتاريخ:15-09-2010 10:26 مساءً
-
-
سؤال برمجي للأخ مشراق16-09-2010 01:31 صباحاً [2]
-
abu_Rabihمعلومات الكاتبالأعضاءعضو فعال
- انضم في :
- 02-08-2009
- رقم العضوية :
- 78
- المشاركات :
- 245
- الدولة :
- الجمهورية العربية السورية
- الجنس:
- تاريخ الميلاد :
- 2-12-1990
- قوة السمعة:
- 678
-
فعلا اخطأت أخي سليمان لأنني استخدمت الدالة update في عملية الأدخال وفي كل مرة
يدخل أسما واحدا فقط
ويلغي البقية
هذا هو الكود وضعنه في ملف topic.module.php به دالتين احداهما لادخال الأسماء والأخرى لعرضها
CODEfunction who_visit() { global $PowerBB; $SubjectArr = array(); $SubjectArr['field'] = array(); $SubjectArr['who_visit'] = $PowerBB->_CONF['rows']['member_row']['username']; $SubjectArr['where'] = array('id',$PowerBB->_GET['id']); $Insert = $PowerBB->subject->InsertVisitor($SubjectArr); } function __GetVisitors() { global $PowerBB; $SubjectArr = array(); $SubjectArr['where'] = array('id',$PowerBB->_GET['id']); $SubjectArr['order'] = array(); $SubjectArr['order']['field'] = 'who_visit'; $SubjectArr['order']['type'] = 'DESC'; $SubjectArr['proc'] = array(); $SubjectArr['proc']['*'] = array('method'=>'clean','param'=>'html'); $PowerBB->_CONF['template']['while']['visitors']=$PowerBB->subject->GetVisitorList($SubjectArr); $PowerBB->template->display('who_visit'); }
وشكرا على الرد
-
-
سؤال برمجي للأخ مشراق16-09-2010 03:18 صباحاً [3]
-
Solimanمعلومات الكاتبالادارة العامةPBBoard developer
- انضم في :
- 18-07-2009
- رقم العضوية :
- 1
- المشاركات :
- 13373
- الدولة :
- KSA
- الجنس:
- الدعوات:
- 55
- قوة السمعة:
- 81696
- موقعي:
- زيارة موقعي
-

حسناً لدي وقت فراغ اكثر من 10 دقائق
اليك طريقة عمل هذا الهاك بشكل احترافي اكثر ..
1- أنشأ ملف php جديد باسم who_visit_subject.class.php
وضع به الكلاس التالي :
CODE<?php /** * PowerBB Engine - The Engine Helps You To Create Bulletin Board System. */ /** * @package : PowerBBWhoVisitSubject (WhoVisitSubjects) * @author : MSHRAQ abu-rakan ([email protected]) * @start : 7/12/2010 , 03:25 AM */ class PowerBBWhoVisitSubject { var $id; var $Engine; function PowerBBWhoVisitSubject($Engine) { $this->Engine = $Engine; } /** * Insert new WhoVisitSubject * * @param : * Oh :O it's a long list */ function InsertWhoVisitSubject($param) { if (!isset($param) or !is_array($param)) { $param = array(); } $query = $this->Engine->records->Insert($this->Engine->table['who_visit_subject'],$param['field']); if ($param['get_id']) { $this->id = $this->Engine->DB->sql_insert_id(); } return ($query) ? true : false; } /** * Get the list of WhoVisitSubject * * $param = * array( 'sql_statment' => 'complete SQL statement', * 'proc' => true // When you want proccess the outputs * ); * * @return : * array -> of information * false -> when found no information */ function GetWhoVisitSubjectList($param) { if (!isset($param) or !is_array($param)) { $param = array(); } $param['select'] = '*'; $param['from'] = $this->Engine->table['who_visit_subject']; $rows = $this->Engine->records->GetList($param); return $rows; } /** * Get WhoVisitSubject info * * $param = * array( 'id' => 'the id of Supermemberlogs'); * * @return : * array -> of information * false -> when found no information */ function GetWhoVisitSubjectInfo($param) { if (!isset($param) or !is_array($param)) { $param = array(); } $param['select'] = '*'; $param['from'] = $this->Engine->table['who_visit_subject']; $rows = $this->Engine->records->GetInfo($param); return $rows; } function GetWhoVisitSubjectNumber($param) { if (!isset($param)) { $param = array(); } $param['select'] = '*'; $param['from'] = $this->Engine->table['who_visit_subject']; $num = $this->Engine->records->GetNumber($param); return $num; } /** * Check if the who_visit_subject exists in database or not */ function IsWhoVisitSubject($param) { if (!isset($param) or !is_array($param)) { $param = array(); } $param['select'] = '*'; $param['from'] = $this->Engine->table['who_visit_subject']; $num = $this->Engine->records->GetNumber($param); return ($num <= 0) ? false : true; } } ?>
وارفعه على المسار التالي :
CODEengine/systems/who_visit_subject.class.php
2- حرر ملف : engine/Engine.class.php
وابحث عن :
CODE$files[] = ($CALL_SYSTEM['FRIENDS']) ? 'friends.class.php' : null;
اضف اسفله :
CODE$files[] = ($CALL_SYSTEM['WHOVISITSUBJECT']) ? 'who_visit_subject.class.php' : null;
وابحث عن :
CODEvar $friends;
اضف اسفله :
CODEvar $who_visit_subject;
وابحث عن :
CODE$this->table['friends'] = $this->prefix . 'friends';
اضف اسفله :
CODE$this->table['who_visit_subject'] = $this->prefix . 'who_visit_subject';
وابحث عن :
CODE$this->friends = ($CALL_SYSTEM['FRIENDS']) ? new PowerBBFriends($this) : null;
أضف اسفله :
CODE$this->friends = ($CALL_SYSTEM['WHOVISITSUBJECT']) ? new PowerBBWhoVisitSubject($this) : null;
أغلق الملف واحفظة ..
3- حرر ملف common.php
وابحث عن :
CODE$CALL_SYSTEM['FRIENDS'] = true;
اضف اسفله :
CODE$CALL_SYSTEM['WHOVISITSUBJECT'] = true;
أغلق الملف واحفظة ..
4- اضف الجدول التالي في قاعدة البيانات :
CODECREATE TABLE `pbb_who_visit_subjects` ( `id` int(9) NOT NULL auto_increment, `subject_id` int(10) NOT NULL, `member_id` int(10) NOT NULL, `username` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
5- حرر ملف الـ modules/topic.module.php
وابحث عن :
CODE$PowerBB->template->display('subject_top');
اضف بعده :
CODEif ($PowerBB->_CONF['member_permission']) { $WhoVisitSubjectInfoArr = array(); $WhoVisitSubjectInfoArr['where'] = array('subject_id',$PowerBB->_GET['id']); $WhoVisitSubjectInfo = $PowerBB->who_visit_subject->GetWhoVisitSubjectInfo($WhoVisitSubjectInfoArr); if (!$PowerBB->who_visit_subject->IsWhoVisitSubject(array('where' => array('member_id',$PowerBB->_CONF['rows']['member_row']['id'])))) { $WhoVisitSubjectArr = array(); $WhoVisitSubjectArr['field'] = array(); $WhoVisitSubjectArr['field']['username'] = $PowerBB->_CONF['rows']['member_row']['username']; $WhoVisitSubjectArr['field']['member_id'] = $PowerBB->_CONF['rows']['member_row']['id']; $WhoVisitSubjectArr['field']['subject_id'] = $PowerBB->_GET['id']; $insert_visit_subject = $PowerBB->who_visit_subject->InsertWhoVisitSubject($WhoVisitSubjectArr); } }
وابحث عن :
CODE$PowerBB->template->display('topic_end');
اضف فوقه :
CODE$VisitSubjectArr = array(); $VisitSubjectArr ['where'] = array('subject_id',$PowerBB->_GET['id']); $PowerBB->_CONF['template']['while']['WhoVisitSubjectList'] = $PowerBB->who_visit_subject->GetWhoVisitSubjectList($VisitSubjectArr); $VisitSubjectNumber = $PowerBB->who_visit_subject->GetWhoVisitSubjectNumber($VisitSubjectArr); $PowerBB->template->assign('VisitSubjectNumber',$VisitSubjectNumber);
أغلق الملف واحفظة ..
6- حرر قالب : topic_end.tpl
وابحث عن :
CODE{template}show_tags_topic{/template}
اضف اسفله :
CODE<table border="0" cellspacing="1" class="border" width="98%" align="center"> <tr> <td width="98%" class="thead1" align="right">الأعضاء الذين شاهدوا الموضوع {$VisitSubjectNumber} </td> </tr> <tr> <td width="98%" class="row1" align="right"> {Des::while}{WhoVisitSubjectList} <a href="u{$WhoVisitSubjectList['member_id']}">{$WhoVisitSubjectList['username_style']}</a>، {/Des::while} {if {$VisitSubjectNumber} <= 0} لم تتم مشاهدة الموضوع من قبل اي عضو حتى الآن .. {/if} </td> </tr> </table>
اغلق القالب واحفظة ..
أنتهى ..
ملاحظة لم اقم بالتدقيق والتجربة فقد كتبت الأكواد بشكل سريع ..قم بتركيبه وتجربتة وتصحيح اي اخطاء
بالتوفيق .....-
تم تحرير المشاركة بواسطة :Soliman بتاريخ:16-09-2010 03:20 صباحاً
-
-
سؤال برمجي للأخ مشراق16-09-2010 03:58 مساءً [4]
-
abu_Rabihمعلومات الكاتبالأعضاءعضو فعال
- انضم في :
- 02-08-2009
- رقم العضوية :
- 78
- المشاركات :
- 245
- الدولة :
- الجمهورية العربية السورية
- الجنس:
- تاريخ الميلاد :
- 2-12-1990
- قوة السمعة:
- 678
-
أنا فايت بالحيط
!!!!!!!!!!!!
شكرا أبو راكان ... بس هلأ في شغلات أنا ما كتير عم أفهمها ..بدك تصبر علي ...
رح ركب الهاك وفي بعض الأكود بدي أسألك عنها لاحقا ..اوكي ؟؟؟
مشكوووووووووووووووووووووووووووووووووووور ...
قال جينا لنبرمج هاك ... فتنا بالحيط ...
في عندي مشكلة كبيرة بالتعامل مع المصفوفات وكل البرمجة تعتمد على ادخال واستخراج المصفوفات
تحياتي
أحلى أبو ركان
-
-
سؤال برمجي للأخ مشراق16-09-2010 04:33 مساءً [5]
-
abu_Rabihمعلومات الكاتبالأعضاءعضو فعال
- انضم في :
- 02-08-2009
- رقم العضوية :
- 78
- المشاركات :
- 245
- الدولة :
- الجمهورية العربية السورية
- الجنس:
- تاريخ الميلاد :
- 2-12-1990
- قوة السمعة:
- 678
-
أخي أبو راكان .. لما أضفنا في دوال who_visit_sybject.class.php
هاتين الدالتين
GetWhoVisitSubjectInfo
GetWhoVisitSubjectNumber
؟؟؟؟؟
السؤال الثاني :: أليس عمل الدالة GetWhoVisitSubjectNumber مشابه لعمل IsWhoVisitSubject؟؟؟
كلاهما تقومان على أخذ العدد GetNumber ! أليس كذلك ؟؟؟
ثالثا:::
CODEif (!$PowerBB->who_visit_subject->IsWhoVisitSubject(array('where' => array('member_id',$PowerBB->_CONF['rows']['member_row']['id']))))
؟؟؟؟؟؟؟؟
أظن وظيفة هذا الكود عمل مقارنة لل id الموجود في قاعدة البيانات مع بيانات العضو
الذي يتصفح الموضوع حاليا وفي حال كان غير موجود يقوم باضافة id هذا العضو إلى الحقل الذي
أنشأناه أليس كذلك ؟؟؟
ملاحظة أخيرة ... يبدو أنك على العجلة كتبت هذا الكود خطأ !
CODE$this->friends = ($CALL_SYSTEM['WHOVISITSUBJECT']) ? new PowerBBWhoVisitSubject($this) : null;
المفروض ينكتب بالشكل :
CODE$this->who_visit_subject = ($CALL_SYSTEM['WHOVISITSUBJECT']) ? new PowerBBWhoVisitSubject($this) : null;
انتهى ... وشكرا مرة تالتة .
حياتي أت
-
-
سؤال برمجي للأخ مشراق16-09-2010 05:54 مساءً [6]
-
abu_Rabihمعلومات الكاتبالأعضاءعضو فعال
- انضم في :
- 02-08-2009
- رقم العضوية :
- 78
- المشاركات :
- 245
- الدولة :
- الجمهورية العربية السورية
- الجنس:
- تاريخ الميلاد :
- 2-12-1990
- قوة السمعة:
- 678
-
أسف أخي سليمان
...
الهاك به بعض الأخطاء .. اولا لم تكتب بالترميز
utf-8
داخل القالب
كما أن الحقل الذي تريدني أن أضيفه هو
pbb_who_visit_subjects
بينما الذي نكتبه في الأكود
هو
pbb_who_visit_subject
وأظن أن هذا الكود به خطأ
CODE<a href="u{$WhoVisitSubjectList['member_id']}">{$WhoVisitSubjectList['username_style']}</a> ،
يمكن يكون
['username_style']
على ما أظن ؟؟؟
[/font]
أظن لازم يكون
CODE<a href="u{$WhoVisitSubjectList['member_id']}">{$WhoVisitSubjectList['username']}</a> ،
وألف مبروك صدور النسخة
[font=Arial]
-
-
-
-
-