Пишу на 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 = [["Рассчитать"]]; ?>
Потому что условие неверно: вы должны получить от пользователя число, а сравниваете со строкой Кроме того вы пытаетесь запихать её в числовое поле в базе данных
А как мне "шагать" по меню бота дальше, что бы после очередной кнопки появлялась новая кнопка, без сравнения со строкой? Можно маленький пример? А то я совсем нуб. И ведь кнопкой выше где мы выбираем мужской/женский пол, там все работает и записывается с тем же условием.