Gracias por las respuestas, al final lo resolvi del siguiente modo. De todas formas tiene un pequeño problema que no se como voy a solucionar.
Código:
<?
//***************************************************
// INICIO DEL PAGINADOR DE RESULTADOS
//***************************************************
//limite de busqueda
$resultados = 10;
$result = 10;
$limite = imap_num_msg($imap);
if (!$pagina)
{
$inicio = 1;
$pagina = 1;
}
else
{
$inicio = ($pagina - 1) * $resultados;
$resultados = $resultados * $pagina;
if ($resultados > $limite)
{
$resultados = $limite;
}
}
// total paginas
$total_mails = imap_num_msg($imap);
echo $total_mails;
$total_paginas = ceil($total_mails / $result);
// paginador
if ($pagina>1)
{
$pagina = $pagina-1;
echo "<tr><td><a href=members_only.php?pagina=$pagina><<atrás</a></td>";
// si no sumamos 1 a $pagina en el siguiente if () $pagina sera igual al anterior ya que lo resta mas arriba.
$pagina = $pagina+1;
}
else
{
echo "<tr><td><< atrás</td>";
}
if ($pagina<$total_paginas)
{
echo $pagina;
$pagina = $pagina+1;
echo "<td><a href=members_only.php?pagina=$pagina>siguiente >></a></td><tr>";
}
else
{
echo "<td>siguiente >></td><tr>";
}
//******************************************************
// FIN DEL PAGINADOR DE RESULTADOS
//******************************************************
?>
El problema viene cuando avanzas una pagina o dos y luego retrocedes hasta la primera pagina, $inicio toma el valor 0 por lo que el bucle empiza a leer cabeceras de mensajes desde el mensaje 0 el cual no existe (los mails empiezan a numerarse desde 1, por eso el valor inicial de $inicio es 1) por lo que da un error y me muestra una entrada vacia. Intente con un if ($inicio = 0){$inicio+1;} pero fue a peor.
Escepto por ese pequeño detalle el resto esta perfecto, era lo que queria hacer, gracias a los dos por la ayuda.
PD: ¿Comó se pone el código a color?