النتائج 1 إلى 6 من 6

الموضوع: كيف أقسم المقالة الواحدة إلى عدة صفحات؟ PHP

  1. #1
    عضو فعال جدا
    تاريخ التسجيل
    Sep 2000
    المشاركات
    2,029

    كيف أقسم المقالة الواحدة إلى عدة صفحات؟ PHP



    في مقالة الأخ رضا:
    http://www.swalif.net/softs/showthre...threadid=35386

    تناقش الأعضاء حول فكرة تقسيم المقالات على عدة أقسام، لدي سؤال بحثت عن إجابته طويلاً ولم أجد الإجابة، وهو كيف أقسم المقالة الواحدة إلى ثلاثة أقسام أو أربعة أو حسب الرغبة، سأعطيكم مثال:


    العنوان الرئيسية للمقالة
    محتويات

    العنوان الفرعي (1)
    محتويات

    العنوان الفرعي (2)
    محتويات


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

    لرؤية مثال على ذلك، موقع Sitepoint يحوي على العديد من المقالات والتي هي بدورها مقسمة إلى أكثر من صفحة.





    سردال غير متواجد حالياً


  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    Dec 2000
    المشاركات
    998


    هذا حل مبدئي

    أنشئ جدولا باسم

    article

    ثم خمسة حقول

    article_id,article_author,article_views,article_text,article_page


    article_id

    وقيمته INT auto

    وهو خاص بالرقم التلقائي التسلسلي للمقالة.

    article_author

    وقيمته VCHAR 255

    وهو خاص باسم كاتب المقالة

    article_views

    وقيمته INT

    وهو خاص بعدد قراء المقالة. ويمكنك الاستغناء عنه إذا أردت

    article_text

    وقيمته TEXT

    وهو خاص بنص المقالة


    article_page

    وقيمته INT

    وهو خاص برقم الصفحة للمقالة

    هذا ما يتعلق بالجدول.


    عند عرض قائمة المقالات يكون الرابط هكذا :

    كود PHP:
    showarticle.php?id=$article_id&p=
    حيث p تعني رقم الصفحة


    عند طلب المقالة نستخدم ما يلي :

    كود PHP:
    $query "
    SELECT article_author,article_views,article_text
    FROM article
    WHERE article_id = '
    $article_id'
    AND article_page ='
    $p'
    "

    في الأمر السابق نطلب اسم كاتب المقال، وعدد القراء، ونص المقالة من الجدول article
    حيث رقم المقالة = $article_id وهو الرقم المتغير في الرابط السابق ذكره

    مع تحديد رقم الصفحة $p والافتراضي هو رقم 1



    نحتاج إلى بعض الأوامر البرمجية لضمان صحة الطلب


    أولا نتحقق من قيمة رقم الصفحة

    كود PHP:

    if (!$p) {

    $p=1;


    في الأمر السابق ننظر هل المتغير $p فارغ؟

    فإن كان فارغا فقيمته هو 1

    تلحظ أن علامة التعجب ! تعني في PHP (صفر).

    ثانيا :

    إذا كانت الصفحة المعروضة هي 1 فهذا يعني أن الصفحة الثانية هي 2

    نكتب :
    كود PHP:

    $next_page 
    $page+1
    هنا سيستمر البرنامج في عرض الرقم.

    وتواجهنا مشكلة

    إذا كانت الصفحات 4 فإنه سيضيف رابطا للصفحة الخامسة!

    علينا أن نعرف عدد الصفحات في المقالة

    نطلب هذا من قاعدة البيانات كما يلي :

    كود PHP:

    $query 
    "
    SELECT *FROM article
    WHERE article_id = '
    $article_id'
    "
    ;
    $number mysql_num_rows ($query); 
    نعيد كتابة تحديد رقم الصفحة

    كود PHP:

    if ($p $number) {

    $next_page$p+1;


    في الأمر السابق ننظر هل رقم الصفحة أصغر من عدد الصفحات

    فإن كان رقم الصفحة أصغر فإن رقم الصفحة يزداد برقم 1

    وإن كان رقم الصفحة أكبر من عدد الصفحات فتتوقف الزيادة.

    مثلا :

    المقالة 5 صفحات

    سيعرض الصفحة 1 ، ثم الرابط 2 ، ثم الرابط 3، ثم الرابط 4، ثم الرابط 5

    ثم يتوقف.


    ثالثا :
    يمكنك وضع رابط للصفحة السابقة

    $prev = $p-1;

    حيث ينقص عدد الصفحات برقم

    فإذا كان الرقم واحد فإنه يتوقف لئلا يظهر الرقم 0

    if ($p>1) {

    $prev = $p-1;

    }

    هنا ننظر هل الرقم أصغر من 1؟ فإن كان أصغر توقف.

    ويكون الرابط للصفحة التالية والسابقة هكذا :

    كود PHP:
    if ($p $number) {

    $next_page$p+1;

    echo 
    "
    <a href='showarticle.php?id=
    $article_id&p=$next_page'>الصفحة التالية</a>";

    ورابط الصفحة السابقة

    كود PHP:
    if ($p>1) {

    $prev $p-1;
    echo 
    "
    <a href='showarticle.php?id=
    $article_id&p=$prev '>الصفحة السابقة</a>";

    هذا ما يتعلق بالعرض

    في لوحة التحكم تضع

    1 - خانة لكاتب المقال

    2 - خانة للقسم (إذا رغبت)

    3 - خانة لنص المقالة

    4 - خانة لرقم الصفحة للنص

    وهذه تحتاج إلى درس مستقل ...



    كما ذكرت سابقا، هذا حل مبدئي سريع

    وإلا فأفضل طريقة هي وضع علامة بعد انتهاء السطر المراد أن يكون آخر الصفحة

    مثلا

    إعلام بريدي في حالة وجود ردود جديدة على الموضوع
    {next}
    إلغاء الوجوه التعبيرية في الموضوع

    ثم يقسم النص إلى صفحات على أساس وجود هذه العلامة {next}

    ثم عن طريق أمر التفريق

    explode يمكنك معرفة عدد الصفحات

    وذلك كما يلي :

    أولا :

    نحتاج إلى معرفة عدد العلامات في النص، ويمكن معرفة ذلك بواسطة الأمر substr_count

    كود PHP:

    $number 
    substr_count($article_text"{next}"); 



    $data explode ("{next}",$article_text);

    $text =$data[$p
    حيث $number هو عدد الصفحات.

    لكن عليك أن تضع أول صفحة برقم (صفر).
    كود PHP:
    showarticle.php?id=$article_id&p=
    وإذا أردنا الانتقال إلى صفحة أخرى نطبق الأوامر السابقة.

    بقي شيء وهو أن العلامة {next} ستبقى في النص، لهذا علينا أن نعطي قيمة جديد للنص لكي نعرضها
    كود PHP:
    $show_text $text;
    $show_text str_replace ("{next}","",$show_text)

    echo 
    $show_text 
    لأننا لو مسحنا العلامة من النص الأصلي فلن يتمكن البرنامج من معرفة عدد الصفحات.

    لهذا أبقينا على النص الأصلي كما هو، ثم وضعنا قيمة جديدة مساوية للنص، ومسحنا منها العلامة، ثم طبعناها






    __________________
    لا تعاند من إذا قال فعل
    الشنكبوتية
    اللغة العربية سياج هويتنا
    عبد الرحمن غير متواجد حالياً

  3. #3

    ما شاء الله عليك



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





    nuke4arab غير متواجد حالياً

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Jul 2002
    المشاركات
    534


    مشاء الله أخي عبدالرحمن ... درس جميل ..

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

    وكل الإحتملات ممكنة وقواعد البيانات بحرها واسع





    __________________
    بداية للمشاريع التجارية

    ASP.NET,ASP 3.0

    المدونة الشخصية : asp2asp.com

    عدنا والعود أحمد...
    asp2asp غير متواجد حالياً

  5. #5


    جزاك الله خير أخي عبدالرحمن على هذه المعلومات





    __________________
    عزوز الحسني
    أبو ماجد الصارم غير متواجد حالياً

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Jun 2001
    المشاركات
    87


    مشكور عبدالرحمن على الشرح





    design غير متواجد حالياً





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض