Pues tampoco ha funcionado pero he conseguido que salga haciéndolo de otra manera ¡¡¡BIEEEN!!! No sé si es muy elegante o no pero funciona y me hace bien el paginado


, aún me queda limpiar alguna cosa de la url pero YA ESTÁ!!!

Ahí dejo todo por si alguien lo necesita...
Código PHP:
$conn = db_connect();
$query_producto = "SELECT * FROM productos WHERE id_relacion IN (".implode(",",$res_query).")";
$result_total=@$conn->query($query_producto);
$total = $result_total->num_rows;
$tampag = 10;
$reg1 = ($pag-1) * $tampag;
//echo $total;
$query_producto =
"
SELECT *
FROM productos
WHERE id_relacion IN (".implode(",",$res_query).")
ORDER BY $orden
LIMIT $reg1, $tampag
";
}
/******************************************************/
/* Funcion paginar
* actual: Pagina actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual, $total, $por_pagina, $enlace) {
$total_paginas = ceil($total/$por_pagina);
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<a href=\"$enlace$anterior\">«</a> ";
else
$texto = "<b>«</b> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a href=\"$enlace$i\">$i</a> ";
if ($actual<$total_paginas)
$texto .= "<a href=\"$enlace$posterior\">»</a>";
else
$texto .= "<b>»</b>";
return $texto;
}
/******************************************************/
///////
$url=$PHP_SELF . "?" . $_SERVER['QUERY_STRING'] . "&pag=";
echo paginar($pag, $total, $tampag, $url);
echo "<br /><br />";
//////
Ronin, gracias por el apoyo, a veces está bien que alguien esté ahí dándote ideas para llegar a la solución... te envío karma

(hasta hace una semana no sabía que existía)