Помогите новичку пожалуйста!

seif

Пишу на php бота для telegram. Который спрашивает у пользователя несколько параметров, которые я хочу записать в базу данных sql , а потом уже оттуда их выдернуть и по форуме рассчитать. Но дело в том что на первом этапе данные записываются, когда пользователь выбирает из меню «мужчинаженщина». А второй этап указания веса, в таблицу никак не записываются. В таблице для веса создан столбец с параметрами INT(10).
Я не понимаю почему введенные данные не передаются в таблицу sql, когда переменная $text
несет в себе любые цифры которые ты вводишь.
Мне нужно что бы на этапе каждой кнопки в таблицу записывались введенные пользователем данные.
Моя идея была в каждое условие вставлять функцию которая записывает на этапе нажатой кнопки данные в нужный столбец. Не знаю правильная ли это задумка.

Текст кода:

Код (Text):
  1. $result = $telegram->getWebhookUpdates();
  2.  
  3. $text = $result[«message»][«text»];
  4. $chat_id = $result[«message»][«chat»][«id»];
  5. $name = $result[«message»][«from»][«username»];
  6. $first_name = $result[«message»][«from»][«first_name»];
  7. $last_name = $result[«message»][«from»][«last_name»];
  8. $get_user = get_user($connect, $chat_id);
  9. $old_id = $get_user[‘chat_id’];
  10. $username = $first_name . ‘ ‘ . $last_name;
  11.  
  12. if($text == «/start»){
  13.     $reply = «Здравствуйте! $username , я бот КБЖУ.
  14.     КБЖУ – это аббревиатура, созданная приверженцами правильного питания в целях упрощения подачи информации. Расшифровка термина:
  15.  
  16. К – калории;
  17. Б – белки;
  18. Ж – жиры;
  19. У – углеводы
  20.  
  21.     Я помогу рассчитать дневную калорийность, вам нужно просто ответить на несколько вопросов, в ответ вы получите:
  22.     — свою суточную норму,
  23.     — рекомендации по питанию,
  24.     — а так же варинаты репецтов на завтрак, обед, ужин + перекусы, исходя из вашей суточной нормы.
  25.  
  26.     Мои расчеты очень быстрые и удобные для вас. Нажмите на кнопку ‘Оплата’, вы получите ссылку, после оплаты мы перейдем к вашим расчетам.» ;
  27.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  28.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  29. }elseif($text == «Оплата — 69р.») {
  30.     $reply = » $first_name  $last_name перейдите по ссылке : https://oplata.qiwi.com/form?invoiceUid=1e682f5d-3610-4904-ba05-52f82ca2336d
  31.     После оплаты нажмите на кнопку ‘Я оплатил(а)'»;
  32.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu2, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  33.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  34.  
  35. }elseif($text == «Я оплатил(а)») {
  36.     $reply = » $first_name  $last_name спасибо за оплату! Выберите пожалуйста ваш пол.»;
  37.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu3, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  38.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  39.  
  40. }elseif($text == «Мужской») {
  41.     $reply = » $first_name  $last_name напишите в килограммах ваш вес и нажмите ‘далее’.»;
  42.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu4, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  43.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  44.     pol($connect, $chat_id, $text);
  45.  
  46.  
  47. }elseif($text == «Женский») {
  48.     $reply = » $first_name  $last_name напишите в килограммах ваш вес и нажмите ‘далее’ .»;
  49.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu4, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  50.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  51.     pol($connect, $chat_id, $text);
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. }elseif($text == «Вес, далее») {
  59.  
  60.     $reply = » $first_name  $last_name напишите в сантиметрах ваш рост и нажмите ‘далее'»;
  61.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu5, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  62.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  63. ves($connect, $chat_id, $text);
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.  
  77.  
  78.  
  79. }elseif($text == «Рост, далее») {
  80.  
  81.     $reply = » $first_name  $last_name напишите ваш возраст и нажмите ‘далее'»;
  82.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu6, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  83.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  84.  
  85. }elseif($text == «Возраст, далее») {
  86.     $reply = » $first_name  $last_name напишите ваш коэффициент согласно таблице активности
  87.     1,2 – отсутствие физических нагрузок, сидячая работа;
  88.     1,4 – физические нагрузки 2 раза в неделю;
  89.     1,46 – 4/5 тренировок в неделю или активная работа «в движении»;
  90.     1,55 – 5/6 интенсивных тренировок в неделю;
  91.     1,63 – тренировки 7 дней в неделю;
  92.     1,72 – ежедневные нагрузки 2 раза в день;
  93.     1,9 – интенсивные тренировки 2 раза в день или же тяжелые физические нагрузки на работе.»;
  94.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu7, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  95.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  96.  
  97. }elseif($text == «Активность, далее») {
  98.     $reply = » $first_name  $last_name перейдите по ссылке : https://oplata.qiwi.com/form?invoiceUid=1e682f5d-3610-4904-ba05-52f82ca2336d
  99.     После оплаты нажмите на кнопку ‘Я оплатил(а)'»;
  100.     $reply_markup = $telegram->replyKeyboardMarkup([ ‘keyboard’ => $menu8, ‘resize_keyboard’ => true, ‘one_time_keyboard’ => false]);
  101.     $telegram->sendMessage([‘chat_id’ => $chat_id, ‘text’ => $reply, ‘reply_markup’ => $reply_markup]);
  102. }
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. add_user($connect, $username, $chat_id, $name, $old_id);
  115. textlog($connect, $chat_id, $text);

