إنضمامك إلي منتديات استراحات زايد يحقق لك معرفة كل ماهو جديد في عالم الانترنت ...

انضم الينا
استراحات زايد الصفحة الرئيسية

         :: شركات تنظيف كنب (آخر رد :roknnagd213)       :: شركة متخصصه في مجالات التكييف والتبريد والدكت وأنظمة الحرائق وتمديد الكابلات والتيار الخفيف السعودية (آخر رد :بندر عسيري)       :: شركة شراء اثاث بالرياض (آخر رد :alriyadhusedmarket)       :: شراء معدات مطاعم بالرياض (آخر رد :alriyadhusedmarket)       :: شراء اثاث الرياض (آخر رد :alriyadhusedmarket)       :: شراء اثاث بالرياض (آخر رد :alriyadhusedmarket)       :: سوق الرياض للمستعمل (آخر رد :alriyadhusedmarket)       :: رؤية ولي العهد في المنام (آخر رد :نوران نور)       :: تفسير الأحلام حول الفاصوليا المطبوخة (آخر رد :نوران نور)       :: افضل قهوجيين بالرياض 30% خصم | (آخر رد :layansherief)      

إضافة رد
 
LinkBack أدوات الموضوع انواع عرض الموضوع
  #1  
قديم 03-14-2014, 06:10 PM
عضو ماسي
بيانات محروم.كوم
 رقم العضوية : 503
 تاريخ التسجيل : Dec 2007
الجنس : female
علم الدوله :
 المشاركات : 2,100,613
عدد الـنقاط :3341
 تقييم المستوى : 2139

السلام عليكم ورحمة الله و بركاته

نظرا لان الكثير من الاعضاء محتارين كيف يتم عمل نظام الاعجاب كما في ترايدنت فقد قمت بعمل هذا الشرح البسيط جدا لهذه العملية
لندرس الموضوع بكل بساطه
اولا مطلوب في كل موضوع وكل رد وضع زر اعجاب وايضا مطلوب عند الضغط على زر الاعجاب ارسال رقم الموضوع او رقم الرد مع رقم العضو ومن ثم الحفظ في قاعدة البيانات وعند الحفظ يتم تحديث البيانات سواء في الرد او الموضوع بكلمة ( أنت و فلان وفلان معجبون بالموضوع ) مع ظهور زر جديد لعدم الاعجاب
اذن لنبدأ وسيكون العمل غلى نفس الاكواد الخاصة بك مع بعض التعديلات البسيطه عليها

طبعا هنا انا لا اعتمد على نظام ال vb في الشرح لكي لا احصر الشرح في عملية تطوير المنتديات فقط وانما اشرح الموضوع بصفة عامة اما تطبيقة سيكون على حسب كل اسكربت وبنفس الطريقه

اول شيء سنحتاج الى جدول في قاعدة البيانات يحتوي على الحقول التالية
id تلقائي ولا داعي له الا في عمليات الحذف او الارشفة
postid وسيكون هو الخاص بتخزين رقم اي دي الموضوع او الرد فيه
userid وهو رقم عضوية العضو الذي قام بالضغط على زر الاعجاب
type هو نوع المحتوي الذي قمت بالضغط عليه ( موضوع - رد - صورة - الخ ) باعتبار ان الاسكربت يدعم المحتوي المتعدد وهذا الحقل مهم في الاستعلامات
dateline وسيتم فيه تخزين وقت الضغط علة الزر بصيغة unix و الفائده منه الترتيب عند العرض للمعجبين

الان نبدأ العمل

لو اتخذنا المنتديات على سبيل المثال في عرض المحتوي فان الموضوع يتم عرضه في قالب وباقي الردود يم عرضها من خلال حلقة تكرار
لو بسطنا الامور جدل فسنجد ان ما نحتاج اليه سيكون كالتالي
رمز PHP:
1        like
2        like

3        like
4        like
5        like
6        like
7        like
8        like


لو حللنا الكود ببساطة سنجد
رمز PHP:
class="show"


وهو كلاس بسيط سنقوم من خلاله تحديد حدث وهو عند الضغط عليه
رمز PHP:
data-id="1" data-userid="8" data-type="thread"


