مي خوام نتايج جستجو توي چند صفحه بياد

blackscorpion

New Member
با سلام

من يه اسكريپت جستجو با php نوشتم كه نتايج رو توي يك جدول نشون ميده.

ولي من ميخوام كه تمام اين نتايج توي يك صفحه نباشه و توي هر صفحه تعداد محدودي مثلا

30 تا از نتايج باشه وبقيه اش توي صفحات ديگه ...

مثل همين فروم اين سايت كه يه تعدادي از موضوعات رو به صفحات ديگه منتقل كرده وبراي

اونها يه عدد در پايين صفحه ظاهر ميشه

با تشكر
 

golden

Member
از دستور limit استفاده کن.

مثلا:
کد:
SELECT * FROM UrTableName LIMIT 0,30
این کد باعث میشه 30 تای اول نمایش داده بشه. حالا اگه میخواستی 30 تای دوم نمایش داده بشه به جای 0 در کد بالا بگذار 30

امیدوارم به دردت بخوره
 

golden

Member
این کدی که من نوشتم مربوط به MySql هستش و مربوط به زبان خاصی نمیشه. در هر زبانی اگه از MySql استفاده کنید این کد کار میکنه.اما اگه منظور شما MsSql هستش بنده معذورم چون چیزی درباره MsSql نمیدونم ولی اینم بگم که اصولا یه سری دستورات بین تمام Sqlها مشترکند. شاید اینم از اونا باشه.
 

omidak

Active Member
سلام:
SQLServer 2000 کد Limit رو نداره. باید یک Table از نوع # درست کنید بعد یک شمارش گر بزارید و شماره ID ها رو در اون Table ذخیره کنید . تمام شرط ها رو در این Query قرار دید و بعد از جدول اصلی شماره ها رو Set کنید اونجا بگید که شمارنده از عدد 0 تا 30 رو نشون بده.
این کار برایه صفحه بندیه.
اگر هم میخواید تعدادی از رکورد هایه اولیه رو بگیرید از:
کد:
Select Top 30 From Posts
[quote]
استفاده کنید. :wink:
 

mazoolagh

Active Member
روش بالا overhead داره و efficiency خيلي پايين هست و اصولا نيازي به ساختن جدول اضافي نيست. در عمل بايد يك stored prcedure بنويسي كه فقط همون تعداد ركورد لازم رو برگردونه. يك نمونه تقريبا كاملش اينجاست كه ايده كلي رو ميده :
http://weblogs.asp.net/pwilson/archive/2003/10/10/31456.aspx
(من خودم ازش استفاده نميكنم چون زماني كه اولين بار احتياج داشتم مجبور شدم خودم بنويسم كه البته نسبت به اين روش ساده تر هست ولي در صفحه asp بايد يك كارهايي اضافه انجام بشه)
 

omidak

Active Member
سلام:
نه خیر هیچ گونه مشکلی بر نمیخوره
به این آدرس یه سر بزن:
http://www.asp.net/Forums/default.aspx?tabindex=1&tabid=39
به آمار سایت یه نیگاه بکن. این همه بازدید داره و از این سیستمی استفاده میکنه که من گفتم. و هیچ مشکلی هم نداره و خیلی هم سرعتش بالا هست. پس اگر میخواست سرعتش بیاد پایین هیچ وقط سایت با این سرعت و این همه کاربر و فروم و پست بالا نمیامد :wink:
 

blackscorpion

New Member
goldenعزيز
طرز استفاده از limit رو بلدم ولي كار منو راه نمي اندازه و بحث اعداد پايين صفحه رو هم حل نميكنه اما ازت ممنونم
omidak عزيز
اگر كدش رو توي حاح بتوني بدي خيلي عالي ميشه !
mazoolagh عزيز از شما هم ممنونم (اگر php بود خيلي خوب ميشد ! چون من از .net هيچي سر در نميارم)
 

mazoolagh

Active Member
اين نمونه كد تمام كارش روي mssql هست و هيچ ربطي به php يا asp نداره. شما كافيه در php از mssql_execute استفاده كني تا اجراش كنه!
روش اميدخان هم همينطور هست يعني شما لازم نيست كد php بنويسي و كارها در سمت sql server انجام ميشه (خدا كنه منظور اميد رو درست فهميده باشم!!!)
 

omidak

Active Member
سلام:
ببینید در واقع این کد در SQL2000 هستش
کد:
CREATE PROCEDURE GetPosts_ByPageIndex
	(
		@PageSize int,
		@PageIndex int
	)
AS
	DECLARE @PageLowerBound int
	DECLARE @PageUpperBound int
	SET @PageLowerBound = @PageSize * @PageIndex
	SET @PageUpperBound = @PageLowerBound + @PageSize + 1

	Create Table #PageIndex
	(
		IndexID int IDENTITY (1, 1) NOT NULL,
		PostID int
	)
	Begin
			Insert Into #PageIndex(PostID)
			Select PostID From tblPosts Order BY PostOn DESC
		
		Select P.PostID, PostTitle, PostText, CreatedOn
		From
			tblPost P(nolock),
			#PageIndex PageIndex
		Where
			P.PostID = PageIndex.PostID AND
			PageIndex.IndexID > @PageLowerBound AND
			PageIndex.IndexID < @PageUpperBound
		ORDER BY 
			PageIndex.IndexID
	End
 

golden

Member
از بحث هاي مربوط به asp.net که بگذریم شما این تاپیک را باز کردی که جوابت را بگیری.منم میخواهم که کمکت کنم.فقط لطف کن و این جمله را توضیح بده:
طرز استفاده از limit رو بلدم ولي كار منو راه نمي اندازه و بحث اعداد پايين صفحه رو هم حل نميكنه اما ازت ممنونم
 

blackscorpion

New Member
golden عزيز

فكر مي كنم بايد بيشتر توضيح بدم ...

بخش اول صحبتم كه معلومه ... بخش دوم صحبت هم كه مربوط به اعداد هستش بايد به پايين

همين صفحه رجوع كني تا نمايش چند دسته اي اطلاعات رو ببيني :

بعدي 1و2 قبلي

اما sarallah كه مدير انجمن هستش pm داد كه اين جا رو ببين :

اينجا

و جوابم رو تا حدودي داد .

از تو هم كه وقت گذاشتي ممنونم ولي چرا يه نموري عصباني ؟ به هر حال ببخشيد...
 

جدیدترین ارسال ها

بالا