PDA

View Full Version : مشکل در دستورات mysql در php



parmis
شنبه 16 بهمن 1389, 12:52 عصر
سلام خسته نباشید
من یه برنامه برای شرکتی نوشتم که تو یه قسمتش مشکل دارم.قسمت جستجوش میخوام میخوام نتایج جستجو رو برام صفحه بندی کنه
$sql = "select * from category_profile_data WHERE (tell LIKE '%$search%') LIMIT $offset, $rowsperpage" ;
این دستور بالا رو برای جستجو قرار دادم منهتا قسمت tell LIKE '%$search%' و قسمت LIMIT $offset, $rowsperpage با هم کار نمی کنند در صورتیکه هر کدوم رو جدا تست کردم ودرست کار میکنن
لطفا راهنمایی کنید چون الان خیلی بهش نیاز دارم
آیا ممکنه که دستور like و limit نتونن با هم اینطوری کار کنن؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟
میدونم که اینطوری نیست ولی هر کاری میکنم با هم کارنمیکنن یعنی به جای اینکه محتویات متغیر search رو با فیلد tell بررسی کنه و فقط اونهایی که شرط توشون برقراره رو نشون بده کل دیتابیس رو نشون میده
لطفا کمکم کنید

sattaryekta
شنبه 16 بهمن 1389, 14:46 عصر
احتمالا متغیر search شامل کارکترهاییست که با کودینگ جدول مطابقت نداره.

parmis
شنبه 16 بهمن 1389, 15:02 عصر
ممنون از جوابتون ولی اینطوری نیست
تازه من فقط داخل دیتابیس از عدد استفاده کردم و محتوای متغیر search هم عدد هست و در ضمن همونطوری که گفتم وقتی قسمت limit رو داخل کوئری نمیذارم کاملا درست کار میکنه ولی وقتی اون رو به کوئری اضافه میکنم کار نمیکنه و کل دیتابیس رو بهم نشون میده
ممنون میشم راهنمایی کنید چون خیلی خیلی خیلی بهش نیاز دارم و کارم گیر کرده

parmis
یک شنبه 17 بهمن 1389, 08:53 صبح
کسی نمیتونه جواب سوال منو بده ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟
خیلی بهش نیاز دارم

HRezaei
یک شنبه 17 بهمن 1389, 09:56 صبح
کوئری تون رو اکو کنید شاید بتونه کمکی بکنه.
نوع داده ی فیلد tell رو هم بگید.

parmis
یک شنبه 17 بهمن 1389, 10:16 صبح
کاری که فرمودید رو انجام دادم نتیجه اکو کاملا درسته .نوع متغیر tell هم varchar هستش دوست عزیز
واقعا گیج شدم لطفا کمکم کنید چون باید پروژه رو تحویل بدم
کل فایل رو گذاشتم
از دوستان عزیز میخوام کمکم کنید
66005

MMSHFE
یک شنبه 17 بهمن 1389, 10:16 صبح
با سلام، اين دستورات رو اجرا كنيد و خروجي اونها رو بگذاريد تا ببينيم مشكل از كجاست:


$sql="select * from category_profile_data WHERE (tell LIKE '%$search%') LIMIT $offset, $rowsperpage";
echo("$sql<BR/>\n");
$result=mysql_query($sql);
echo(mysql_error()."<BR/>\n");

موفق و مؤيد باشيد.

parmis
یک شنبه 17 بهمن 1389, 10:24 صبح
نتیجه اجرای کوئری
select * from category_profile_data WHERE (tell LIKE '%2%') LIMIT 0, 5

ممنون که سعی در کمک کردن به من رو دارید
امیدوارم با راهنمایی شما ها مشکلم حل بشه

sattaryekta
یک شنبه 17 بهمن 1389, 10:38 صبح
شاید Structure فیلد tell عددی هست. :لبخند:

بعد: این چه پروژه ایست که کل فایل را Sahre کردی برای دانلود ؟؟؟؟؟؟؟

MMSHFE
یک شنبه 17 بهمن 1389, 10:40 صبح
با سلام، ميشه يك تغيير توي كدتون ايجاد كنيد:


