|
إنضمامك إلي منتديات استراحات زايد يحقق لك معرفة كل ماهو جديد في عالم الانترنت ...
انضم الينا
#1
| ||
| ||
السلام عليكم ورحمة الله و بركاته نظرا لان الكثير من الاعضاء محتارين كيف يتم عمل نظام الاعجاب كما في ترايدنت فقد قمت بعمل هذا الشرح البسيط جدا لهذه العملية لندرس الموضوع بكل بساطه اولا مطلوب في كل موضوع وكل رد وضع زر اعجاب وايضا مطلوب عند الضغط على زر الاعجاب ارسال رقم الموضوع او رقم الرد مع رقم العضو ومن ثم الحفظ في قاعدة البيانات وعند الحفظ يتم تحديث البيانات سواء في الرد او الموضوع بكلمة ( أنت و فلان وفلان معجبون بالموضوع ) مع ظهور زر جديد لعدم الاعجاب اذن لنبدأ وسيكون العمل غلى نفس الاكواد الخاصة بك مع بعض التعديلات البسيطه عليها طبعا هنا انا لا اعتمد على نظام ال 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__ |
مواقع النشر (المفضلة) |
| |
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
كيفية تقسيم الـ 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 |