PDA

View Full Version : مشکل در جستجوی کلماتی که حرف ی رو دارند



ali zi zeperto
یک شنبه 21 فروردین 1390, 07:17 صبح
سلام
اگر بر اساس متنی که وارد تکست باکس شده و حرف ی هم جزو کلمه اش هست توی بانک جستجو کنم نتیجه ای رو بر نمی گردونه.با mysql کار می کنم و فیلدی که بر اساسش جستجو می کنم هم توی بانکم utf8 و persian_ci هست.البته از اول اینجوری نبود.وقتی توی خود mysql کوئری رو اجرا می کنم نتیجه داره اما وقتی از طریق php اینکار رو می کنم هیچ جوابی نداره.
چیکار باید کرد؟

eshpilen
یک شنبه 21 فروردین 1390, 08:32 صبح
احتمالا مشکل بخاطر اینه که دوتا حرف ی داریم. یکی فارسی و یکی عربی.

binyaft
یک شنبه 21 فروردین 1390, 11:54 صبح
همه رو با ی فارسی عوض کن!

رضا قربانی
یک شنبه 21 فروردین 1390, 12:58 عصر
داداش مشکلت از بانکت هست !!!!!!!!!
برای من utf8-general_ci هست و هیچ مشکلی ندارم
general_ci تمام زبان ها رو پشتیبانی می کنه و یه کم کار کردن باهاش سخته ، اما درکش کنی که چطوری بخونیش و در بانکش ذخیره کنی هیچ موقع توی برنامه نویسی با زبان مشکل نداری !!

ali zi zeperto
دوشنبه 22 فروردین 1390, 07:13 صبح
داداش مشکلت از بانکت هست !!!!!!!!!
برای من utf8-general_ci هست و هیچ مشکلی ندارم
general_ci تمام زبان ها رو پشتیبانی می کنه و یه کم کار کردن باهاش سخته ، اما درکش کنی که چطوری بخونیش و در بانکش ذخیره کنی هیچ موقع توی برنامه نویسی با زبان مشکل نداری !!
اولش هم general_ci بود و کار نمی کرد.الان هم گذاشتمش روی persian_ci باز هم کار نمی کنه.وقتی توی query browser کوئری رو اجرا می کنم یعنی کلماتی که حرف ی رو دارند توی کوئری میارم جواب می ده و مشکلی نداره ولی از توی php که می زنم هیچ جوابی بر نمی گردونه.

sobijoon
شنبه 17 تیر 1391, 11:25 صبح
میدونم منم همین مشکل رو داشتم در واقع با ی فارسی مشکل داره. کافیه که توی رویداد keypress تکس باکس هایی که سرچ روشون انجام میگیره بزاری که هر وقت کاربر زد ی فارسی بشه ي
if (e.KeyChar == 'ی') e.KeyChar = 'ي';
هر جا هم که میخوای جستجو کنی اینو تو همون باکس بزار حله

موفق باشید:بوس:

Unique
یک شنبه 18 تیر 1391, 01:51 صبح
راستش همه خیلی پراکنده گفتند ! و اکثر درست !
این مشکل شما مربوط به داده هایی هست که از طریق کیبورد عربی وارد شده و دو حرف را به مشکل انداخته ! یکی حرف ی و دیگر حرف ک. در کیبورد عربی (معمولا فارسی ساز هایی که توسط شرکت های ایرانی روی ویندوز نصب می شوند این مشکل را دارند) این دو حرف به صورت ي , ك هستند !
اولا به collation زیاد ربطی نداره ! ولی بهتره collation را کلا utf8_persian_ci بگرین ! که برای فارسی در نظر گرفته شده !
شما چند راه دارین که هر کدوم معایب و مزایای خودش را داره :
1 - فرمی که دارین از طریق سایت یا نرم افزار اطلاعات را توش وارد میکنید در زمان رویداد onkeypress رشته های شامل این دو حرف را بر اساس کدی که دارند تشخیص و درستش کنید ! که البته این روش مشکل داره و اگه کاربری copy And paste کنه ! به مشکل میخورین !
2 - زمانی که دارین رشته ای را در پایگاه ذخیره مکینید با تابع str_replace این حروف را با مقادیر درستش تعویض و سپس در پایگاه ذخیره کنید !
3 - میتونید یک trigger بنویسین و در زمانی که کاربر update یا insert میکنه رشته ها را با حروف درست تعویض کنید !
4 - اگه پایگاه داده شما تغییر نمیکنه و دارین برای نمایش استفاده میکنید ! با یک update خیلی ساده رشته های مورد نظر را تصحیح کنید !