مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

کیایی

عضویت از 1393/09/25

طریقه نوشتن تگ برای هر مطلب در سایت

  • یکشنبه 10 آبان 1394
  • 11:36
تشکر میکنم

با سلام و خسته نباشید خدمت شما

من قصد دارم سایتی مانند http://ibazaryabi.com را بنویسم و برای هر مطلب قصد دارم تگ داشته باشم که بعدا از طریق تگها مطالب هم نوع سرچ شوند.

برای این کار نیز از دو جدول tagGroup, tag استفاده کردم که باید با جدول article که مقالات در آن موجود هستن با یک جدول واسط در ارتباط هستن استفاده کردم

آیا روشی که استفاده میکنمم روش درستیه؟

موقع ویرایش کردن تگها دچار مشکل میشم چون تعداد جداول و ارتباط بین آنها زیاد است

میشه راهنمایی کنین برای ایجد تگ بهترین روش چیه؟

با تشکر 

پاسخ های این پرسش

تعداد پاسخ ها : 12 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 10 آبان 1394
  • 13:04

روش مشکلی نداره

برای ویرایش میتونید اول تمام تگ های مربوط به این مطلب رو حذف کنید و سپس دوباره ثبت کنید

کاربر سایت

کیایی

عضویت از 1393/09/25

  • شنبه 16 آبان 1394
  • 09:39

مرسی از راهنماییتون.

میشه راهنماییم کنین که کد زیر را چطوری باید تغییر بدم تا مجموعه تگها را نمایش بده؟

چون هر مطلب چندین تگ داره و باید برای آن یک foreach نوشت منتها نمیدونم این کار را چطوری در یک query بنویسم؟

و سوال دومم این است که آیا میتونم باید تغییری در html  بدم؟(<%# Eval("TagTitle") %>)

        var query = (from x in Mybank.TblArticleTags
                     join y in Mybank.TblTags
                     on x.TagID equals y.TagID
                     from a in Mybank.TblArticleTags
                     join b in Mybank.TblArticles
                     on a.ArticleID equals b.ArticleID
                     where b.ArticleGroupID == 3 && a.ArticleID == b.ArticleID && x.TagID == y.TagID
                     select new
                      {
                          b.Auther,
                          b.Date,
                          b.Disc,
                          b.Pic,
                          b.See,
                          b.Summery,
                          b.Title,
                          x.TagTitle
                      }).ToList();
        ListView1.DataSourceID = null;
        ListView1.DataSource = query;
        ListView1.DataBind();

 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 16 آبان 1394
  • 11:59

در کوئری نباسد انجام بدید

باید به صورت جداگانه بدست بیارید و در صفحه به صورت تگ a قرار دهید

کاربر سایت

کیایی

عضویت از 1393/09/25

  • شنبه 16 آبان 1394
  • 12:52

یعنی بخش تگ را از لیست ویو خارج کنم؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 16 آبان 1394
  • 13:42

میتونید اینکار را کنید و یا داخل ListView یک Repeater قرار دهید

کاربر سایت

کیایی

عضویت از 1393/09/25

  • شنبه 16 آبان 1394
  • 15:08

ممنونم از راهنماییتون.

کاربر سایت

کیایی

عضویت از 1393/09/25

  • دوشنبه 18 آبان 1394
  • 11:57

طبق توضیحاتتون از دو تا  repeater تودرتو استفاده کردم و با قطعه کدی که نوشتم آنها رو پر کردم.

منتها ی ایرادی داره.

مثلا اگر مقاله 2 تا تگ داشته باشه دوبار مقاله تکرار میشه.

تو شرطم چه تغغیری باید بدم تا این مشکل حل شه؟

چون ریپیترها تو در تو  هستن نمیتونم دو تا کوعری جدا بزنم چون ریپیتر دوم را نمیشناسه که بهش دیتاسورس بدم.

به نظرم یک foreach لازم داره اما نمیدونم اینجا چطوری اینکار رو بکنم؟

   var items = (from c in Mybank.TblArticles
                         join d in Mybank.TblArticleTags
                         on c.ArticleID equals d.ArticleID
                         where (d.ArticleID == c.ArticleID) && (c.ArticleGroupID == 3)
                         select new
                         {
                             catid = c.ArticleID,
                             pic = c.Pic,
                             Auther = c.Auther,
                             Title = c.Title,
                             Summery = c.Summery,
                             Date = c.Date,
                             post = (from p in Mybank.TblArticleTags
                                     join q in Mybank.TblTags
                                     on p.TagID equals q.TagID
                                     
where (p.ArticleID == d.ArticleID)
                                     select new
                                     {
                                         ptitle = p.TagTitle
                                     })

                         });
            Repeater1.DataSource = items;
            Repeater1.DataBind();

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 18 آبان 1394
  • 12:01

شما باید جداگانه کوئری بزنید

الان از روش join استفاده کردید اکه این روش Inner Join هست و تکرار میشه

یا میتونید در همین کوئری کلمات کلیدی را به صورت لیست برگردونید و در صفحه به یک Repeater وصل کنید

کاربر سایت

کیایی

عضویت از 1393/09/25

  • دوشنبه 18 آبان 1394
  • 12:02

منظورتون کوئری دومه؟

اون رو به صورت لیست بنویسم؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 18 آبان 1394
  • 12:09

این لینک رو ببینید

کاربر سایت

کیایی

عضویت از 1393/09/25

  • دوشنبه 18 آبان 1394
  • 13:04

ممنون از راهنماییتون منتها فایل ضمیمه شده در این لینک مرتبط به موضوع نیست و روش سرچ کردنه

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 18 آبان 1394
  • 13:23

فقط میخواستم روشپیاده سازی رو ببینید و از اون ایده بگیرید

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)