jaras, Самая главная ошибка -- это html код, работа с базой и их взаимосвязь, всё в одном месте.
Получилась этакая каша. Когда скрипт совсем не большой, то ничего страшного, но когда нужно будет написать нечто более серьёзное, то это уже будет ад.
/**
* @Автор Jaras
* @Год 2.2.2014
* @Связь jaras.com@bk.ru
* @Цена Бесплатно
* @Специально для johncms.com
*/
Забавно. Нигде еще не видел, чтобы в докблоках указывали цену скрипта.
Этакий закос под PHPDoc?
Рекомендую ознакомится с ним и не использовать кириллицу и любые другие не стандартные символы в коде, т.к. могут возникнуть проблемы с кодировкой да и вообще нужно быть интернациональнее.
В твоём случае это будет что-то вроде следующего:
/**
* Simple Guestbook
*
* The guestbook application example.
*
* @author Jaras <jaras.com@bk.ru>
* @license The MIT License (MIT)
*/
Далее идёт html разметка, в которой я почему-то не нашел ни доктайпа, ни <html> тега.
Очень плохо. Хорошо хоть через мета-тег указал, что это html. Только про кодировку забыл.
Форматирование ужасное. Незнаю, может это ждоновский парсер так испоганил, или это так и было, но у меня все отступы в разброс, кто куда.
Зачем после каждой строки пустая строка? Чтобы строк больше было? Хе-хе.
Именовать переменные транслитом тоже не рекомендую.
//Сервер Mysql
//Пользователь Mysql
//Пароль Mysql
//БЗ Mysql
//Подключаемся к Базе данных
Такие комментарии в коде не нужны. Они ничего ровным счётом не дают.
А "БЗ Mysql" меня сначала сбило столку. Что за БЗ? Лишь после того, как я прочёл название переменной, я понял, что это должно быть имя базы данных. Тогда может быть будет лучше сказать "БД"?
Почему do while, а не while() {} ?
do while лучше использовать там, где это действительно необходимо.
И да, присваивание в условиях плохая практика, т.к. иногда это может привести к проблемам, причины которых потом сложновато будет обнаружить.
Silence оператор (@) тоже не рекомендуется использовать. Тем более в твоём случае, когда ты получаешь данные из ресурса. Есть же возможность обработать нормально, зачем срать в логи?
Потом у тебя $gost массив, но сравниваешь со строкой. Почему? Правильнее будет подсчитать его размер и сравнить с нулём или использовать empty()
Не созданные переменные сравниваешь с null, тоже плохо. А потом их еще и удаляешь
Очень хорошо, что ты использовал strip_tags, но перед выводом через htmlspecialchars данные обработать всё-таки нужно.
Еще вспомню про форматирование. Внизу у тебя по два условия в одной строке. Удобно читается? Да и вообще половина условий так, половина сяк. Отступы не соблюдены. Погугли про стандарты оформления кода и приведи всё в порядок.
Это еще наверное не все недочёты и ошибки, которые есть. Постарайся исправить хотя бы всё, кроме самой главной ошибки, о которой я сказал в начале. А затем, если с задачей справился, можно избавляться от спагетти-кода.