تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف تقوم بعمل صفحات للمواضيع :)
#1
بسم الله الرحمن الرحيم ..
نفرض انك قمت ببرمجة منتدى او مدونة مثلا .. و كانت تحتوي على مواضيع .. و اردت ان تقوم بصنع صفحات للمواضيع ..
مثلا .. اذا كان لديك 24 موضوع .. و اردت وضع 5 مواضيع في كل صفحة .. فسيكون العدد الكلي للصفحات هو 5 .. لكن كيف ستقوم بصنع ذلك
هذا الكود يمكنك من ذلك
كود :
Try
            Dim ItemsNumber As Integer = 30 'عدد العناصر في كل صفحة
            Dim All As Integer = 724 'العدد الكلي للعناصر
            Dim list As New ArrayList() ' صناعة مصفوفة ليتم تضمين العناصر فيها
            For i As Integer = 1 To All ' اضافة العناصر في المصفوفة
                list.Add("<a href=""Members.aspx?ID=" + i.ToString + """ target=""_blank"">Member " + i.ToString + "</a>")
            Next
            Dim Pages As Double = list.Count / ItemsNumber 'الحصول على عدد الصفحات
            Dim Rounded As Integer = Math.Round(Pages) 'تحويل عدد الصفحات الى عدد صحيح
            If Rounded < Pages Then
                Pages = Rounded + 1
            Else
                Pages = Rounded
            End If
            Dim Count As Integer = list.Count 'الحصول على عدد العناصر في المصفوفة
            d.InnerHtml = ""


            page = Val(Request.QueryString("Page")) 'الحصول على المدخلات من الرابط
            If Not page = Nothing And Not page = "0" Then


                If page = Pages Then 'اذا كانت الصفحة هي اخر صفحة
                    If Count <= ItemsNumber Then 'اذا كانت الصفحة هي الوحيدة يتم اضافة جميع العناصر
                        For i = 0 To Count - 1
                            d.InnerHtml += list(i) + "<br/>"
                        Next
                        Button1.Enabled = False
                        Button2.Enabled = False
                    Else 'اذا لم تكن الصفحة هي الوحيدة .. لكنها الاخيرة
                        Dim PreviousItem As Integer = (page - 1) * ItemsNumber 'يتم الحصول على العناصر التي تحتويها البيج القبل الاخيرة
                        For i = PreviousItem To Count - 1 'تتم هنا الكتابة بصورة اعتيادية .. لكن العناصر تبدا من اخر عنصر في البيج التي تسبقها
                            d.InnerHtml += list(i) + "<br/>"
                            Button1.Enabled = False
                        Next
                    End If
                ElseIf page = 1 Then 'اذا كانت الصفحة هي الاولى
                    For i = 0 To ItemsNumber - 1
                        d.InnerHtml += list(i) + "<br/>"
                        Button2.Enabled = False
                    Next
                Else 'اذا لم تكن الصفحة الاولى او الاخيرة
                    Dim X As Integer = (page - 1) * ItemsNumber 'يتم تحديد العناصر التي يجب اضافتها
                    For i As Integer = X To X + ItemsNumber - 1 'تتم الاضافة
                        d.InnerHtml += list(i) + "<br/>"
                    Next
                End If


                lastpage = Pages.ToString
            Else
                Response.Redirect("?Page=1")
            End If
            Label1.Text = "Page " + page.ToString + " From " + Pages.ToString + " Pages"
        Catch
            Response.Redirect("?Page=1")
        End Try

لمن يريد تحميل المثال من هنا

تحياتي ^_^

ملاحظة : تم تعديل المشاركة حيث كان هناك مشكلة نبهني عليها الاخ سعود جزاه الله خيرا .. وتم حلها بفضل الله
الشمس اجمل في بلادي من سواها .. و الظلام
حتى الظلام هناك اجمل فهو يحتضن العـــراق :o
الرد }}}}
تم الشكر بواسطة: سعود
#2
هذا المثال راائع جدا جدا
هل يمكن ربطه بجدول بالقاعدة .. ساحاول لاحقا.....اما الان كل عام وانت بخير.
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#3
بصراحة انا اعشق طريقة تصفح البيانات مجموعة مجموعة وكان لي سؤال كبير بالمنتدى الاول لم استطع فهم شرح الاخ طارق رغم انه واضح فاكتفيت بالنسخ واللصق...آمل منك اخي بعد العيدSmileSmileSmile ان تعمل مثال مربوط بقاعدة بيانات
وشكرا مقدما
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#4
اخي الكريم جرب هذا التعديل وانظر للمشكلة
كود :
Dim ItemsNumber As Integer = 10 'عدد العناصر في كل صفحة
            Dim All As Integer = 103 'العدد الكلي للعناصر
هذا الذي كنت احاول حله
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#5
بسم الله الرحمن الرحيم
كل عام و انت بمليون خير اخي سعود ..
اتصور المشكلة هي ان اخر بيج يظهر فيها 10 عناصر بدل من 3 اليس كذلك ؟
الحمد لله لقد توصلت الى حل لهذه المشكلة .. و هي ان نعرف اخر عنصر من البيج الذي سبقها .. (القبل الاخير) .. و من ثم ناخذ ما بعده فقط
ارجو منك ان تنظر المثال
اما بالنسبة لقواعد البيانات فان خبرتي بها معدومة تقريبا .. و انا استخدم طريقة اخرى للحفظ و الاستدعاء قد ترونها اذا وفقني الله و استطعت انشاء المواضيع في هذا المنتدى الرائع
تحياتي لك .. و اتمنى لك عيد سعيد ..و اذا صادفتك مشكلة ارجو منك ان تخبرني لكي نتعاون جميعنا على حلها ^_^
دمت في رعاية الله تعالى
الشمس اجمل في بلادي من سواها .. و الظلام
حتى الظلام هناك اجمل فهو يحتضن العـــراق :o
الرد }}}}
تم الشكر بواسطة: سعود
#6
ماشاء الله تبارك الله فعلا حل معجز
ادعو لي اني اقدر افهم الاكوادSmile
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#7
الاكواد سهلة و مبنية على طريقة بسيطة .. انما التعقيد هو فقط عند الكتابة ..
كل ما يقوم بعمله الكود هو عمل مصفوفة تتكون من ارقام الاعضاء ..
و من ثم يقوم بتقسيم عدد الاعضاء .. على عدد الاعضاء الذي يجب ان يعرض في كل بيج
و من ثم يقوم بالتقريب للحصول على عدد البيجات المضبوط ..
و هذا ما يقوم بفعله هذا القسم من الكود :
إقتباس : Dim list As New ArrayList() ' صناعة مصفوفة ليتم تضمين العناصر فيها
For i As Integer = 1 To All ' اضافة العناصر في المصفوفة
list.Add("<a href=""Members.aspx?ID=" + i.ToString + """ target=""_blank"">Member " + i.ToString + "</a>")
Next
Dim Pages As Double = list.Count / ItemsNumber 'الحصول على عدد الصفحات
Dim Rounded As Integer = Math.Round(Pages) 'تحويل عدد الصفحات الى عدد صحيح
If Rounded < Pages Then
Pages = Rounded + 1
Else
Pages = Rounded
End If
بعدها تبدا الجمل الشرطية بالظهور ..
فاذا كانت هذه البيج هي اخر صفحة .. يقوم الكود بتنفيذ جملتين شرطيتين اخرتين
الجملة الاولى : اذا كانت هذه الصفحة هي الصفحة الوحيدة , اضف جميع العناصر الموجودة في المصفوفة
الجملة الثانية : اذا لم تكن الصفحة هي الوحيدة .. لكنها الاخيرة : يقوم بمعرفة تسلسل اخر عنصر من العناصر في البيج القبل الاخير .. لكي يقوم بكتابة ما بعده ..
اما اذا كانت هذه البيج هي الاولى .. فسيقوم الكود بكتابة العناصر من 0 الى عدد العناصر في كل بيج ( يحدده المبرمج بالطبع )
اما اذا لم تكن الاولى او الاخيرة .. : فيتم تحديد العناصر التي يجب اضافتها .. و اضافتها
هذا هو كل شيء ..
الشمس اجمل في بلادي من سواها .. و الظلام
حتى الظلام هناك اجمل فهو يحتضن العـــراق :o
الرد }}}}
تم الشكر بواسطة: سعود
#8
يوجد لدي فكرة يمكن ان تساعدك في الربط بقاعدة البيانات ..
لماذا لا تقوم بعمل فولدر في السيرفر و لتسميه مثلا IDs
و يحتوي مثلا على اي دي او شيء من هذا القبيل ...
و عندما تريد الاستدعاء .. تقوم بتحويل الملفات الى مصفوفة :
إقتباس :IO.Directory.GetFiles(Server.MapPath("~/IDs"))
و تقوم باستخراجها عن طريق For Each
و اضافة كل منها الى المصفوفة List
و ستضاف بالطريقة الاعتيادية Wink
الشمس اجمل في بلادي من سواها .. و الظلام
حتى الظلام هناك اجمل فهو يحتضن العـــراق :o
الرد }}}}
تم الشكر بواسطة: سعود
#9
شوف التعديل اللي انا سويت اضف قاعدة بيانات ووضعته بها عدد من السجلات وكتبت الكود
كود :
'*******************
            Dim cm As New OleDbCommand("select count (tid)  from tb", conn)
            If conn.State = System.Data.ConnectionState.Closed Then
                conn.Open()
            End If
            Dim xcount As Integer = cm.ExecuteScalar