وهي معلومات مهمة جدا نقوم بتحديدها في كل رابط لزر الاعجاب طبعا انا قمت باعطاء البيانات مباشرة ولكن اذا كنت تستخدم نظام القوالب يمكنك تحديد متغيرات لكل data منهم بالقيمة على حسب المتغير
وايضا سنلاحظ ان type هنا قمت بتحديدها على انها thread اي موضوع وليس رد
وما يليه سنجد ان النوع هو post وهو المفروض ان يكون من خلال حلقة تكرار
هذا كل ما نحتاج اليه من بيانات html والباقي سيكون ajax و php

الان نقوم ببناء اكواد jquery لتقوم بالعمل
الدالة ستكون كالتالي

رمز PHP:
$(".show").on('click',function(){
var
container = this ;
$(
container).slideUp('slow');
$.
ajax
({
url: 'like.php' ,
data: "do=like&type="+ $(this).data("type")+"&id="+$(this).data("id")+"&userid="+$(this).data("userid") ,
success: function(response)
{
if(
response.error)
{
alert(response.error);
$(
container).slideDown('slow');
return
false ;
}
else if(
response.message)
{
$(
response.message).insertAfter(container);
}
} ,
type: 'POST' ,
dataType: 'json'
});
return
false ;
}) ;


الشرح

