PDA

View Full Version : سوال: پیدا نشدن جواب در کوئری جستجو



numberone1
چهارشنبه 19 بهمن 1390, 14:56 عصر
سلام
من برای سرچ داخل سایت از
% %LIKE
استفاده میکنم ولی اگر داخل دیتا بیس فرضا کلمه دکتر فریبا فخار باشه بعد سرچ کلمه دکتر فخار نتیجه 0 برمیگردونه
توی php myadmin هم امتحان کردم ولی نتیجه باز خالی برمیگرده
ولی اگر بجای دکتر فخار یا فخار کل عبارت و سرچ کنم یعنی دکتر فریبا فخار نتیجه رو از دیتابیس میخونه و برمیگردونه
کوئری سرچم رو به چه شکلی بنویسم که نتیجه مطلوب داشته باشه؟

yones_safari
چهارشنبه 19 بهمن 1390, 15:54 عصر
قبل از اینکه کوئری رو ارسال کنی با تابع str_replace به جای فاصله ها در جمله % قرار بده.تا نتیجه مطلوب تو رو بده.:چشمک:

MSN_Issue
چهارشنبه 19 بهمن 1390, 15:56 عصر
میتونی برای سرچ کلمات درخواست شد رو از هم جدا کنی و تکی تکی سرچشون کنی !
مثلا برای "دکتر فخار" میتونی نتیجه ی جستجوی "دکتر" + نتیجه ی جستجوی "فخار" رو با هم نشون بدی.

موفق باشید

MMSHFE
چهارشنبه 19 بهمن 1390, 16:27 عصر
دوست عزیز نباید هم چیزی نشون داده بشه چون LIKE %...% رکوردهایی رو بر میگردونه که عبارت ذکر شده، دقیقاً به همون شکل توش اومده باشه و قبل یا بعدش هر چیزی میتونه باشه اما این کاری که شما میخواین، عکس اینه یعنی اینکه ممکنه یک کلمه بین اون چیزی که شما وارد کردین اومده باشه. میتونید از این حالت استفاده کنید:


$words = explode(' ', $_POST['words']);
$sql = 'SELECT * FROM `table` WHERE (`name` LIKE \'%';
foreach($words as $word) {
$sql .= $word.'%';
}
$sql .= '\')');

خروجی کد فوق، اگه در کادر متن فرضاً «دکتر فخار» نوشته بشه، این Query خواهد بود:
SELECT * FROM `table` WHERE (`name` LIKE '%فخار%دکتر%')
که میشه همون چیزی که شما میخواین یعنی رکوردهایی که توی نام اونها اول کلمه دکتر، بینشون هر عبارت دلخواه و بعد، کلمه فخار اومده باشه و قبل از کلمه دکتر و بعد از کلمه فخار هم مهم نیست چی باشه.
موفق باشید.