در آرشیو صفحه به صفحه تعداد عناصرت رو چک می کنی تقسیم بر تعداد مورد نظری که قرار است در هر صفحه قرار بدهی می کنی. int عبارت بدست آمده را بدست می آوری (جز صحیح اش) این عدد میشه تعداد صفحاتت. در پایین یا بالای صفحه ات توی یک حلقه for شماره ی صفحات از 1 تا عدد بدست آمده را درست می کنی به همراه لینک مربوطه مثلا page.php?page=2 که لینک به صفحه ی دوم است.
اما طرز صفحه بندی کردن:
وقتی ورودی page رو گرفتی توی کوئری ات با استفاده از limit محتویات صفحه رو مشخص میکنی.
مثلا اگه تعداد عناصر در صفحه رو 5 تا در نظر گرفته بودی اینطوری می نویسی limit ($page-1)*5,$($page-1)*5+5
البته کد بالا رو هرطوری که خواستی می تونی بنویسی.
در مورد آرشیو ماهیانه هم شاید برات نمونه کد گذاشتم.
اینم یک نمونه فانکشن برای آرشیو کردن خبر : ($count منظور همون تعداد خبر در صفحه است.)
function show_news($page,$count)
{
if(empty($page))
$page=1;
$min=($page-1)*$count;
$max=$min+$count;
$q="SELECT * FROM news ORDER BY id DESC LIMIT $min,$max;";
$query=mysql_query($q);
while(@$row=mysql_fetch_array($query))
{
echo "<a href='page.php?type=news&id=".$row['id']."'>".$row['title']."</a>";
echo "<br>";
}
echo "<p align='center'>صفحات:";
$q="SELECT id FROM news;";
$query=mysql_query($q);
$query_num=mysql_num_rows($query);
$num_page=$query_num/$count;
$num_page++;
for($i=1;$i<$num_page;$i++)
{
echo "<a href='?page=".$i."'>";
if($i==$page)
{
echo " [ <b>".$i."</b> ] - ";
}
else
{
echo " [ ".$i." ] - ";
}
echo "</a>";
}
}