الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف تقسم الصفحات حسب الحقول ؟؟

مغلق
بدأه محمد خليل أبو صلاح في 19 مارس 2002 · 17 رد · 1,302 مشاهدة · في منتدى تصميم صفحات الويب
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

أتمنى من ذوي الخبرة الاهتمام بالرد على هذا الموضوع المهم جماليا و من ناحية سرعة استعراض الصفحة ..

لو نلاحظ في مشروع سجل الزوار في هذا المنتدى مثلا نجد أن هناك صفحة لمشاهدة التوقيع.. لكن ماذا يحدث لو كان هناك 40 توقيع؟؟

و هل ستكون هناك نفس سرعة استعراض الصفحة لو كان هناك 4 ردود في موقع اخر ؟؟ طبعا لا ..

و قد رأيت أكوداد لكن معقدة جدا جدا و شبه مستحيلة تقوم بتقسيم الصفحة الى صفحات معتمدة على نظرية ال position في تجزأة الصفحة .. لذا أرجو من الجميع التفاعل معي في هذه النقطة الهامة جدا كما أنا أراها ..

و لكم خالص الشكر ..

You can fly while you can touch the sky

#2

ساعطيك مجرد فكرة وحاول تطبيقها ... لنجعل البرنامج يحصي عدد السجلات ومن ثم نضع هذا العدد في متغير ولنفرض SS ولنقل

rs.pagesize = ss ، فإذا ضغط المستخدم على زر التالي مثلا (NEXT) فسيقع الحدث التالي أن الصفحة = الصفحة + 1 :) اعرف عقدتها زيادة ونفس الموضوع في حال لو ضغط المستخدم على الزر السابق(PREV)

هل الموضوع واضح اخي محمد :confused: :confused:

#3

نعم انا أشارك الأخ محمد في معاناته .. فلقد سألت من قبل هذا السؤال ولكنني للأسف لم أفهم شيء من الإجابة .. ووجدت عدة أكواد ولكنها غير مفهومه .. أظن انها تحتاج إلى شرح تفصيلي كي تفهم وليس بهذه السهوله

أما عن رد الاستاذ أحمد .. صراحه منطقي .. سأحاول تجربته

#4

أخوي الجفري...

طريقتك صحيحه 100%...

لكن معقدة:D

#5

أخوي الجفري شكرا لك فهمت قصدك...

لكن نقطة اخيرة انا لاحظت شريط العنوان به

www.ssdf.com/sdsd.asp?recordposition=2

فما تفسير ذلك؟؟ و ياريت نغلبك بمثال .....

و شكرا لك ...

You can fly while you can touch the sky

#6

اهلا اخ محمد ،،،

بصراحه هذا السؤال من جد كنت ابغى إجابته ،، لكن برضوا في كل مره القى الإجابة معقـــدة :confused:

#7

أنا أخ احمد جربت الطريقة لكن ما طلع معي حقل واحد في كل مرة

حيث حددت القيم مثل ما ذكرت .....

سويت قاعدة بيانات بها عدد من الأسئلة ..

10 حقول مثلا ....

و سويت صفحة بها اتأكد من معلومات الطالب و اذا بلت المعلومات ينتقل لصفحة الأسئلة و عن طريق session("studentId") و جعلت

rs.PageSize=1 لكن لم تستعرض حقلا حقلا ...

لا أعلم ما المشكلة ... لو كتبت مثال على المعطيات السابقة ..

فقط لصفحة الأسئلة و الباقي سهل ان شاء الله و ينحل بعد

حقول التجارب .. ;)

و شكرا للمتابعة .. ان شاء الله للجميع اذا انحلت المشكلة

راح أشرحها بالتفصيل الممل جدا جدا للمبتدئين..

You can fly while you can touch the sky

#8

تسلم اخ محمد ،، :)

تراني من المبتدأين جدا جدا ،، يعني إن شاء الله ليه نصيب

تحياتي

#9

السلام عليكم جميعا

اولا اعتذر عن التأخير لاني مشغول نوعا ما ثانيا أخي محمد الطريقة التي ذكرتها انا هي باستخدام Form والتي ذكرتها أنت باستخدام Querystring وانت تعرف طبعا أن هناك فرق بينهما .

وبالنسبة للمثال فهذا هو

<%
dim PageSize ' عدد السجلات التي ستظهر في الصفحة
dim PageCount '  عدد الصفحات
dim currenpage '  الصفحة التي نريد عرضها
dim rs 

pagesize = 10

If Request.QueryString("page") = "" Then
currenpage = 1
Else
currenpage = CInt(Request.QueryString("page"))
End If

' جملة الاستعلام الخاصة بك تضعها هنا

rs.PageSize = PageSize

' نحصل على عدد الصفحات بواسطة عدد السجلات
PageCount = rs.PageCount

' في حالة حدوث خطأ ووضع رقم غير موجود
If currenpage > PageCount  Then currenpage = PageCount
If currenpage < 1 Then currenpage = 1

' الذهاب للصفحة المختارة	
rs.AbsolutePage = currenpage 
%>

Page <%= currenpage %>
of <%= PageCount %>


أتمنى أن يكون واضحا بما فيه الكفاية واذا لم يكن كذلك فأعطوني فرصة حتى اعمل مثال كامل .

#10

هناك عدة حلول ، و الحل يعتمد على قاعدة البيانات المستخدمة ...

قواعد بيانات أكسس : يمكنك أستخدام طريقة AbsolutePage أو GetRows

قواعد بيانات MySQL :لا يمكنك أستخدام طريقة AbsolutePage لأنها لا تتعامل مع المؤشرات على حد علمي

، يمكنك تقسيم الحقول بأستخدام دالة Limit(n1,n2) في جمل الأستعلام مثال

أذا كنت تريد عرض 5 حقول في كل صفحة

select * from table1 Limit(0,4) -- الصفحة الأولى

select * from table1 Limit(4,9) -- الصفحة الثانية

لست متأكد منها

هل ابد بالصفر لصفحة الأولى أو 1 ...

قواعد بيانات MSSQL: كلا الطريقتين ، هناك طرق أفضل بكثير مع MSSQL أستعمال ال Stored Procedure sp

تخيل جدول فيه 2000 حقل :بأستخدام sp : يمكنك عمل تقسيم الحقول في ال sp و ماعليك سوى

أعطاءه رقم الصفحة و عدد البيانات في كل صفحة و عدد الحقول الناتج = عدد البيانات في كل صفحة ،

أذا كانت عدد البيانات في كل صفحة = 10 فعدد البيانات يكون 10 بس ...

أذا كان عدد الحقول كبير فطريقة AbsolutePage تكلف الكثير لأنها تستوجب وجود البيانات على كمبيوتر الزبون قبل التعامل معها

( يجب أن تكون قيمة CursorLocation =adUseClient )، تكون هذه الطريقة مجدية

أذا كان عدد البيانات قليل أو يكون مصدر البيانات و البرنامج على نفس الجهاز ...

طريقة GetRows : هي الأفضل للتعامل مع عدد كبير من البيانات و بسرعة لأنها تستخدم مؤشر ذو أتجاه

واحد فقط (إلى الأمام فقط) ، و لا تحتاج تواجد البيانات على كمبيوتر الزبون ...

تعاريف:

المؤشرات هي طريقة لعرض البيانات و التعامل مع الحقول و التحرك من حقل إلى آخر ..

أنواعها:

Forward-Only Cursors مؤشر إلى الأمام فقط :

تصفح البيانات إلى الأمام فقط ، و هذا هو أخف و أسرع المؤشرات ..

Static Cursors المؤشرات الثابتة:

يمكنك تصفح البيانات بجميع الأتجهات ،

