PDA

View Full Version : جستجو



iliamatin
دوشنبه 25 آبان 1388, 08:57 صبح
با سلام
فرض كنيد من يه فرمي دارم كه 4 فيلد داره (مثلا نام،جنسيت،ايميل و سن)
من ميخام با نوشتن هر كدوم از اين فيلدها و كليك بر دكمه ارسال بره و از بانك جستجو كنه و اطلاعاتي كه اين فيلدها را دارن را برام نشون بده.
اگه هر 4 تا فيلد را پر كنيم با يه دستور select كه چندتا فيلد را and ميكنه مشكل حل ميشه
اما من ميخام وقتي مثلا 2 تا از فيلدها هم نوشته شده بود بازم بر اساس اون 2تا جستجو كنه .
دستورشا بايد چجوري بنويسم

iliamatin
سه شنبه 26 آبان 1388, 07:47 صبح
ممنون اوكي شما اسمشا هرچي بذاري درسته. من با like و select دستوراتي نوشتم كه جستجو را انجام ميده اما وقتي فقط يك فيلد داريم مثل همه سايتها كه براي جستجو فقط يه فيلد مشخص كردن اما براي اينكه چند فيلد را بشه پر كرد يا فقط چندتاشا بصورت دلخواه پر كرد و ارسال كرد چجوري بايد عمل كنم؟؟

10david
سه شنبه 26 آبان 1388, 09:02 صبح
با ISSET چک کن اگه مقدار داده شده بود تو QUERY اعمال کن

hajielias@gmail.com
سه شنبه 26 آبان 1388, 09:16 صبح
سلام دوست عزیز
شما ابتدا یه متغیر تعریف کن و مقدارش رو خالی بزار .
حالا تک تک فیلد هایی که می خواهی تو گزارشت بیاد رو چک کن و شرط بزار ببین آیا از ورودی مقداری گرفته یا نه اگر مقدار داشت خب مقدار اون رو به متغییرت اضافه کن اگر نداشت که هیچ . برای تمام متغییرات این کار رو بکن و هر کدوم رو که داری اضافه میکنی با and اون را هم جمع کن
حالا شرط شما تقریبا به طور اتوماتیک درست شده است فقط شما select مربوط رو بنویسید و اون شرط رو استفاده کنید.
در صورت سوال دیگه، بگین تا کمکتون کنم.

s_salavati2002
سه شنبه 26 آبان 1388, 13:44 عصر
دوتا نکته رو بر نظرات دوستان اضافه می کنم:
1. ایندکس کردن یادت نره
2. از like %% استفاده کن

fafa_2000
سه شنبه 26 آبان 1388, 22:36 عصر
مشابه این کد استفاده کن:
select * from `db` where `filed1` like '%$input1%' && `filed2` like '%$input2%'

mahmood3d
چهارشنبه 27 آبان 1388, 09:45 صبح
خوب بزار یک نمونه برات بنویسم.
فرض می کنیم شما 4 تا ورودی داری که هر کدوم رو گرفتی و توی یک متغیر ذخیره کردی (اسم متغیرها $inp1 تا $inp4):


$query="select * from table1 where";
if($inp1!="" and $inp1!=NULL)
$query.="field1 like '%$inp1%' and";
if($inp2!="" and $inp2!=NULL)
$query.="field2 like '%$inp2%' and";
if($inp3!="" and $inp3!=NULL)
$query.="field3 like '%$inp3%' and";
if($inp4!="" and $inp4!=NULL)
$query.="field4 like '%$inp4%' and";
$query=substr($query,0,-4);
mysql_query($query);

iliamatin
پنج شنبه 28 آبان 1388, 09:32 صبح
آقا محمود واقعا ازت تشكر ميكنم
مرسي، خيلي دستت درد نكنه

amirepsilon
پنج شنبه 28 آبان 1388, 12:07 عصر
سلام
دوستان لطفا در مورد '%$inp1%' توضیح بدید که چی هست ؟
رگولار اکسپرشن هست ؟
چطور میتونیم این رو تعمیم بدیم ؟
ممنون

mahmood3d
پنج شنبه 28 آبان 1388, 17:42 عصر
امیر جان مثالی که میتونم برات بزنم مثال از خود سرچ ویندوزه که فکر کنم همه حد اقل یک بار ازش استفاده کردن. کلمه $inp1 یک متغیره که مقدار مورد جستجو رو داخلش ذخیره کردیم. مثلا شما فرض کن که داخل این متغیر کلمه book قرار گرفته.
معادل %book% در سرچ ویندوز میشه *book* یعنی هر چیزی که داخلش کلمه book استفاده شده رو پیدا کن.

amirepsilon
جمعه 29 آبان 1388, 00:05 صبح
این قوانین رو کجا میشه پیدا کرد ؟

fafa_2000
جمعه 29 آبان 1388, 15:35 عصر
میتونی از همون کد خودت ولی به جای and از or استفاده کنی

narsic
شنبه 30 آبان 1388, 11:24 صبح
این قوانین رو کجا میشه پیدا کرد ؟
با سلام
قوانین مربوط به نحوه استفاده هک ها کلمات رزرو شده و خیلی چیز های دیگر هر زبان بهمراه اون در زمان ارائه ارائه میشن .
موفق باشید