Форумы / National / Russian / Вопросы и пожелания к движку

<<<1...5...10...46474849

Для юзеров Seditio и новичков

Kopusha
#721 15.07.2022 21:46

по одной из указанных выше причин. или по какой то другой причине)

Запросы то корректные. Но знает ли ваш плагин в коде где должен записать про БД и таблицу в ней?
Тестируйте. Например вместо $db->insert попробуйте в этом же месте получить данные из БД - выполнит?

Cotonti Aik
#722 06.01.2023 16:19
#45653 prostogorod:

Привет всем! Прошу помощи! Пишу простой Telegram Bot. Все работает пока дело не доходит до добавления 

$chat_id и $botToken

в базу данных. Первое сообщение отправляется, потом идет запрос добавления в базу данных, в котором ошибка и второе сообщение не отправляется. Если запрос закомментировать, то все два сообщения отправляются. Что не так с запросом в базу данных?

        if (isset($chat_id) > 0) {
			
		    sendTelegram(
			    'sendMessage', 
			    array(
				     'chat_id' => $chat_id,
				     'text' => 'Приветствую!!! Первое сообщение - Твой Chat ID - '. $chat_id,
			    )
		    );			
			
			
            global $db, $sys, $cfg;
            cot::$db->insert("cot_bot", array(
			    'bot_chatid' => $chat_id,
				'bot_token' => $botToken
		    ));	

			
			//usleep(5000000); // ждать 5 секунд
			
		    sendTelegram(
			    'sendMessage', 
			    array(
				     'chat_id' => $chat_id,
					 'parse_mode' => 'HTML',
				     'text' => 'Приветствую!!! Второе сообщение Твой Token - '. $botToken .' Твой Chat ID - '. $chat_id,
			    )
		    );			
			
        }

 

Ошибку можно увидеть, выведя ее с помощью функции error_get_last(). Обратите внимание, что эта функция работает только в том случае, если в конфигурации сервера включена опция track_errors.

Также рекомендуется обернуть ваш запрос в try-catch блок, чтобы перехватывать исключения, которые могут возникнуть при выполнении запроса:

try { cot::$db->insert("cot_bot", array( 'bot_chatid' => $chat_id, 'bot_token' => $botToken )); } catch (Exception $e) { // Обработка исключения echo "Произошла ошибка: " . $e->getMessage(); }

Это позволит вам лучше понять, что именно произошло не так и какие данные были переданы в запрос.

Также стоит проверить соединение с базой данных и права доступа пользователя, который используется для подключения.

Небольшие улучшения, которые можно сделать в вашем коде:

  1. Не нужно использовать isset() для проверки на null. Достаточно просто проверить, что $chat_id равен null:

if ($chat_id !== null) {

  1. Если у вас несколько запросов к базе данных, лучше всего использовать транзакции, чтобы гарантировать, что все запросы будут выполнены целиком или ни один из них не будет выполнен. Чтобы начать транзакцию, используйте метод beginTransaction() у объекта cot::$db:

cot::$db->beginTransaction();

Чтобы завершить транзакцию, используйте метод commit():

cot::$db->commit();

Если в процессе выполнения транзакции возникла ошибка, то можно откатить все изменения, выполненные в рамках транзакции, с помощью метода rollBack():

cot::$db->rollBack(); 

Пример использования транзакций в вашем коде:

try {
cot::$db->beginTransaction();
cot::$db->insert("cot_bot", array(
'bot_chatid' => $chat_id,
'bot_token' => $botToken
));
cot::$db->commit();
} catch (Exception $e) {
cot::$db->rollBack();
// Обработка исключения
echo "Произошла ошибка: " . $e->getMessage();
}

Также рекомендуется всегда проверять возвращаемое значение функции insert(). Если она вернет false, то это может означать, что запрос не был выполнен успешно.

Например:

if (!cot::$db->insert("cot_bot", array(
'bot_chatid' => $chat_id,
'bot_token' => $botToken
))) {
// Обработка ошибки
echo "Произошла ошибка при выполнении запроса";
}

 

https://t.me/cotontiaik - Телега о Cotonti
Отредактировано: Cotonti Aik (06.01.2023 16:30, 1 год назад)
prostogorod
#723 08.01.2023 10:19
#45832 Cotonti Aik:

Ошибку можно увидеть, выведя ее с помощью функции error_get_last(). Обратите внимание, что эта функция работает только в том случае, если в конфигурации сервера включена опция track_errors.

Также рекомендуется обернуть ваш запрос в try-catch блок, чтобы перехватывать исключения, которые могут возникнуть при выполнении запроса:

try { cot::$db->insert("cot_bot", array( 'bot_chatid' => $chat_id, 'bot_token' => $botToken )); } catch (Exception $e) { // Обработка исключения echo "Произошла ошибка: " . $e->getMessage(); }

Это позволит вам лучше понять, что именно произошло не так и какие данные были переданы в запрос.

Спасибо за развернутый ответ, много интересного почерпнул. Применил try-catch и функцию error_get_last(). Но, практически ничего не изменилось. Я не вижу ошибки, где она должна выводится? Бот существует и обрабатывает запросы по url index.php?e=bot. Команды я отправляю в телеграм, приходит ответ в телеграм, но где визуально и как посмотреть ошибку?

Включен режим отладки $cfg['debug_mode'] = true;

webitproff
#724 17.02.2023 10:35

Разработчики, прошу обратить внимание на такой момент

аккаунт удален - не срослось с разработчиками
ушел на другой движок
Alex300
#725 18.02.2023 10:00

Исправлено в мастер ветке.

Есть миры, не здесь, там, где небеса горят, и моря засыпают, и реки дремлют; люди сделаны из дыма, а города – из песен. Где-то опасность, где-то несправедливость, даже где-то остыл чай. Идем Эйс, у нас много работы!...
...Sorry for my english...
Бесплатные расширения для Cotonti: https://lily-software.com/free-scripts/
Kort
#726 26.08.2023 09:06

Подумалось: актуально ли будет иметь на борту функцию cot_generate_structuretags?

SED.by - создание сайтов, разработка плагинов и тем для Котонти
Argont
#727 27.08.2023 13:26
#47029 Kort:

Подумалось: актуально ли будет иметь на борту функцию cot_generate_structuretags?

Дмитрий, а почему нет?

мне как и вам полтинник, поделитесь мыслью для стар перров ))

иногда поржать над задравшим подбородок разработчиком
Dayver
#728 27.08.2023 20:27
#47029 Kort:

Подумалось: актуально ли будет иметь на борту функцию cot_generate_structuretags?

А какие примеры применения? Ну кроме внутренней реорганизации где например может понадобится эта функция? Навскидку ничего не пришло в голову но если и внешние применения будут то тогда да, есть смысл небольшой реструктуризации и создания намёка на API для структур.

Pavlo Tkachenko aka Dayver
Kort
#729 27.08.2023 20:40
#47033 Dayver:
#47029 Kort:

Подумалось: актуально ли будет иметь на борту функцию cot_generate_structuretags?

А какие примеры применения? Ну кроме внутренней реорганизации где например может понадобится эта функция? Навскидку ничего не пришло в голову но если и внешние применения будут то тогда да, есть смысл небольшой реструктуризации и создания намёка на API для структур.

Да любой плагин, который функцией делает выборку разделов из структуры. В принципе, несложно и так, но одной строкой, как cot_generate_pagetags, было бы интереснее.

Конкретное применение -- формирование навигации, HTML-карты сайта, разделов и проч.

SED.by - создание сайтов, разработка плагинов и тем для Котонти

<<<1...5...10...46474849