هذا حل مبدئي
أنشئ جدولا باسم
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=1
حيث 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=0
وإذا أردنا الانتقال إلى صفحة أخرى نطبق الأوامر السابقة.
بقي شيء وهو أن العلامة {next} ستبقى في النص، لهذا علينا أن نعطي قيمة جديد للنص لكي نعرضها
كود PHP:
$show_text = $text;
$show_text = str_replace ("{next}","",$show_text)
echo $show_text
لأننا لو مسحنا العلامة من النص الأصلي فلن يتمكن البرنامج من معرفة عدد الصفحات.
لهذا أبقينا على النص الأصلي كما هو، ثم وضعنا قيمة جديدة مساوية للنص، ومسحنا منها العلامة، ثم طبعناها