Crear tabla de noticias :
*************************
CREATE TABLE IF NOT EXISTS `noticias` (
`idnot` int(10) unsigned zerofill NOT NULL auto_increment,
`tema` varchar(100) collate latin1_general_ci default NULL,
`autor` varchar(100) collate latin1_general_ci default NULL,
`cont` text collate latin1_general_ci,
`imagen` varchar(150) collate latin1_general_ci default NULL,
`fpub` datetime default NULL,
PRIMARY KEY (`idnot`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1;

Crear los estilos : (colocar entre <head> </head>)
*******************
.link a, .link{color:#FFF; font-weight:bold}
.link a:visited{color:#FFF;}
.link a:hover{color:#FFF;}

#pages {
clear: both;
text-align: center;
font-size:9px;
}
#pages li {
display: inline;
padding: 3px 6px 4px;
}
#pages li.page {
border: 1px solid #F05BF2;
margin-right:1px;
}
#pages li.current {
background:#F05BF2;
color:#FFF;
}

Crear archivo Php :
*******************

<?
$rowCount = 6; // Número de registros por página.
$pagesToShow = 2; // Número de páginas a mostrar adelante o atrás de la actual en la paginación.

$SQL = mysql_query(“SELECT COUNT(*) FROM noticias”,$conexion);
$ROW = mysql_fetch_array($SQL);

// Obtenemos el número de registros en la tabla.
$notCount = $ROW[0];

// El número de páginas que podemos mostrar.
$pagesCount = (int)ceil($notCount / $rowCount);

// Obtenemos el índice de la página que nos piden mostrar y nos aseguramos que esté entre 0 y $pagesCount.
$pageIndex = isset($_REQUEST[‘pageIndex’]) ? (int)$_REQUEST[‘pageIndex’] : 0;
if ($pageIndex >= $pagesCount)
$pageIndex = $pagesCount – 1;

// Obtenemos unicamente los registros de la página actual.
$offset = $pageIndex * $rowCount;
?>

<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
<title>paginacion en php</title>
</head>

<body>
<?
$SQL = mysql_query(“SELECT * FROM noticias ORDER BY fpub DESC LIMIT $offset, $rowCount”,$conexion);
while($ROW = mysql_fetch_array($SQL)){
echo “<div style=’width:250px;border:#FFF 1px solid;float:left;’>

<b>$ROW[1]</b><br /><br />
$ROW[3]<br /><br />
<center><img src=’images/$ROW[4]’/></center><br /><br />
<b style=’font-size:10px;’>$ROW[2] <br /> $ROW[5]</b>
</div>”;
}
?>
<div style=”clear:both;”></div>

<ul id=”pages” style=”margin-top:10px;”>
<?php
// Página anterior.
if ($pageIndex > 0) {
?>
<li><a href=”?pageIndex=<?php echo $pageIndex – 1 ?>”>&laquo; Anterior</a></li>
<?php } ?>

<?php
$start = $pageIndex – $pagesToShow;
if ($start < 0)
$start = 0;

$end = $pageIndex + $pagesToShow;
if ($end >= $pagesCount)
$end = $pagesCount – 1;

if ($start > 0) {
for ($i = 0; $i < 2 && $i < $start; ++$i) {
?>
<li><a href=”?pageIndex=<?php echo $i ?>”><?php echo $i + 1 ?></a></li>
<?php
}
}

if ($start > 2) {
?>
<li>…</li>
<?php
}

for ($i = $start; $i <= $end; ++$i) {
if ($pageIndex == $i) {
?>
<li><?php echo $i + 1 ?></li>
<?php
} else {
?>
<li><a href=”?pageIndex=<?php echo $i ?>”><?php echo $i + 1 ?></a></li>
<?php
}
}

if ($end < $pagesCount – 3) {
?>
<li>…</li>
<?php
}

if ($end < $pagesCount – 1) {
for ($i = max($pagesCount – 2, $end + 1); $i < $pagesCount; ++$i) {
?>
<li><a href=”?pageIndex=<?php echo $i ?>”><?php echo $i + 1 ?></a></li>
<?php
}
}

?>

<?php
// Siguiente página
if ($pageIndex < $pagesCount) {
?>
<li><a href=”?pageIndex=<?php echo $pageIndex + 1 ?>”>Siguiente &raquo;</a></li>
<?php } ?>
</ul>
<br />

</body>
</html>