PDA

View Full Version : آموزش: ارسال پاسخ به نظرات و پاسخ ها به تعداد نا محدود



barzin144
یک شنبه 11 آبان 1393, 00:16 صبح
سلام دوستان ، شاید زیاد براتون پیش آمده باشه که در سیستم نظرات ساییتون بخواهید طوری باشه که هر کسی بتونه برای هر نظری پاسخی بنویسه من این سیستم رو با تابع بازگشتی پیاده کردم که حتی میتوان به پاسخ های زیر نظرات هم پاسخ داد.

ابتدا جدول دیتا بیس رو به این صورت ساختم:

فیلد ID که به IDENTITY هست و کلید جدول
فیلد Name که نام کسی که نظر یا پاسخ میدهد
فیلد Comment که متن نظر یا پاسخ هست
فیلد AnswerTo که میتواند NULL باشد یا ID نظری که پاسخ اون هست درج میشه

حالا کد تابع بازگشتی که برای ارتباط با دیتابیس از ADO.net 2 استفاده کردم که در انتها کوئری های هر کدام رو میزارم.





private string BindComments(int CommentAnswer, string strAllCM)
{
DataSet.CommentsDataTable oCommentsDataTable =
new DataSet.CommentsDataTable();


DataSetTableAdapters.CommentsTableAdapter oCommentsTableAdapter =
new DataSetTableAdapters.CommentsTableAdapter();


if (CommentAnswer == 0)
{
oCommentsTableAdapter.FillCommentByNoAnswerTo(oCom mentsDataTable);
}
else
{
oCommentsTableAdapter.FillCommentsByAnswerTo(oComm entsDataTable, CommentAnswer);
}
if (oCommentsDataTable.Count != 0)
{
for (int i = 0; i < oCommentsDataTable.Count; i++)
{
strAllCM +=
string.Format("<div class='Container'><div class='divComment'><div class='CM'><div class='ImgName'><img src='/admin.png' alt='pic'/><a class='Name'>{0}:</a><a class='Answer'>پاسخ</a></div><a class='Comment'>{1}</a></div>"
, oCommentsDataTable[i].Name, oCommentsDataTable[i].Comment);


strAllCM = BindComments(oCommentsDataTable[i].ID, strAllCM);
}
strAllCM += "</div></div>";
}
else
{
strAllCM += "</div></div>";
}


return strAllCM;
}





ورودی های تابع: commentanswer که id نظری که پاسخ های اون باید واکشی شود میزاریم در ابتدای کار 0 میگزاریم یعنی همیشه ما مقدار 0 میدهیم و در فراخوانی های بعدی تایع خودش عدد مورد نیازش رو قرار میده.


strALLCM که ما یه استرینگ خالی پاس میدیم و تابع هر بار html نظرات رو توش میگذاره و در فراخوانی بعدی استفاده میکنه.
خروجی هم که یک استریگ هست که حاوی html نظرات و پاسخ ها هست.
پس برای استفاده از تابع

litComments.Text = BindComments(0, "");



حالا کوئری های استفاده شده:


تمام نظراتی که پاسخ به هیچ نظری نیستن را واکشی میکنه در واقع فقط نظرات رو میاره


FillCommentByNoAnswerTo

SELECT ID, Name, Comment, AnswerTo
FROM Comments
WHERE (AnswerTo IS NULL)
ORDER BY ID DESC



تمام پاسخ هایی که به id یک نظر خاص داده شده است


FillCommentsByAnswerTo

SELECT ID, Name, Comment, AnswerTo
FROM Comments
WHERE (AnswerTo = @AnswerTo)
ORDER BY ID DESC



در ضمن من فیلد تاریخ را نگذاشته بودم که باید باشه فقط برای سادگی حذفش کردم و ترتیب ورود نظرات رو از id اونها میفهمم.

حالا میتونید با اضافه کردن Ajax یک نمونه مثل این نمونه (http://barzin.somee.com/Comments) ایجاد کنید.

موفق باشید.

sadegh.te
یک شنبه 11 آبان 1393, 00:41 صبح
با تشکر میشه خود پروژه رو بزارید واسه دانلود ممنون میشم؟؟؟

barzin144
یک شنبه 11 آبان 1393, 01:07 صبح
دوست عزیز خوبه که خودتون با اضافه کردن این اموزش ها به هم یه چیزی پیاده کنید تا این که آماده داشته باشید اونجوری برای خلاقیت خودتون هم بهتره نکته اصلیش همین تابع بود .

amir_T_2008
یک شنبه 11 آبان 1393, 02:17 صبح
دوست عزیز حالا اگر براتون مقدوره سورس این آموزش بسیار کارآمد قرار بدید

با تشکر

fakhravari
یک شنبه 11 آبان 1393, 03:54 صبح
با سلام
کار جالبی است
اگه میشه با همان قالب سورس بزارید

sadegh.te
یک شنبه 11 آبان 1393, 10:47 صبح
اگه لینک دانلودشو بزارید خیلی ممنون میشم

barzin144
یک شنبه 11 آبان 1393, 12:17 عصر
سورس همون نمونه که گذاشتم.

http://barzin.somee.com/comments/Comment.rar

sadegh.te
یک شنبه 11 آبان 1393, 14:22 عصر
ممنون ولی وقتی اجراش میکنم ارور میده

125226

barzin144
یک شنبه 11 آبان 1393, 15:02 عصر
چون باید خودتون زحمت بکشی دیتابیس و کانکشن استرینگ رو درست کنید.

sadegh.te
یک شنبه 11 آبان 1393, 18:17 عصر
میشه بگید که چطور باید کانکشن استرینگشو درست کنم؟؟

sadegh.te
دوشنبه 12 آبان 1393, 18:18 عصر
خواهشن یکی بگه که کانکشن اینو چطور بسازم؟:متفکر:

barzin144
دوشنبه 12 آبان 1393, 19:50 عصر
<connectionStrings>
<add name="tempdbConnectionString" connectionString="Data Source=BARZIN-PC\BARZIN;Initial Catalog=tempdb;Persist Security Info=True;User ID=sa;Password=123"
providerName="System.Data.SqlClient" />
</connectionStrings>



data source نام سرور sql ات هست.
initial Catalog نام دیتا بیس
User , password هم که مشخصه ، اینو به web.config اضافه کن

fakhravari
چهارشنبه 21 آبان 1393, 16:29 عصر
کار barzin144 بسیار عالی است.
اگه صفحه بندی کنیم یک سمپل عالی برای بخش نظرات است
با استفاده از jquery

saeed410
چهارشنبه 21 آبان 1393, 21:39 عصر
بسیار عالی. از این روش میشه واسه ایجاد منوهای تودردتو ویا گروه بندی تودرتو هم استفاده کرد. اگه تاحالا نرم افزارهای حسابداری رو نگاه کرده باشین یکی از ویژگی هایی که بعضی از اونا بهش میبالن اینه که میگن ما مثلاً تا 4 سطح حساب تودرتو ایجاد میکنیم. واقعاً آدم خندش میگیره.موفق باشید.

amir_T_2008
سه شنبه 02 دی 1393, 23:22 عصر
این پروژه عالیه اما ای کاش هر نظری که ارسال میشد میرفت تو مدیریت و بعد از تایید مدیر نمایش داده میشد.

safa.net
شنبه 06 دی 1393, 18:38 عصر
این پروژه عالیه اما ای کاش هر نظری که ارسال میشد میرفت تو مدیریت و بعد از تایید مدیر نمایش داده میشد.
با سلام
با اضافه کردن یک فیلد به جدول به صورت bit میتوانید به راحتی آن را پیاده سازی کنید.