SELECT * FROM `category_profile_data` WHERE (`tell` LIKE '%2%') LIMIT 0 , 5
نكته: اسامي جداول و فيلدها رو توي ` (Back Quote) بگذاريد.
ضمناً در پاسخ دوستمون هم بايد بگم كه LIKE توي MySQL روي فيلدهاي عددي هم عمل ميكنه.
موفق و مؤيد باشيد.

parmis
یک شنبه 17 بهمن 1389, 10:42 صبح
محترم پروژه رو share نکردم یه نمونه sample هستش که فقط یه کارایی از چیزی رو که میخوام توش گذاشتم

parmis
یک شنبه 17 بهمن 1389, 10:53 صبح
جناب MMSHFE (http://barnamenevis.org/member.php?55504-MMSHFE) ممنون از اینکه پیگیر مشکلم هستید
کاری که فرمودید رو انجام دادم تغییری نکرد
نتیجه درست جستجو رو داخل صفحه اول نتیجه نشون میده و در صفحات بعدی ، کل اطلاعات دیتابیس رو نشون میده
نمونه فایل رو هم فرستادم ممنون میشم یه نگاهی بهش بندازید

sattaryekta
یک شنبه 17 بهمن 1389, 11:12 صبح
سلام دوست عزیز
دستور Like به نسخه MySQL بستگی نداره؟

parmis
یک شنبه 17 بهمن 1389, 11:23 صبح
فکر نمیکنم بستگی داشته باشه چون بدون دستور limit خیلی راحت جواب میده

MMSHFE
یک شنبه 17 بهمن 1389, 11:35 صبح
با سلام، به اين دستور دقت كنيد:
دستور SQL :


SELECT * FROM `category_profile_data` where (`tell` LIKE '%$search%')

اين دستور كاملاً كار ميكنه (با كد خودتون تست كردم).
اما چند نكته:
1- چون شما توي كدتون از مقدار search استفاده ميكنيد، بايد دقت كنيد كه در لينكهاي صفحه بندي پايين صفحه، اين مورد رو هم بفرستيد چون در صفحات بعدي ديگه search رو نداره و همه ركوردها رو بر ميگردونه.
2- متغيرهاي numrows$ و totalrows$ قبل از اجراي Query مقداردهي ميشن و تعداد كل سطرها رو برميگردونن نه تعداد سطرهاي منطبق بر Query رو.
اين موارد رو اصلاح كنيد. درصورت تمايل، براي انجام روش درست صفحه بندي، جدول category_profile_data رو همراه با چند ركورد ضميمه كنيد تا كد صفحه بندي رو براتون بنويسم.
موفق و مؤيد باشيد.

parmis
یک شنبه 17 بهمن 1389, 11:45 صبح
خیلی ممنون
خیلی خیلی لطف میکنید
چشم براتون ارسال کردم
لطف شما رو جبران میکنم
66006

MMSHFE
یک شنبه 17 بهمن 1389, 23:41 عصر
با سلام، براتون كد رو اصلاح كردم. لطفاً بررسي كنيد.

parmis
دوشنبه 18 بهمن 1389, 09:06 صبح
خیلی لطف کردید
چشم بررسی میکنم
واقعا نمیدونم چطور از لطف شما تشکر کنم

MMSHFE
دوشنبه 18 بهمن 1389, 09:13 صبح
نيازي به كار خاصي نيست. همين زبان فارسي كافيه! احساس مفيد بودن برام كفايت ميكنه.
هر چيزي را زكاتي است و زكات علم، نشر آن است.
يا به قول معروف:
داني كه چرا خدا تو را داده دو دست | من معتقدم كه اندر آن سرّي هست
يك دست به كار خويشتن پردازي | با دست دگر ز ديگران گيري دست
موفق باشيد.

parmis
دوشنبه 18 بهمن 1389, 09:16 صبح
وای یه دنیا ممنون
دست گلتون درد نکنه
امیدوارم دلتون همیشه شاد باشه
من چطور میتونم این لطف بینهایت شما رو جبران کنم؟؟؟؟؟؟
چون کار خیلی بزرگی برای من انجام دادین

MMSHFE
دوشنبه 18 بهمن 1389, 09:22 صبح
كافيه روي دكمه تشكر كردن كليك كنيد ! :چشمک: