PDA

View Full Version : راهنمای در مورد صفحه بندی



spsgorgan
شنبه 19 فروردین 1385, 02:12 صبح
با سلام خدمت دوستان گرامی
قبل از ارائه سوال خودم خواستم عرض کنم
[بنده برای این سوالم خیلی گشتم ولی متاسفانه چیزی پیدا نکردم ! ]
پس خواهشمندم نفرمایید = سرچ کن !
*********************************************
سوال بنده :
یک جدول هست که اطلاعات داخل اون هست . یکی از فیلدهای نوع شاخه اجناس رو مشخص می کنه . اطلاعات با موفقیت ذخیره و بازیابی می شوند .
واما مشکل !
من میخوام در یک صفحه که تقاضای اون بر اساس نوع شاخه هست اطلاعات 5 تا 5 تا چیده بشوند و کاربر بتونه صفحه بعدی اطلاعات که یقینا 5 تای بعدی هست و همچنین 5 تای قبلی رو مشاهده کنه . با دستور limit یکم بازی بازی کردم ولی افاقه نکرد !
امیدوارم تونسته باشم لپ مطلب رو رسونده باشم

cybercoder
شنبه 19 فروردین 1385, 11:49 صبح
1- دستور limit فقط در مورد My-SQL صدق می کنه.
2- http://www.phpfreaks.com/tutorials/43/5.php توضیحات کامل
3- اگر از ODBC استفاده می کنی از fetch_row استفاده کن نه از fetch_array
4- موفق باشی

spsgorgan
شنبه 19 فروردین 1385, 17:49 عصر
ممنون دوست من ولی !...

spsgorgan
شنبه 19 فروردین 1385, 20:58 عصر
عزیز من تونستم از این کد استفاده کنم و کلیه اطلاعات رو مثلا 10 تا 10 تا طبقه بندی کنم . حالا مشکل اصلی من اینه که میخوام این اطلاعات با همین منوال بر اساس یک فیلد خاص مرتب بشوند . یعنی رکوردهایی که مثلا فیلد شاخه اونها شماره 3 هست نمایش داده بشه

arash_hemmat
شنبه 19 فروردین 1385, 23:15 عصر
1- دستور limit فقط در مورد My-SQL صدق می کنه.
بر اساس استاندارد ANSI این دستور استاندارد هست ولی اکثر دیتابیسها کاملا از استانداردها پیروی نمیکنند ولی در mysql و postgresql این استانداردها اعمال شده. اگر میخواهید با php کدی بنویسید که در مورد اکثر دیتابیسها صادق باشه از کلاس ADODB (http://adodb.sourceforge.net)استفاده کنید(از تابع SelectLimit).

عزیز من تونستم از این کد استفاده کنم و کلیه اطلاعات رو مثلا 10 تا 10 تا طبقه بندی کنم . حالا مشکل اصلی من اینه که میخوام این اطلاعات با همین منوال بر اساس یک فیلد خاص مرتب بشوند . یعنی رکوردهایی که مثلا فیلد شاخه اونها شماره 3 هست نمایش داده بشه
خیلی ساده select کنید:


$query = "SELECT * FROM table ORDER BY field WHERE ... LIMIT $limitvalue, $limit";

cybercoder
یک شنبه 20 فروردین 1385, 00:52 صبح
با یه تغییر تو query و استفاده از Orderby مرتب سازی انجام میشه
و برای پیدا کردن فرضا 4 از یه Where ساده هم می تونی استفاده کنی.

موفق باشی

spsgorgan
یک شنبه 20 فروردین 1385, 01:16 صبح
دوستان عزیز ممنون از لطف شما !
نگاه کنید من قبلا هم از این دستور

$Query = "SELECT * from $table_etelaat order by cat limit $from, $max_results ";
استفاده کردم . ولی مشکل باز میدونید چیه این همه شاخه ها رو مرتب میکنه ! این خوبه ولی چطور میشه بهش گفت فقط اونهایی که شماره فیلد cat اونها 3 یا 7 یا کلا $cat هست رو مرتب کن ؟
(دیگه کمک کم داره نزدیک میشه ؟!)

armin390
یک شنبه 20 فروردین 1385, 09:57 صبح
$Query = "SELECT * from $table_etelaat WHERE (cat=3)OR(cat=7) order by cat limit $from, $max_results ";

spsgorgan
چهارشنبه 23 فروردین 1385, 10:50 صبح
ممنونم دوست من

cybercoder
چهارشنبه 23 فروردین 1385, 23:34 عصر
$Query = "SELECT * from $table_etelaat WHERE cat=3 order by cat limit$
UNION
$SELECT * from $table_etelaat WHERE cat=7 order by cat limit "
فکر کنم اینطوری بهتر باشه

armin390
پنج شنبه 24 فروردین 1385, 09:42 صبح
order by cat limit $x
UNION

قبل از union(تعیین تمام رکوردها) که نمی شه مرتب کرد

فکر کنم اینطوری بهتر باشه
اگه هدف ایشون محدود کردن(limit) تعداد رکوردها به صورت مجزا باشه حرف شما درسته؛


بهش گفت فقط اونهایی که شماره فیلد cat اونها 3 یا 7 یا کلا $cat هست رو مرتب کن

spsgorgan
پنج شنبه 24 فروردین 1385, 18:21 عصر
ممنونم دوستان از لطف شما . این مورد کامل حل شد . حالا یک سوال جالب ؟
چطور میشه فهمید کاربر ما چه فیلدهای رو پر کرده که طبق اونها جستجو انجام بشه . مثل سرچ ترکیبی

tabib_m
پنج شنبه 24 فروردین 1385, 23:12 عصر
اگه منظورتون از فیلد ، فیلد های یک فرم هست ، خوب هر کدوم یک نام براشون تعیین شده
میتونید از این راه بفهمید که کدوم فیلد رو پر کرده.

البته اگه منظورتون رو درست فهمیده باشم.

armin390
پنج شنبه 24 فروردین 1385, 23:16 عصر
چطور میشه فهمید کاربر ما چه فیلدهای رو پر کرده که طبق اونها جستجو انجام بشه . مثل سرچ ترکیبی
منظورت رو واضح تر بگو

spsgorgan
جمعه 25 فروردین 1385, 09:49 صبح
ممنون !
من میخوام یه سرچ مثل این آدرسی که دادم داشته باشم . http://www.farsicom.com/info/search_form.asp
جستجو معمولی رو بلدم . حالا چطوری مثلا این سایت جستجوی ترکیبی داشته باشم؟

armin390
جمعه 25 فروردین 1385, 10:41 صبح
می تونید با گذاشتن شرط در هر قدم برای وجود داشتن مقدار در ورودی که توسط کاربر ارسال شده پرس و جوی خود را کامل کنید؛
مثلاً اگه سه تا ورودی داشته باشیم


<form>
<input name="a">
<input name="b">
<input name="c">
<input name="go" type="submit">
</form>

برای تولید یک پرس و جو می تونیم این کار رو بکنیم:


<?php
if(isset($_GET['go'])){
$tq=$query='SELECT * FROM TABLE WHERE (';
if(!empty($_GET['a']))
$query.='AF='.$_GET['a'].')OR(';
if(!empty($_GET['b']))
$query.='BF='.$_GET['b'].')OR(';
if(!empty($_GET['c']))
$query.='CF='.$_GET['c'].')OR(';
$e=($tq==$query)?false:true;
if($e)
$query=substr($query,0,strlen($query)-3);
else
die('No input');
echo $query;
}
?>

این تقریباً ساده ترین مثالی بود که می شد زد!
می تونید شرط هاتون رو اونطور که مایلید اعمال کنید و برای جستجو یک جا از AND یک جا از OR , ... استفاده کنید