Текст когда функций :

Код (Text):
  1. <?php
  2.  
  3. function add_user($connect, $username, $chat_id, $name, $old_id){
  4.     $username = trim($username);
  5.     $chat_id = trim($chat_id);
  6.     $name = trim($name);
  7.  
  8.     if($chat_id == $old_id)
  9.     return false;
  10.     $t = «INSERT INTO users (username, chat_id, name) VALUES (‘%s’, ‘%s’, ‘%s’)»;
  11.     $query = sprintf($t, mysqli_real_escape_string($connect, $username),
  12.                         mysqli_real_escape_string($connect, $chat_id),
  13.                         mysqli_real_escape_string($connect, $name));
  14.     $result = mysqli_query($connect, $query);
  15.     if(!$result)
  16.         die(mysqli_error($connect));
  17.     return true;
  18. }
  19.  
  20. function get_user($connect, $chat_id){
  21.     $query = sprintf(«SELECT * FROM users WHERE chat_id=%d», (int)$chat_id);
  22.     $result = mysqli_query($connect, $query);
  23.     if(!$result)
  24.         die(mysqli_error($connect));
  25.     $get_user = mysqli_fetch_assoc($result);
  26.     return $get_user;
  27. }
  28.  
  29. function textlog($connect, $chat_id, $text){
  30.     if(chat_id == »)
  31.     return false;
  32.     $t= «INSERT INTO textlog (chat_id, text) VALUES (‘%s’, ‘%s’)»;
  33.     $query = sprintf($t, mysqli_real_escape_string($connect, $chat_id),
  34.                          mysqli_real_escape_string($connect, $text));
  35.     $result = mysqli_query($connect, $query);
  36.     if(!$result)
  37.         die(mysqli_error($connect));
  38.     return true;
  39. }
  40. function pol($connect, $chat_id, $text){
  41.     if(chat_id == »)
  42.     return false;
  43.     $t= «INSERT INTO calculation (chat_id, pol) VALUES (‘%s’, ‘%s’)»;
  44.     $query = sprintf($t, mysqli_real_escape_string($connect, $chat_id),
  45.                          mysqli_real_escape_string($connect, $text));
  46.     $result = mysqli_query($connect, $query);
  47.     if(!$result)
  48.         die(mysqli_error($connect));
  49.     return true;
  50. }
  51. function ves($connect, $chat_id, $text){
  52.     if(chat_id == »)
  53.     return false;
  54.     $t= «INSERT INTO calculation (chat_id, ves) VALUES (‘%s’, ‘%s’)»;
  55.     $query = sprintf($t, mysqli_real_escape_string($connect, $chat_id),
  56.                          mysqli_real_escape_string($connect, $text));
  57.     $result = mysqli_query($connect, $query);
  58.     if(!$result)
  59.         die(mysqli_error($connect));
  60.     return true;
  61. }
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71. ?>

Код меню:

Код (Text):
  1. <?php
  2.  
  3. $menu = [[«Оплата «]];
  4. $menu2 = [[«Я оплатил(а)»]];
  5. $menu3 = [[«Мужской»], [«Женский»]];
  6. $menu4 = [[«Вес, далее»]];
  7. $menu5 = [[«Рост, далее»]];
  8. $menu6 = [[«Возраст, далее»]];
  9. $menu7 = [[«Активность, далее»]];
  10. $menu8 = [[«Рассчитать»]];
  11. ?>
 

twim32

Потому что условие неверно: вы должны получить от пользователя число, а сравниваете со строкой
Кроме того вы пытаетесь запихать её в числовое поле в базе данных

 

seif

А как мне «шагать» по меню бота дальше, что бы после очередной кнопки появлялась новая кнопка, без сравнения со строкой?
Можно маленький пример? А то я совсем нуб.

И ведь кнопкой выше где мы выбираем мужской/женский пол, там все работает и записывается с тем же условием.

 

twim32

Отталкивайтесь не от ответов которые приходят от юзера, а от недостающей информации.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *