تقاضای اصلاح دستور جستجو ...

babak869

Member
با سلام
من برای جستجو از دستو زیر استفاده میکنم اما متاسفانه کلمه کلیدی که کاربر وارد میکنه باید دقیقا همانند کلمات موجود در دیتابیس باشه و به حروف بزرگ و کوچک حساسه .

کد:
mysql_query("SELECT * FROM `kala_table` WHERE `kala` LIKE '%$_POST[fild]%' OR `comment_kala` LIKE '%$_POST[fild]%' order by id  DESC ");

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

متشکرم
 

jhoseini

Member

The Character Definition Arrays
to_lower[] and to_upper[] are simple arrays that hold the lowercase and uppercase characters
corresponding to each member of the character set. For example:
to_lower['A'] should contain 'a'
to_upper['a'] should contain 'A'

شاید این عمل کنه :
SELECT * FROM `table_name` WHERE to_lower[`field_name`]='MY_SEARCH_KEY'​
 

alireza82

Well-Known Member
میتونید کلمه ای که برای جستجو وارد شده رو با استفاده از strtolower()
به حروف کوچیک تبدیل و سپش جستجو کنید.:)
تا دیگه مهم نباشه کاربر کوچیک وارد میکنه یا بزرگ
شرمنده جلال اقا با هم پست زدیم.
پس اینم روش php ایش میشه:D
موفق باشید
 

babak869

Member
از جواب دوستان ممنونم
من منظورم رو خوب بیان نکردم
من توی دیتابیس مثلا یه کالا بنام Adobe دارم . میخوام اگه کلمه adobe یا ADOBE یا AdoBE هم وارد شد بازم اون رکورد رو پیدا کنه . چون php به حروف کوچک و بزرگ حساسه . آیا راهی هست که این حساسیت رو از بین ببره و با هر حرفی اون کلمه رو تشخیص بده؟
 

alireza82

Well-Known Member
شما هر کدوم از این دو تابع حالا چه اونی که مال mysql بود و چه اونی که مال php بود رو استفاده کنی کاربرت چه وارد کنه adobe یا ADOBE یا AdoBE
جستجو برای adobe انجام میشه
موفق باشید
 

babak869

Member
من کد مربوطه رو بصورت زیر نوشتم اما متاسفانه ایراد میگیره
کد:
mysql_query("SELECT * FROM `kala_table` WHERE to_lower[`kala`] LIKE '%$_POST[fild]%' OR to_lower[`comment_kala`] LIKE '%$_POST[fild]%' order by id  DESC ");

منتظر راهنماییتون هستم
 

alireza82

Well-Known Member
PHP:
$_POST[fild]=strtolower($_POST[fild]);
mysql_query("SELECT * FROM `kala_table` WHERE `kala` LIKE '%$_POST[fild]%' OR `comment_kala` LIKE '%$_POST[fild]%' order by id  DESC ");
در مورد اون تابع mysql هم باید %$_POST[fild] رو بدید به to_lower نه نام تیبل تون رو
موفق باشید
 

alireza82

Well-Known Member
PHP:
mysql_query("SELECT * FROM `kala_table` WHERE `kala` LIKE '%to_lower[$_POST[fild]]%' OR `comment_kala` LIKE '%to_lower[$_POST[fild]]%' order by id  DESC ");
 

babak869

Member
حیفم اومد فقط یه تشکر خشک و خالی زیر پستتون بزنم
خیلی خیلی از لطف و توجهتون ممنونم
موفق و پیروز باشید
 

abbasjoon

Member
(stristr(element1,element2

من از این تابع استفاده می کنم برای جستجو به حروف کوچک و بزرگ هم حساس نیست. در هر بار توی یک حلقه با fetch فیلدهای مورد جستجو تو بخون بعد با این تابع رکوردهای مورد جستجو رو شناسایی کن . خیلی راحت از دستور mysql . حتما امتحان کن.
 
آخرین ویرایش:

tabib_m

Member
با اجازه اصلاح میکنم:
PHP:
mysql_query("SELECT * FROM `kala_table` WHERE LOWER(`kala`) LIKE '%to_lower[$_POST[fild]]%' OR LOWER(`comment_kala`) LIKE '%to_lower[$_POST[fild]]%' order by `id`  DESC ");
 

jhoseini

Member
mysql_query("SELECT * FROM `kala_table` WHERE LOWER(`kala`) LIKE '%to_lower[$_POST[fild]]%' OR LOWER(`comment_kala`) LIKE '%to_lower[$_POST[fild]]%' order by `id` DESC ");
فرق to_lower با LOWER چیه؟ یعنی mysql دوتا تابع برای یک عمل داره؟
297.gif
 

tabib_m

Member
فرقهایی که من فهمیدم:
1- to_lower برای فیلد نمیتونه استفاده بشه،‌ ولی LOWER چرا.
2- to_lower داخل مقدار ازش استفاده میشه، ولی LOWER مقدار کامل رو به صورت ورودی دریافت میکنه.

به این حرفا خیلی مطمئن نیستم،‌ فقط برداشت شخصی بود...

موفق باشید.
 

alireza82

Well-Known Member
با اجازه اصلاح میکنم:
PHP:
mysql_query("SELECT * FROM `kala_table` WHERE LOWER(`kala`) LIKE '%to_lower[$_POST[fild]]%' OR LOWER(`comment_kala`) LIKE '%to_lower[$_POST[fild]]%' order by `id`  DESC ");

سلام
اجازه ما هم دست شماست قربان:D
محسن جان نقش این LOWER چیه الان؟//!
من ندیده بودمش!! نمیدونم چرا اضافش کردید!
اگه ممکنه یه توضیح بده!
 

tabib_m

Member
Lower کارش اینه که حروف داخل فیلد رو هم کوچیک می کنه (البته به اصل کاری نداره و فقط در مقام مقایسه این کار انجام میشه)
برای مثال کدی که شما گذاشتی، فقط در حالتی برای همه ی عبارات جستجو کار میکنه که مقدار داخل فیلد با حروف کوچیک نوشته شده باشه!
اما کد اصلاح شده، مقدار داخل فیلد رو هم تبدیل به حروف کوچک کرده و بعد مقایسه رو انجام میده.
طبیعتا وقتی طرفین مقایسه، هر دو تا توسط توابع، تبدیل به حروف کوچک بشن، طبق هر گونه جستجو نتیجه حاصل میشه...

موفق باشید.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا