Полностью поддерживаю
@Cames
Самая первая и самая грубейшая ошибка при написание кода при работе с базой, это соединятся с базой без нужной на то причины. Это просто прям какой то DDoS соединениями с базой.
Решение: Соединятся с базой когда это действительно необходимо. При этом ты подключаешься это в главном файле даже не задумываясь что там даже одного запроса нету.
Вторая ошибка связанная уже непосредственно с вёрсткой, зачем ты подключаешь весь bootstrap включая JS составляющую, если используешь от туда меньше 1% и то это выглядит уродливо

Не использование css по назначению что там творится в главном файле...
Решение: Написание собственных стилей (хотя это уже кто использует должен), убрать всё что не связанно.
Третья ошибка, зачем ты подключаешь отдельный файл в котором только AJAX который зависит от jQuery и на этом вся его функциональность заканчивается библиотеки.
Решение: Переписать на нативном JS, да можно даже использовать Fetch API.
Четвёртая ошибка, связанна с самим запросом MySQL в базу.
> `id` int(50) NOT NULL AUTO_INCREMENT,
Ты не шутишь? INT 50?! Максимальная длина INT равняется 11, да и в жизни у тебя не будет там более 2,147,483,647 записей.
> `nickname` text NOT NULL,
TEXT серьёзно? Ты думаешь что никнейм будет длинной 65,535? Да тут даже VARCHAR 30 будет достаточно, даже меньше.
> `date` int(50) NOT NULL,
Снова TIMESTAMP, для него есть специальная дата хранения, а вообще этого необходимо избегать и использовать DATETIME, хотя если там только секунды не UNIX время.
> `paid` int(1) NOT NULL,
Для этого существует тип TINYINT
Остальные ошибки просто уже абсурдно приводить, не хочу лишний раз указывать на одно и то же.
Решение: Переделать строение таблицы и дать уникальные поля если они присутствуют, это ускорит выборку.
А теперь самое сочное, последние ошибки (но не все)
1. Никогда не доверяй пользователю!
2. Тебя мама в детстве не училась что не нужно жадничать? SELECT *, перечисляй только те поля что действительно нужны!
3. Как уже и говорил
@Cames не используй MySQLi расширение, юзай PDO с препарированием запросов.
4. Какая топовая генерация SQL запроса...
Посмотреть вложение 44243
Мой вариант без изменений другого кода ну и использование конечно же PDO.
Код:
pastebin.com/zVNnEayw
Посмотреть вложение 44244
5. Костыли и копипаст кода, тебе стоит познакомится с такой вещью как рефакторинг!
6. Использование двойных кавычек вместо одинарных, хоть это и экономия на спичка но всё же, строки легче читаются, а во вторых PHP не будет искать в них переменных!
7. Не нужно плодить лесенки! А ещё пиши else if, а не elseif это фича тебя погубит!
8. Доверяй только $_SERVER['REMOTE_ADDR']!!!
Всё что начинается с HTTP_ это уже заголовки в которых можно послать что угодно.
(Как то давно один крупный сайт упал из за этого)
Посмотреть вложение 44247
9. Снова возвращаюсь к тому что не нужно делать глубокую вложенность!
Как же я ненавижу использовать горизонтальный скролл ради этого!
А сворачивать строки не очень удобно.
Посмотреть вложение 44248
10. Я устал, если я продолжу перечислять ошибки то я просто скину весь код)