Была давно такая темка, в прошлый раз 50 на 50 назвали говнокодером (хотя не говнокодером, назвало чуть чуть больше). Сейчас разработал по моему мнению удачный стиль, осуждайте граждане.
http://upwap.ru/935500
Об архиве:
Гостевая книга, PHP (ООП) + MySQL (серьезно думал о применении XML вместо БД, ибо всего 1 таблица, но почему то плюнул).
Используй в таком порядке
вверху php
внизу html
Старайся выполнять все сценарии php в верху и выводи в html переменной.
function getMessages($start, $finish){
$sql = "select * from messages order by id limit $start, $finish";
$message = mysql_query($sql);
while ($result = mysql_fetch_array($message)){
echo '['.$result['date'].'] '.$result['nick'].': '.$result['text'].'<br/>';
}
лучше уж путь возвращает сообщение, метод же getMessages
$sql == 1 ? $var = mysql_real_escape_string($var) : $sql = 0;
это что?оо
if($sql)$var = mysql_real_escape_string($var);
// Проверяем id страницы
!empty($_GET['id']) ? $id = intval($_GET['id']) : $id = 1;
передатут тебе 'dassadaasd', и получится 0
Говнокод)
Например это
$GLOBALS['database'] = new Database();
вообще жесть.
Почему не $database = new Database(); ?
Класс xakep кака. Зачем для одного метода целый класс? Создай просто функцию и всё. Или раз так уже тянет к ООП, то обьявил бы метод как статический. Кстати, и сам метод говнистый))
Соиденение с базой в конце скрипта не обязательно закрывать, оно само закроется.
Вообще, ООП здесь ни к месту 
$sql = 'select id from messages';
$count = mysql_query($sql);
return mysql_num_rows($count); }
оо
return mysql_result(mysql_result('SELECT COUNT(*) FROM `messages`'),0);
имхо слишком много тернарного оператора и не к месту.
и вообще как-то извращенно он используется.
если уж используешь для присваивания, то (пример твоего кода) как-то так:
$id = !empty($_GET['id']) ? intval($_GET['id']) : 1;
P.S. опечатка в add.php: </fotm>