You are using a lot of shorthand stuff, and it makes it hard for those of us who don't use it to read.
(!$_GET['start']) ? $start = 0 : $start = $_GET['start'];
as an example.
so for those who don't get what that is
if(!$_GET['start'])
{
$start = 0;
}
else
{
$start = $_GET['start'];
}
now, on to the question, at hand.
I am not sure if this is the reason why your code is breaking or not, because this may be some other php shortcut that I am not aware of but, at the very end of your post, you have an if statement, however you do not have "else" between your two items.
as a side note... I personally prefer using ajax as a pagination method so that the whole query actually loads to the page, and when the user clicks to the next page, the transition doesn't make another query happen, it's almost instantanious.
Hope this helped.
Sage