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

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

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


موضوع مغلق


15-09-2010 05:52 مساءً
معلومات الكاتب ▼
تاريخ الإنضمام : 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 مساءً

look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  15-09-2010 10:23 مساءً   [1]
معلومات الكاتب ▼
تاريخ الإنضمام : 18-07-2009
رقم العضوية : 1
المشاركات : 12526
الدولة : KSA
الجنس :
الدعوات : 52
قوة السمعة : 73776
موقعي : زيارة موقعي
وعليكم السلام ورحمة الله وبركاتة ،،
عن نفسي لا أفضل الطريقة التي اتبعتها
بدل من ان تضيف حقل اضف جدول مستقل لكي لا تزيد من حمل جدول الـ 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]
معلومات الكاتب ▼
تاريخ الإنضمام : 02-08-2009
رقم العضوية : 78
المشاركات : 245
الدولة : الجمهورية العربية السورية
الجنس :
تاريخ الميلاد : 2-12-1990
قوة السمعة : 678
فعلا اخطأت أخي سليمان لأنني استخدمت الدالة update في عملية الأدخال وفي كل مرة

يدخل أسما واحدا فقط sad ويلغي البقية

هذا هو الكود وضعنه في ملف 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');
	   }



وشكرا على الرد biggrin2

look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  16-09-2010 03:18 صباحاً   [3]
معلومات الكاتب ▼
تاريخ الإنضمام : 18-07-2009
رقم العضوية : 1
المشاركات : 12526
الدولة : KSA
الجنس :
الدعوات : 52
قوة السمعة : 73776
موقعي : زيارة موقعي
no_1
حسناً لدي وقت فراغ اكثر من 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 (xxx_abu_rakan_xxx@hotmail.com)
* @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="index.php?page=profile&show=1&id={$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]
معلومات الكاتب ▼
تاريخ الإنضمام : 02-08-2009
رقم العضوية : 78
المشاركات : 245
الدولة : الجمهورية العربية السورية
الجنس :
تاريخ الميلاد : 2-12-1990
قوة السمعة : 678
sad sad sad sad

أنا فايت بالحيط biggrin2 !!!!!!!!!!!!

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

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

مشكوووووووووووووووووووووووووووووووووووور ... blushing

قال جينا لنبرمج هاك ... فتنا بالحيط ...laugh

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

تحياتي biggrin2

أحلى أبو ركان cool

look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  16-09-2010 04:33 مساءً   [5]
معلومات الكاتب ▼
تاريخ الإنضمام : 02-08-2009
رقم العضوية : 78
المشاركات : 245
الدولة : الجمهورية العربية السورية
الجنس :
تاريخ الميلاد : 2-12-1990
قوة السمعة : 678
أخي أبو راكان .. لما أضفنا في دوال who_visit_sybject.class.php
هاتين الدالتين
GetWhoVisitSubjectInfo
GetWhoVisitSubjectNumber

؟؟؟؟؟

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

ثالثا:::

CODE

if (!$PowerBB-&gt;who_visit_subject-&gt;IsWhoVisitSubject(array('where' =&gt; array('member_id',$PowerBB-&gt;_CONF['rows']['member_row']['id']))))


؟؟؟؟؟؟؟؟ g أظن وظيفة هذا الكود عمل مقارنة لل id الموجود في قاعدة البيانات مع بيانات العضو
الذي يتصفح الموضوع حاليا وفي حال كان غير موجود يقوم باضافة id هذا العضو إلى الحقل الذي
أنشأناه أليس كذلك ؟؟؟ g

ملاحظة أخيرة ... يبدو أنك على العجلة كتبت هذا الكود خطأ !

CODE

 $this-&gt;friends    = ($CALL_SYSTEM['WHOVISITSUBJECT'])	  ? new PowerBBWhoVisitSubject($this) : null;


المفروض ينكتب بالشكل :
CODE

 
			 $this-&gt;who_visit_subject    =	   ($CALL_SYSTEM['WHOVISITSUBJECT'])	  ? new PowerBBWhoVisitSubject($this) : null;


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

حياتي أت biggrin2

look/images/icons/i1.gif سؤال برمجي للأخ مشراق
  16-09-2010 05:54 مساءً   [6]
معلومات الكاتب ▼
تاريخ الإنضمام : 02-08-2009
رقم العضوية : 78
المشاركات : 245
الدولة : الجمهورية العربية السورية
الجنس :
تاريخ الميلاد : 2-12-1990
قوة السمعة : 678
أسف أخي سليمان


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


utf-8
داخل القالب



كما أن الحقل الذي تريدني أن أضيفه هو


pbb_who_visit_subjects
بينما الذي نكتبه في الأكود



هو


pbb_who_visit_subject
وأظن أن هذا الكود به خطأ



CODE
<a href="index.php?page=profile&show=1&id={$WhoVisitSubjectList['member_id']}">{$WhoVisitSubjectList['username_style']}</a>


،



يمكن يكون


['username_style']
على ما أظن ؟؟؟



[/font]

أظن لازم يكون



CODE
<a href="index.php?page=profile&show=1&id={$WhoVisitSubjectList['member_id']}">{$WhoVisitSubjectList['username']}</a>


،



وألف مبروك صدور النسخة



[font=Arial]




الكلمات الدلالية
سؤال ، برمجي ، للأخ ، مشراق ،









الساعة الآن 03:24 PM