ثم العدد الكلي all اسندت له المتغير ومشى الامر على مايرام
كود :
Dim All As Integer = xcount  'العدد الكلي للعناصر

بصراحة المثال قمة بالروعة احتاج اعدل بحيث يكون الارتباط لصفحة حسب الاي دي من السجل ثم بعد ذلك اضيفها للنسخة عندي من المنتدى.
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#10
رائع اخي ..
ملاحظة قد تفيدك .. الكود يستعمل حلقة التكرار for و الاي دي للاستخراج .....
فبمجرد انك حصلت على الـ Count , فقد اكملت نصف المهمة .. حيث انك حصلت على الاي دي لكل عنصر
لكن لدي سؤال .. هل يمكنك استخراج قيمة من الاي دي ؟
مثلا اذا كان لديك قاعدة بيانات بها 3 جداول
الاول الاي دي .. و الثاني الاسم .. و الثالث الايميل
هل تستطيع استخراج الايميل مثلا من الاي دي ؟
اذا كنت تستطيع ذلك .. فسيصبح الامر منطقيا و سهل جدا !!
الشمس اجمل في بلادي من سواها .. و الظلام
حتى الظلام هناك اجمل فهو يحتضن العـــراق :o
الرد }}}}
تم الشكر بواسطة: سعود


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Lightbulb [مقال] من الافضل Table أو Div في تنسيق صفحات الويب ؟ محمد الساعدي 0 651 13-11-14, 11:04 AM
آخر رد: محمد الساعدي
  بالراحة خالص(خطوة بخطوة شرح كافة صفحات المنتدى) سعود 12 1,569 22-08-13, 10:35 PM
آخر رد: سعود

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم