$count_messages=mysql_query("SELECT COUNT(*) FROM gb");
$messages=mysql_result($count_messages,0);
Так смело можно поступать только в том случае, если есть глобальный обработчик ошибок, который в случае неудачного запроса к базе выведет ошибку и закончит работу скрипта. Иначе нужно обязательно проверять результат запроса.
"SELECT COUNT(*) - возвращает число записей, а значит уже известно есть ли записи в базе или нет, зачем же $c=0; и $c++;? Должно быть так:
if($q = mysql_query("SELECT COUNT(*) FROM gb")) {
if($count_messages = mysql_num_rows($q)) {
//вывод записей
} //иначе записей нет
} //иначе ошибка запроса
А запросы на вывод записей у вас всегда без указания страницы - show_messages(). И надо переходить на PDO или mysqli.