Nel codice c'e' un totale preso con la prima query senza nessunca clausola sul tipo di categoria e quindi il tot page e' sempre lo stesso
Aggiungi la clausola anche li e verifica le varie operazioni dove viene usato il totale

Codice PHP:
// esecuzione prima query
$count mysql_query("SELECT COUNT(id) FROM nome_tabella");
$res_count mysql_fetch_row($count);

// numero totale di records
$tot_records $res_count[0];

// risultati per pagina(secondo parametro di LIMIT)
$per_page 10;

// numero totale di pagine
$tot_pages ceil($tot_records $per_page); 
penso sia solo qui il problemino