و لكن البيانات ثابتة لا تتغير، أي تغيير يطرأ على البيانات من مستخدم أخر يكون غير مريء .

Keyset Cursors :

سميت ب Key لأنها تعتمد على الرقم المعرف للجدول ، هذ النوع من المؤشرات

يعرض لك البيانات و التغيرات التي تحصل لها ، ولكنها لا تعرض البيانات

المدخلة من قبل مستخدم أخر ...

Dynamic Cursors المؤشرات الداينمكية أو المتغيرة:

يعرض لك البيانات مع جميع التغيرات التي تحصل لها من أي مستخدم

cursor
A database element that controls record navigation,
 updatability of data, and the visibility of changes 
made to the database by other users.
====
A cursor keeps track of the position in the 
result set, and allows you to perform 
multiple operations row by row against 
a result set, with or without returning to 
the original table. In other words, 
cursors conceptually return a result set based 
on tables within the databases. 
The cursor is so named because it indicates the 
current position in the result set, just as the 
cursor on a computer screen indicates current position.
#11

شكرا اخ MR. ASP و اكيد شكرا للأخ أحمد الجفري ....

طبعا انا اشتغلت معي قضية شريط التمرير first back next last

لكن بقيت مشكلة عرض الحقول حقلا حقلا ..

سأجرب الردود لعلها تحل ما أعاني منه و أرد عليكم..

على العموم شكرا للرد بسرعة ..

You can fly while you can touch the sky

#12

بسيطة عدل قيمة ال PageSize من 5 إلى 1 .

#13

تحية للجميع .. أنا جربت الطريقة لكن عقدتني ..لكن قبل ذلك أود أن انبه الأخ MR.ASP أن ملفه المرفق فارغ ..

سأضع الكود الذي سبب لي المتاعب ..


[l]

// cn is the connection object

// I have data base called students with std table

set objrs=createObject("ADODB.recordset")

objrs.open "std",cn,3

// this function should change the student by clicking the button //

// here is the trouble ....

function printStudents(rs,curPage)

while not rs.eof

rs.movenext

wend

end function

%>

objrs.pageSize=1

page=request("page")

if page="" then page=1

if page

objrs.absolutePage=page

// this is my SQL

set rs=cn.execute("select * from std")

printStudents rs,page

%>

response.write objrs.pagesize%>

 

 

الطالب :

 

[/l]

طبعا أنا سويت دالة بحيث تأخذ رقم السجل و رقم الصفحة السابقة و بالتالي عند كل ضغطة على الزر تتغير هذه المتغيرات و بالتالي ينتقل للسجل الذي يليه ... و هكذا حتى اخر سجل ..

أرجو ايجاد حل للمشكلة أو طرح فكرة تؤدي الغرض..

و شكرا لحسن تعاونكم..

You can fly while you can touch the sky

#14

عند محاولتي لتحميل الملف

ظهرت هذه التحذيرات

Warning: open_basedir restriction in effect. File is in wrong directory in 
/usr/local/psa/home/vhosts/arabteam2000.com/httpdocs/vb/admin/functions.php on line 1678
Warning: fopen("/tmp/phpYnSeBv", "rb") - Operation not permitted in 
/usr/local/psa/home/vhosts/arabteam2000.com/httpdocs/vb/admin/functions.php on line 1678
Warning: Supplied argument is not a valid File-Handle resource in 
/usr/local/psa/home/vhosts/arabteam2000.com/httpdocs/vb/admin/functions.php on line 1679
Warning: Supplied argument is not a valid File-Handle resource in 
/usr/local/psa/home/vhosts/arabteam2000.com/httpdocs/vb/admin/functions.php on line 1680

و رسالة المنتدى ::

اقتباس
الصورة التي تحاول إرفاقها موجودة مسبقاً

.. إذا كنت تريد تعديلها فتستطيع ذلك من خلال وجودها في الموضوع: كيف تقسم الصفحات حسب الحقول ؟؟

#15

