1)
Код:
$start=abs($page*$per_page);
Почему так? Боишься получить отрицательный limit?
Замени
PHP код:
if (isset($_GET)) $page=($_GET-1); else $page=0;
на
PHP код:
$page=(isset($_GET) and is_numeric($_GET) and $_GET >= 0) : $_GET ? 0;
Так будет честнее.
2) Нафиг в примере выводить шапку? Ее вывод как-то влияет на остальной скрипт? Нет. Ну и убери ее.
3) В последнем твоем коде нету { } после while, поэтому я так и не понял, зачем тебе 2 запроса к одной и той же таблице, когда у тебя уже есть массив _всех_ ее элементов.
4) Нет такого понятия, как пустая страница. Во-первых, посмотри сорс, во-вторых вруби
PHP код:
error_reporting(E_ALL);
ini_set('display_errors', '1');
5) Вынеси в отдельную страницу запрос с limit и всеми относящимися к нему данными/вычислениями. Добейся, чтобы ?page=X выдавало нужные тебе результаты.
6) Венеси в отдельную страницу запрос с count(*), сделай тоже самое, что и с limit.
7) Когда и то и то будет работать совместить их не составит особого труда.
8) Формулировка "Не работает" никак не помогает понять, где именно ошибка и в каком месте что-то неверно. Учись охарактеризовывать действия скрипта точнее.
9) http://www.phpfaq.ru/debug