PDA

View Full Version : سوال: نحوه ساخت جستجوی پیشرفته با چند پارامتر



mehdi-ghafari
چهارشنبه 05 مرداد 1390, 19:42 عصر
سلام دوستان
میشه لطفاً راهنمایی کنید که من چطور میتونم یه جستجو مثل سایتهای خبری درست کنم (جستجوی پیشرفته ) که روی چند پارامتر ورودی پردازش کنه
آخه جستجو تو این سایتها ممکنه یک پارامتر وارد نشه یا همه پارامترها مقدار دهی شن
اگه امکان داره یه راهنمایی بفرمائید

ممنون از همه:قلب:

pedram_ns
چهارشنبه 05 مرداد 1390, 22:25 عصر
اگر منظورتون اینه که اگر بعضی فیلد ها خالی بود باید چکار کرد:
یک راهش ایجاد شرطه که اگر فیلدی خالی بود دستور select رو مطابق با اون بنویسه

راه بهتر و ساده تر هم اینه که دستور بالا رو بصورت دستور پایین بنویسید:


SELECT * FROM [tbl] WHERE [Field1] = @Field1 AND [Field2] = @Field2


SELECT * FROM [tbl] WHERE (@Field1='' OR [Field1] = @Field1) AND (@Field2='' OR [Field2] = @Field2)

در این کد ابتدا مقدار field1 جستجو می شه و اگر تکس باکس مربوطه خالی باشه از جستجو صرف نظر می کنه

البته برای ایجاد یه جستجو پیشرفته بهتره ابتدا کلمات وارد شده در هر فیلد رو از هم تفکیک کنید و بعد بر اساس این کلمات با دستور like کدتون رو بنویسید

mehdi-ghafari
پنج شنبه 06 مرداد 1390, 09:29 صبح
ممنون دوست عزیز
من یه تصویر از اون چیزی که تو ذهنم هست رو گذاشتم تا موضوع بهتر بیان شه.
لطفاً یه نگاه کنید
بازم ممنون
72995

pedram_ns
پنج شنبه 06 مرداد 1390, 11:45 صبح
خوب ایتمهای شما زیاد هستن و شاید مجبور باشید در چند دیتابیس سرچ کنید اول باید تعیین کنید که دیتابیستون به چه صورت خواهد بود

چیزی که من به ذهنم می رسه اینه که با شروط مختلف ابتدا کوری دستور select رو مشخص کنید و بعد اجراش کنید مثلا به این صورت و با دستور string.format


Dim query As String = "select * from" + tbl + "where" + ....
Dim con As New SqlConnection(WebConfigurationManager.ConnectionSt rings("ConnectionString").ConnectionString)
Dim selectsql As String = String.Format("{0}", query)

با این دستور مقدار متغییر query به عنوان دستور select شما جایگزین میشه و عمل می کنه

mehdi-ghafari
شنبه 08 مرداد 1390, 19:59 عصر
بازم ممنون از راهنمایی تون دوست عزیز
خوب به نظر شما اگر ما رشته کوئری رو اینجور بسازیم مسئله امنیت مطرح نمیشه؟
و اینکه آیا این تنها روش موجود هست؟

مجدداً ممنون

mehdi-ghafari
سه شنبه 09 اسفند 1390, 15:39 عصر
دوستان من از روش دوست خوبم پدرام استفاده کردم و کارم رو موقتی راه انداختم ولی خوب این روش استانداردی نیست
توی صفحه بندی مخصوصا صفحه بندی پایگاه داده اصلا کارایی نداره.
من جستجو کردم و به نتیجه نرسیدم. اگه لطف کنید حداقل یه منبع معرفی کنید ممنون میشم

naser2009
چهارشنبه 10 اسفند 1390, 00:42 صبح
سلام دوسته من

2 راه دارید که یکیش همون راهی که دوستمون گفتن یعنی شبیه سازی جستجوی ترکیبی با استفاده از and و or و ارسال پارامترهای null
و راهی دیگه استفاده از دستورات linq هست که کار رو خیلی براتون آسون میکنه و پیشنهاد من هم همینه

در صورت استفاده از راه حل اول از stored procedure و paging در sql استفاده کنین تا نتایج در صورتی که خیلی زیاد هستن برنامه رو با مشکل روبرو نکنه.

یاعلی مدد.

mehdi-ghafari
پنج شنبه 11 اسفند 1390, 18:05 عصر
ممنونم از توجهتون
میشه لطفا کمی بیشتر در مورد این paging در sql توضیح بدید؟

ممنونم

siamat
سه شنبه 14 مرداد 1393, 16:43 عصر
سلام دوسته من

2 راه دارید که یکیش همون راهی که دوستمون گفتن یعنی شبیه سازی جستجوی ترکیبی با استفاده از and و or و ارسال پارامترهای null
و راهی دیگه استفاده از دستورات linq هست که کار رو خیلی براتون آسون میکنه و پیشنهاد من هم همینه

در صورت استفاده از راه حل اول از stored procedure و paging در sql استفاده کنین تا نتایج در صورتی که خیلی زیاد هستن برنامه رو با مشکل روبرو نکنه.

یاعلی مدد.

سلام امکانش هست اموزش جستجو رو مثلا برای 3 ایتم از مثال دوستمون رو با کمک linq بگذارید