")
Response.Write(" الصفحة رقم:" & CurrentPage & "
")
Response.Write(" عدد الصفحات:" & TotalPages & "
")
do while not RS.EOF
if RS.AbsolutePage >CurrentPage then
Response.Write("
see next page")
exit do
end if
Response.Write( RS("ID").value & ":" & RS("Name").value & "[" & RS.AbsolutePage & "]
")
RS.MoveNext
loop
RS.Close
ADO.Close

if TotalPages>1 then
dim Url
Const p_FirstPage="|<<"
Const p_PrevPage="<"
Const p_NextPage=">"
Const p_LastPage=">>|"
Url="pagging1.asp?page="
Response.Write("

")
if CurrentPage >1 then
Response.Write("" & p_FirstPage & " " )
Response.Write("" & p_PrevPage & " " )
Else
Response.Write( p_FirstPage & " " )
Response.Write( p_PrevPage & " " )
End if

if CurrentPage<>TotalPages then
Response.Write("" & p_NextPage & " " )
Response.Write("" & p_LastPage & " " )
else
Response.Write(p_NextPage & " " )
Response.Write(p_LastPage & " " )
end if
Response.Write("
")
end if
Response.Write("
#16

")
Response.Write(" الصفحة رقم:" & CurrentPage & "
")
Response.Write(" عدد الصفحات:" & TotalPages & "
")

dim n
for n= PageSize*(CurrentPage-1) to PageSize*CurrentPage-1
if n> UBound(AllRows,2) then exit for
Response.Write( AllRows(0,n) & ":" & AllRows(1,n) & "
")
next


if TotalPages>1 then
dim Url
Const p_FirstPage="|<<"
Const p_PrevPage="<"
Const p_NextPage=">"
Const p_LastPage=">>|"
Url="pagging2.asp?page="
Response.Write("

")
if CurrentPage >1 then
Response.Write("" & p_FirstPage & " " )
Response.Write("" & p_PrevPage & " " )
Else
Response.Write( p_FirstPage & " " )
Response.Write( p_PrevPage & " " )
End if

if CurrentPage<>TotalPages then
Response.Write("" & p_NextPage & " " )
Response.Write("" & p_LastPage & " " )
else
Response.Write(p_NextPage & " " )
Response.Write(p_LastPage & " " )
end if
Response.Write("
")
end if
Response.Write("
#17

شكرا أخ MR.ASP على تجاوبك و سأجرب الطريقة و امل أن تنجح معي فأنا كما تعلم لا أود النسخ و اللصق لكن أريد العمل عن فهم حتي أحسن التصرف في مشاكل برمجية أخرى ..

على العموم شكرا لجهودك معنا ..

You can fly while you can touch the sky

#18

للأسف أخ MR.ASP الكود لا يختلف نوعا ما عن الأكواد التي عقدتني و و يحتوي نفس الأسطر التي استخدمتها لكن ما الفائدة لم أصل لمرادي .. لم أفهم الكود و لم أستطع الوصول لحكاية التنقل بين الملفات عن طريق ال submitting للفورم .. أنا لا أريد التقيد بكتب أو أمثلة موجودة .. هناك عدة متغيرات تفيد في حل المشكلة مثل pageSize و pageCount و هذا ما أعرفه و هذا يكفيني لكن هناك مشكلة منطقية و أنا للمرة الأولى أجرب طريقة تقسيم الحقول و قد نجحت في عمل شريط التنقل Navigator Bar لكن المشكلة كانت عندي في نقل الصفحة إلى التالية عن طريق الضغط على زر التالي لا الوصلة ..و الزر من نوع submit و إن لم تتضح الفكرة أرجو الإطلاع على كود الصفحة الذي وضعته في الصفحة السابقة من هذا الموضوع و تجربتها و معرفة نوع المشكلة ..و أكيد هي منطقية ..

و شكرا لكم جزيلا ..

You can fly while you can touch the sky

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…