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

سؤال برمجي للأخ مشراق

موضوع مغلق


15-09-2010 05:52 مساءً
abu_Rabih
معلومات الكاتب
السلام عليكم

أخي سليمان ... وأنا أبرمج هاك من قرأ الموضوع ... وضعت حقلا ضمن pbb_subject اسمه who_visit

ثم كتابة كود تحديث يتم من خلاله اضافة العضو الذي قام بزيارة الموضوع إلى who_visit

لكن المشكلة التي أربكتني ... كيف سأستخرج المعلومات من هذا الحقل who_visit

هل أستخدم الدالة Get list أو ماذا أفعل ؟؟؟؟
تم تحرير الموضوع بواسطة :Dr.ZoCo بتاريخ: 15-09-2010 05:54 مساءً


look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  15-09-2010 10:23 مساءً   [1]
Soliman
معلومات الكاتب
وعليكم السلام ورحمة الله وبركاتة ،،
عن نفسي لا أفضل الطريقة التي اتبعتها
بدل من ان تضيف حقل اضف جدول مستقل لكي لا تزيد من حمل جدول الـ pbb_subject
مثال لبنية الجدول :
CODE
CREATE 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 مساءً


look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  16-09-2010 01:31 صباحاً   [2]
abu_Rabih
معلومات الكاتب
فعلا اخطأت أخي سليمان لأنني استخدمت الدالة update في عملية الأدخال وفي كل مرة

يدخل أسما واحدا فقط سؤال برمجي للأخ مشراق ويلغي البقية

هذا هو الكود وضعنه في ملف topic.module.php به دالتين احداهما لادخال الأسماء والأخرى لعرضها

CODE

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



وشكرا على الرد سؤال برمجي للأخ مشراق

look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  16-09-2010 03:18 صباحاً   [3]
Soliman
معلومات الكاتب
سؤال برمجي للأخ مشراق
حسناً لدي وقت فراغ اكثر من 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;
    }

}

?>


وارفعه على المسار التالي :
CODE
engine/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;

وابحث عن :
CODE
    var $friends;

اضف اسفله :
CODE
var $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- اضف الجدول التالي في قاعدة البيانات :
CODE
CREATE 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');

اضف بعده :
CODE

   if ($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 صباحاً


look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  16-09-2010 03:58 مساءً   [4]
abu_Rabih
معلومات الكاتب
سؤال برمجي للأخ مشراق سؤال برمجي للأخ مشراق سؤال برمجي للأخ مشراق سؤال برمجي للأخ مشراق

أنا فايت بالحيط سؤال برمجي للأخ مشراق !!!!!!!!!!!!

شكرا أبو راكان ... بس هلأ في شغلات أنا ما كتير عم أفهمها ..بدك تصبر علي ...

رح ركب الهاك وفي بعض الأكود بدي أسألك عنها لاحقا ..اوكي ؟؟؟

مشكوووووووووووووووووووووووووووووووووووور ... سؤال برمجي للأخ مشراق

قال جينا لنبرمج هاك ... فتنا بالحيط ...سؤال برمجي للأخ مشراق

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

تحياتي سؤال برمجي للأخ مشراق

أحلى أبو ركان سؤال برمجي للأخ مشراق

look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  16-09-2010 04:33 مساءً   [5]
abu_Rabih
معلومات الكاتب
أخي أبو راكان .. لما أضفنا في دوال who_visit_sybject.class.php
هاتين الدالتين
GetWhoVisitSubjectInfo
GetWhoVisitSubjectNumber

؟؟؟؟؟

السؤال الثاني :: أليس عمل الدالة GetWhoVisitSubjectNumber مشابه لعمل IsWhoVisitSubject؟؟؟ سؤال برمجي للأخ مشراق كلاهما تقومان على أخذ العدد GetNumber ! أليس كذلك ؟؟؟

ثالثا:::

CODE

if (!$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;


انتهى ... وشكرا مرة تالتة .

حياتي أت سؤال برمجي للأخ مشراق

look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  16-09-2010 05:54 مساءً   [6]
abu_Rabih
معلومات الكاتب
أسف أخي سليمان


...
الهاك به بعض الأخطاء .. اولا لم تكتب بالترميز


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]



الكلمات الدلالية






الساعة الآن 06:30 PM