seif
Пишу на php бота для telegram. Который спрашивает у пользователя несколько параметров, которые я хочу записать в базу данных sql , а потом уже оттуда их выдернуть и по форуме рассчитать. Но дело в том что на первом этапе данные записываются, когда пользователь выбирает из меню «мужчинаженщина». А второй этап указания веса, в таблицу никак не записываются. В таблице для веса создан столбец с параметрами INT(10).
Я не понимаю почему введенные данные не передаются в таблицу sql, когда переменная $text
несет в себе любые цифры которые ты вводишь.
Мне нужно что бы на этапе каждой кнопки в таблицу записывались введенные пользователем данные.
Моя идея была в каждое условие вставлять функцию которая записывает на этапе нажатой кнопки данные в нужный столбец. Не знаю правильная ли это задумка.Текст кода:
Код (Text):
$result = $telegram->getWebhookUpdates(); $text = $result[«message»][«text»]; $chat_id = $result[«message»][«chat»][«id»]; $name = $result[«message»][«from»][«username»]; $first_name = $result[«message»][«from»][«first_name»]; $last_name = $result[«message»][«from»][«last_name»]; $get_user = get_user($connect, $chat_id); $old_id = $get_user[‘chat_id’]; $username = $first_name . ‘ ‘ . $last_name; if($text == «/start»){ $reply = «Здравствуйте! $username , я бот КБЖУ. КБЖУ – это аббревиатура, созданная приверженцами правильного питания в целях упрощения подачи информации. Расшифровка термина: К – калории; Б – белки; Ж – жиры; У – углеводы Я помогу рассчитать дневную калорийность, вам нужно просто ответить на несколько вопросов, в ответ вы получите: — свою суточную норму, — рекомендации по питанию, — а так же варинаты репецтов на завтрак, обед, ужин + перекусы, исходя из вашей суточной нормы. Мои расчеты очень быстрые и удобные для вас. Нажмите на кнопку ‘Оплата’, вы получите ссылку, после оплаты мы перейдем к вашим расчетам.» ; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); }elseif($text == «Оплата — 69р.») { $reply = » $first_name $last_name перейдите по ссылке : https://oplata.qiwi.com/form?invoiceUid=1e682f5d-3610-4904-ba05-52f82ca2336d После оплаты нажмите на кнопку ‘Я оплатил(а)'»; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu2, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); }elseif($text == «Я оплатил(а)») { $reply = » $first_name $last_name спасибо за оплату! Выберите пожалуйста ваш пол.»; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu3, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); }elseif($text == «Мужской») { $reply = » $first_name $last_name напишите в килограммах ваш вес и нажмите ‘далее’.»; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu4, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); pol($connect, $chat_id, $text); }elseif($text == «Женский») { $reply = » $first_name $last_name напишите в килограммах ваш вес и нажмите ‘далее’ .»; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu4, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); pol($connect, $chat_id, $text); }elseif($text == «Вес, далее») { $reply = » $first_name $last_name напишите в сантиметрах ваш рост и нажмите ‘далее'»; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu5, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); ves($connect, $chat_id, $text); }elseif($text == «Рост, далее») { $reply = » $first_name $last_name напишите ваш возраст и нажмите ‘далее'»; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu6, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); }elseif($text == «Возраст, далее») { $reply = » $first_name $last_name напишите ваш коэффициент согласно таблице активности 1,2 – отсутствие физических нагрузок, сидячая работа; 1,4 – физические нагрузки 2 раза в неделю; 1,46 – 4/5 тренировок в неделю или активная работа «в движении»; 1,55 – 5/6 интенсивных тренировок в неделю; 1,63 – тренировки 7 дней в неделю; 1,72 – ежедневные нагрузки 2 раза в день; 1,9 – интенсивные тренировки 2 раза в день или же тяжелые физические нагрузки на работе.»; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu7, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); }elseif($text == «Активность, далее») { $reply = » $first_name $last_name перейдите по ссылке : https://oplata.qiwi.com/form?invoiceUid=1e682f5d-3610-4904-ba05-52f82ca2336d После оплаты нажмите на кнопку ‘Я оплатил(а)'»; $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu8, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]); $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]); } add_user($connect, $username, $chat_id, $name, $old_id); textlog($connect, $chat_id, $text);Текст когда функций :
Код (Text):
<?php function add_user($connect, $username, $chat_id, $name, $old_id){ $username = trim($username); $chat_id = trim($chat_id); $name = trim($name); if($chat_id == $old_id) return false; $t = «INSERT INTO users (username, chat_id, name) VALUES (‘%s’, ‘%s’, ‘%s’)»; $query = sprintf($t, mysqli_real_escape_string($connect, $username), mysqli_real_escape_string($connect, $chat_id), mysqli_real_escape_string($connect, $name)); $result = mysqli_query($connect, $query); if(!$result) die(mysqli_error($connect)); return true; } function get_user($connect, $chat_id){ $query = sprintf(«SELECT * FROM users WHERE chat_id=%d», (int)$chat_id); $result = mysqli_query($connect, $query); if(!$result) die(mysqli_error($connect)); $get_user = mysqli_fetch_assoc($result); return $get_user; } function textlog($connect, $chat_id, $text){ if(chat_id == ») return false; $t= «INSERT INTO textlog (chat_id, text) VALUES (‘%s’, ‘%s’)»; $query = sprintf($t, mysqli_real_escape_string($connect, $chat_id), mysqli_real_escape_string($connect, $text)); $result = mysqli_query($connect, $query); if(!$result) die(mysqli_error($connect)); return true; } function pol($connect, $chat_id, $text){ if(chat_id == ») return false; $t= «INSERT INTO calculation (chat_id, pol) VALUES (‘%s’, ‘%s’)»; $query = sprintf($t, mysqli_real_escape_string($connect, $chat_id), mysqli_real_escape_string($connect, $text)); $result = mysqli_query($connect, $query); if(!$result) die(mysqli_error($connect)); return true; } function ves($connect, $chat_id, $text){ if(chat_id == ») return false; $t= «INSERT INTO calculation (chat_id, ves) VALUES (‘%s’, ‘%s’)»; $query = sprintf($t, mysqli_real_escape_string($connect, $chat_id), mysqli_real_escape_string($connect, $text)); $result = mysqli_query($connect, $query); if(!$result) die(mysqli_error($connect)); return true; } ?>Код меню:
Код (Text):
<?php $menu = [[«Оплата «]]; $menu2 = [[«Я оплатил(а)»]]; $menu3 = [[«Мужской»], [«Женский»]]; $menu4 = [[«Вес, далее»]]; $menu5 = [[«Рост, далее»]]; $menu6 = [[«Возраст, далее»]]; $menu7 = [[«Активность, далее»]]; $menu8 = [[«Рассчитать»]]; ?>
twim32
Потому что условие неверно: вы должны получить от пользователя число, а сравниваете со строкой
Кроме того вы пытаетесь запихать её в числовое поле в базе данных
seif
А как мне «шагать» по меню бота дальше, что бы после очередной кнопки появлялась новая кнопка, без сравнения со строкой?
Можно маленький пример? А то я совсем нуб.И ведь кнопкой выше где мы выбираем мужской/женский пол, там все работает и записывается с тем же условием.
twim32
Отталкивайтесь не от ответов которые приходят от юзера, а от недостающей информации.