رمز PHP:
$(".show").on('click',function(){


اي عند الضغط على زر الاعجاب الذي يحمل الكلاس show
رمز PHP:
var container = this ;


قمنا يتحديد هذا الكلاس او هذا الزر لانه الكلاس يتكرر اكثر من مرة في الصفحه , وذلك بهذف استغلاله في دالة الاجاكس لاحقا
رمز PHP:
$(container).slideUp('slow');


اخفاء زء الاعجاب
رمز PHP:
url: 'like.php' ,
data: "do=like&type="+ $(this).data("type")+"&id="+$(this).data("id")+"&userid="+$(this).data("userid") ,
type: 'POST' ,
dataType: 'json' ,


\ارسال البيانات عن طريق الاجاكس الى صفحة php
رمز PHP:
success: function(response)
{
if(
response.error)
{
alert(response.error);
$(
container).slideDown('slow');
return
false ;
}
else if(
response.message)
{
$(
response.message).insertAfter(container);
}
}


عند نجاح عملية الارسال وهي هنا مقسمة الى قسمين
عند ارسال البيانات ووجود خطأ في معالجة البيانات سنظهر رسالة خطأ ونقوم باظهار زر الاعجاب مرة اخرى ويمثلها الكود التالي
رمز PHP:
if(response.error)
{
alert(response.error);

$(
container).slideDown('slow');
return
false ;
}


الشق الثاني عند ادخال الاعجاب الى قاعدة البيانات من ثم سنظهر المعجبين ويمثلها الكود التالي
رمز PHP:
else if(response.message)
{
$(
response.message).insertAfter(container);
}


اخيرا ملف php الخاص بالمعالجة
قمت بعمل رقم عضوية افتراضي وهو متمثل في المتغير
رمز PHP:
$session_userid = 1 ;


اذا كنت تستخدم السيزون او الكوكيز يجب تخصيص هذا المتغير الى رقم عضوية العضو
ثانيا قمت بعمل بعض الماغيرات التي سيتم استخدامها لاحقا مثل
رمز PHP:
$erros = $success = array();


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

اولا الاكشن الخاص بالاعجاب والادخال الى قاعدة البيانات
رمز PHP:
if($_POST['do'] = 'like')


التأكد من البيانات المرسلة
رمز PHP:
$id = intval($_POST['id']) ;
$type = trim($_POST['type']);
$uid = intval($_POST['userid']);
if(!
$id)
{
$erros['error'] = 'invalid id ';
}
if(!
$type)
{
$erros['error'] = 'invalid type ';
}
if(!
$uid)
{
$erros['error'] = 'you donot have the permission to do this ';
}


اذا كانت هناك اي اخطاء في الداتا يجب اظهار رسالة خطأ
رمز PHP:
if(sizeof($erros) > 0 )
{
echo
json_encode($erros);
exit;
}


والا ادخال الى قاعدة البيانات
رمز PHP:
$query = mysql_query("INSERT INTO like (postid , type , userid , dateline ) VALUES ('$id' , '$type' , '$uid' , '".time()."' )")
OR die(
mysql_error());


واذا تم الادخال يتم التحويل الى اكشن اخر وهو جلب المعجبون وهنا قمت بعملة في اكشن اخر لان اكثر شيء اكرهه وهو تكرار الكود وهو ما يجب تجنبه ايضا يمكن عمل هذا الموضوع عن طريق البرمجه الكائنيه او الكلاسات ولم اقم بعمله بهذه الطريقه لتوصيل المعلومه ايضا الى المتوسطين في البرمجه او المبتدئين
الفكرة انه يمكن تخصيص هذا الاكشن لاكثر من وظيفة في الاسكربت وهذا ليس مجالنا الان
رمز PHP:
if($query)
{
$_REQUEST['do'] = "get_likes";
$_POST['id'] = $id ;
$_POST['type'] = $type ;

}


الان الاكشن الخاص بجلب المعجبون
رمز PHP:
if($_REQUEST['do'] == 'get_likes')


تحليل البيانات واظهار رسالة خطا اذا كانت البيانات غير سليمة
رمز PHP:
if(!$id)
{
$erros['error'] = 'invalid id ';
}
if(!
$type)
{
$erros['error'] = 'invalid type ';
}
if(
sizeof($erros) > 0 )
{
echo
json_encode($erros);
exit;
}


والا عمل استعلام لجلب المعجبون
رمز PHP:
$query = mysql_query(" SELECT like.userid , user.username FROM like INNER JOIN user
ON
(like.userid = user.userid )
WHERE like.id = '
$id' AND like.type = '$type'
ORDER BY like.dateline DESC
"
) ;


هنا قمت بدمج جدول الاعضاء في الاستعلام لجلب اسم العضو بدلالة رقم عضويته
ومن ثم عمل تحليل بسيط للبيانات ووضعها في مصفوفه مع تحديد اذا كان رقم عضويه العضو الذي قام بالضغط على ز الاعجاب متواجد في هذه المصفوفه يتم استبدال اسمه بكلمة ( أنت و ...)
رمز PHP:
$userinfo = array();
$success['message'] = '' ;

$extra = '' ;
while(
$fetch = mysql_fetch_assoc($query))
{
if(
$fetch['userid'] == $session_userid)
{
$userinfo['username'] = 'YOU ' ;
$extra = 'AND' ;
}
$userinfo['userid'] = $userinfo['username'] ;
}


الان عمل حلقة تكرار بسيطه جدا لعرض هذه المصفوفه
رمز PHP:
foreach($userinfo as $key => $value)
{

$success['message'] .= " $value$extra - " ;
}
$success['message'] .= " like this ";
$success['message'] .= " unlike ";
echo
json_encode($success);
exit;


طبعا هذه هي الفكرة بشكل بسيط جدا ويمكن تطويرها الى جانب انني لم اذكر كيفية عمل زر عدم الاعجاب وان كنت اسست دالة الاجاكس الخاصه به ومرفقه مع الموضوع وايضا لم اقم بعمل فكرة اذا لم يكن هناك معجبون في الموضوع غير العضو الذي يقوم بالضغط على الزر وافكر اخرى كثيره ولكن كما قلت هذه الفكرة بشكل مبسط جدا

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

الملفات المرفقة like.zip (2.1 كيلوبايت)
__DEFINE_LIKE_SHARE__
رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


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

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
كيفية تقسيم الـ c ? ( وطلب بسيط ) محروم.كوم منتدى أخبار المواقع والمنتديات العربية والأجنبية 0 11-02-2011 06:00 AM
نظام ساهر كيفية ايقافه محروم.كوم منتدى أخبار المواقع والمنتديات العربية والأجنبية 0 08-13-2010 06:50 PM
كيفية تحديد نظام التشغيل محروم.كوم منتدى أخبار المواقع والمنتديات العربية والأجنبية 0 06-26-2010 08:10 PM
طلب بسيط في كيفية تتجميع البرنامج محروم.كوم منتدى أخبار المواقع والمنتديات العربية والأجنبية 0 11-06-2009 05:00 AM
[ شرح ] : شرح كيفية حذف الباسورد من اسم المستخدم في نظام التشغيل محروم.كوم منتدى أخبار المواقع والمنتديات العربية والأجنبية 0 06-25-2009 10:10 AM


الساعة الآن 10:14 PM


Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.5.2 TranZ By Almuhajir

RSS RSS 2.0 XML MAP HTML