با سلام
من یک فروشگاه دارم و قصد دارم چند نوع فیلتر براش قرار بدم مشابه تصویر ،که همگی قابلیت انتخاب داشته باشند ،لطفا راهنمایی کنید چطور این کار رو انجام بدم..
الان مشکل کجاست ؟
توی نمایش مشکل دارید یا فیلتر کردن ؟
من یک جدول تعریف کردم که فیلتر هام داخلش درج میشه ، یک جدول محصولات دارم و و جدول سومی هم که آی دی محصول وآی دی فیلتر در آن درج میشه ،حالا می خوام مقادیر گزینه های انتخاب شده چک باکس ها رو ارسال کنم به یک تابع تا آن تابع محصولی که حاوی تمام این فیلتر ها هست رو نمایش بده .برای مثال اگر آبی و مجلسی انتخاب شده باشه که هرکدام از چک لیست متفاوت هست محصولی نمایش داده بشه که مجلسی آبی باشه..
میتونید لیستی از فیلتر ها که از همین گزینه ها هست تعریف و داخل سشن نگهداری کنید و هر بار لیست را استخراج کنید و فیلتر ها را اعمال کنید
با تیک زدن هرگزینه کد و مقدار را به لیست اضافه کنید
اگر بخواهید میتوانید در URL هم اضافه کنید و لیست رو براساس پارامترهای URL فیلتر کنید
این sp هست که من نوشته ام ALTER PROCEDURE [dbo].[Get_widthsubsub_forDisplay_Product] ( @FoodDevice_co_pr_Id_sub_sub int, @FoodDevice_co_pr_Id_common nvarchar(max), @numberpage int, @countitempage int ) AS SET NOCOUNT ON CREATE table #tableshow ( ID int identity, product_id int, name nvarchar(100), ID_subsub INT, ID_sub INT, countdevice int, descr nvarchar(2000), discount int, active bit, price int, images nvarchar(250), type_d int, rating int, rateing_count int, rate int, parent int ) insert into #tableshow(product_id,name,ID_subsub,ID_sub,countdevice,descr,discount,active, price,images,type_d,rating,rateing_count,rate,parent) select d.[FoodDevice_Device_Id],d.[FoodDevice_Device_Name],d.[Food_Device_Device_Sub_sub],d.Food_Device_Device_Sub, d.[FoodDevice_Device_Count],d.[FoodDevice_Device_Description],d.[FoodDevice_Device_Discount],d.[FoodDevice_Device_Active], d.[FoodDevice_Device_Price],d.[FoodDevice_Device_Image],d.[FoodDevice_Device_Type],d.[FoodDevice_Device_Rating],d.[FoodDevice_Device_Rating_count],d.[FoodDevice_Device_Rate],d.[Food_Device_Device_Parent] from [FoodDevice_co_pr_Id] fc inner join [FoodDevice_Device] d on d.FoodDevice_Device_Id=fc.FoodDevice_co_pr_Id_product inner join [FoodDevice_common_f_value] fv on fv.FoodDevice_common_f_value_id=fc.FoodDevice_co_pr_Id_common inner join [FoodDevice_Sub_Submenu] ss on ss.FoodDevice_Sub_Submenu_Id=fc.FoodDevice_co_pr_Id_sub_sub where (fc.FoodDevice_co_pr_Id_sub_sub=@FoodDevice_co_pr_Id_sub_sub) and (fc.FoodDevice_co_pr_Id_common IN (select * from dbo.[UF_CSVToTable] (@FoodDevice_co_pr_Id_common))) declare @firstrecord int,@lastrecord int select @firstrecord=(@numberpage-1)*@countitempage select @lastrecord=(@numberpage * @countitempage +1) select * , morerecords= (select count(*) from #tableshow ti where ti.ID >= @lastrecord ) from #tableshow where ID>@firstrecord and ID<@lastrecord drop table #tableshow set nocount off
و تصویر بالا مقادیر جدول هست ،همون طور که مشخصه من وقتی مقادیر رو از طریق پارامتر @FoodDevice_co_pr_Id_common ارسال میکنم که با کاما از هم جدا شدند از طریق تابع
[UF_CSVToTable] به آرایه تبدیل میکنم اما مشکل اینجاست که محصولات به صورت تکراری برمیگرداند چون یک محصول ممکن است چند فیلتر داشته باشد ،به ازای هر فیلتر برگردانده میشود و بررسی نمی کند محصولی که همه فیلتر های ارسالی را دارد برگرداند..
خیلی ممنون اگر راهنمایی کنید چطور میتونم حلش کنم..
به زودی یک نمونه آماده میکنم و در سایت قرار میدم
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)