Intanto va corretta questa riga:
Codice PHP:
if($riga<=$i$pagina=$num
in
Codice PHP:
if($riga<=$i) {$pagina=$num; break;} 
... perché altrimenti $pagina sarà sempre uguale al massimo valore che riesce a raggiungere $num.

In effetti rimane in loop.. sto facendo alcuni controlli.. appena trovo il baco posto la soluzione!