Умелец

Почему не сохраняются данные в БД

Рекомендованные сообщения



14 posts in this topic

Решил сделать команду чисто для теста, отвечает она за регистрацию PIN-кода у админа, вроде все шло четко, но он не хочет сохранятся в базу данных

 

Спойлер

case DLG_REGADMIN:
		{
			if(response)
			{
				if(!strlen(inputtext))
				{
					ShowAdminReg(playerid);
					return SCM(playerid, COLOR_RED, !"[Ошибка] {FFFFFF}Придумайте PIN-код");
				}
				if(strval(inputtext) < 1000 || strval(inputtext) > 9999)
				{
					ShowAdminReg(playerid);
					return SCM(playerid, COLOR_RED, !"[Ошибка] {FFFFFF}PIN-код должен состоять из 4 цифр!");
				}
				else
				{
					strmid(player_info[playerid][ADMINPASS], inputtext, 0, strlen(inputtext), 5);
					SCM(playerid, COLOR_WHITE, "Вы успешно зарегистрировали админ аккаунт");
				}
			}
			else
			{
				SPD(playerid, -1, 0, " ", " ", " ", "");
			}
		}
Спойлер


static const fnt_query[] = "INSERT INTO `users` (`adminpassword`) VALUES ('%s')";
new query[sizeof(fnt_query)+(-2+4)];
format(query, sizeof(query), fnt_query, player_info[playerid][ADMINPASS]);
mysql_query(dbHandle, query);

 

 

 

Screenshot_43.png

Screenshot_42.png

Edited by Умелец

Share this post


Link to post
Share on other sites

Если это PIN-Code, зачем хранить его как строку?
Создай переменную целочисленного значения, и записывать легче, и хранить, и извлекать.

Share this post


Link to post
Share on other sites

@20th century спасибо, попробую

Share this post


Link to post
Share on other sites

TS Posted (edited) · Report post

@20th century Ну не знаю, в консоль выводит значение переменной но в базу не записывает, 2002 это PIN-код

Screenshot_44.png

Edited by Умелец

Share this post


Link to post
Share on other sites

@Умелец 



new sql_query[128];
format(sql_query, sizeof(sql_query), "UPDATE `users` SET `adminpassword` = '%d' WHERE `id` = '%d'", player_info[playerid][ADMINPASS], player_info[playerid][ID]/*(ID на своё)*/);
mysql_query(dbHandle, query);

попробуйте

 

Share this post


Link to post
Share on other sites

@keyl1337 Теперь записывает кривовато

Screenshot_45.png

Screenshot_46.png

Share this post


Link to post
Share on other sites

@Умелец, а покажите-ка объявление переменной, в которой храните PIN.

Share this post


Link to post
Share on other sites

Share this post


Link to post
Share on other sites

Вы забыли поменять VARCHAR на INTEGER в таблице.

Share this post


Link to post
Share on other sites

@20th century Стоит

Screenshot_48.png

Share this post


Link to post
Share on other sites

Ещё раз дай весь код абсолютно, всё что связано с пин-кодом.

Share this post


Link to post
Share on other sites

@20th century 

Спойлер

stock ShowAdminReg(playerid)
{
	new dialog[38+(-2+MAX_PLAYER_NAME)];
	format(dialog, sizeof(dialog),
		"{FFFFFF}Придумайте Пин-Код для админки");
	SPD(playerid, DLG_REGADMIN, DIALOG_STYLE_INPUT, "{F6B352}Sand Role Play", dialog, "Далее", "Выход");
}

 

Спойлер

case DLG_REGADMIN:
{
  if(response)
  {
    if(!strlen(inputtext))
    {
      ShowAdminReg(playerid);
      return SCM(playerid, COLOR_RED, !"[Ошибка] {FFFFFF}Придумайте PIN-код");
    }
    if(strval(inputtext) < 1000 || strval(inputtext) > 9999)
    {
      ShowAdminReg(playerid);
      return SCM(playerid, COLOR_RED, !"[Ошибка] {FFFFFF}PIN-код должен состоять из 4 цифр!");
    }
    else
    {
      new sql_query[128];
      format(sql_query, sizeof(sql_query), "UPDATE `users` SET `adminpassword` = '%d' WHERE `id` = '%d'", player_info[playerid][ADMINPASS], player_info[playerid][ID]);
      mysql_query(dbHandle, sql_query);
      strmid(player_info[playerid][ADMINPASS], inputtext, 0, strval(inputtext));
      printf("%d", player_info[playerid][ADMINPASS]);
      SCM(playerid, COLOR_WHITE, "Вы успешно зарегистрировали админ аккаунт");
    }
  }
  else
  {
    SPD(playerid, -1, 0, " ", " ", " ", "");
  }

}

 

 

Share this post


Link to post
Share on other sites
2 часа назад, Умелец сказал:

new sql_query[128];
      format(sql_query, sizeof(sql_query), "UPDATE `users` SET `adminpassword` = '%d' WHERE `id` = '%d'", player_info[playerid][ADMINPASS], player_info[playerid][ID]);
      mysql_query(dbHandle, sql_query);
      strmid(player_info[playerid][ADMINPASS], inputtext, 0, strval(inputtext));

 

Вы в базу данных загружаете старое значение переменной и лишь затем обновляете содержимое переменной. И вообще это странно, что компилятор позволил использовать функцию strmid для переменной player_info[playerid][ADMINPASS].

 

Спойлер

case DLG_REGADMIN:
{
	if(response)
	{
		if(!strlen(inputtext))
		{
			ShowAdminReg(playerid);
			return SCM(playerid, COLOR_RED, !"[Ошибка] {FFFFFF}Придумайте PIN-код");
		}
		
		new value = strval(inputtext);
		
		if(value < 1000 || value > 9999)
		{
			ShowAdminReg(playerid);
			return SCM(playerid, COLOR_RED, !"[Ошибка] {FFFFFF}PIN-код должен состоять из 4 цифр!");
		}
		
		player_info[playerid][ADMINPASS] = value;
			
		new sql_query[128];
		format(sql_query, sizeof(sql_query), "UPDATE `users` SET `adminpassword` = '%d' WHERE `id` = '%d'", player_info[playerid][ADMINPASS], player_info[playerid][ID]);
		mysql_query(dbHandle, sql_query);
		
		SCM(playerid, COLOR_WHITE, "Вы успешно зарегистрировали админ аккаунт");
	}
	else
	{
		SPD(playerid, -1, 0, " ", " ", " ", "");
	}
}

 

 

Share this post


Link to post
Share on other sites

@odosenok Огромное спасибо, сам не мог понять этого :D

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Feris
      By Feris
      Приветствую всех, Вы ищете SA-MP серверы Freeroam ? Вот, пожалуйста!

      Языковые серверы: Английский/Чешский/Словацкий

      Посетите наши SA-MP серверы :

      Сервер 1 0.3.7 Клиентский сервер:
      Для подключения: play.superparba.eu:7777

      Сервер 2 0.3DL Клиентский сервер собственные острова и новые сюжетные миссии:
      Для подключения: Dl.superparba.eu:7777

      Сайт сервера: SuperParba.eu

      Discord: https://discord.com/invite/VRrtbsCJgb

      Почему вы должны играть на наших игровых серверах?

      SuperParba построен на создании сообщества и его характера, в котором вы можете управлять своим собственным
      бизнесом, покупать недвижимость, компании, быть членом банды - участвовать в гонках, бороться за территорию, захватывать склады в уникальной игре GANG.
      захватывать склады в уникальной системе GANG. Множество различных мероприятий от команды администрации, таких как
      Fallout, Sky (street) races, Color Dash, Runners VS Riders, Shooters VS Riders, Random events, Hit & Run,
      Тюнинг события, Дерби, Смертельные события, DM ... будут проходить каждый день и дополняться МЕГА
      событиями, которые проходят в течение нескольких недель! Мы работаем с 2008 года, сервер прошел
      через сотни полноценных обновлений из предложений по улучшению сервера от игрового
      сообщества! PARTY СЕРВЕР с игровым режимом RZE 10.1 режим попадает прямо под кожу, такова
      SuperParba!

      - Профессиональная команда администраторов, которая следит за порядком, создает веселье и помогает игрокам с любой проблемой.
      Если вы не знаете, как справиться с чем-то, используйте /ask, чтобы отправить свой вопрос напрямую к
      Администраторам, и вы получите ответ в кратчайшие сроки.

      - Для новичков был добавлен краткий учебник. Для навигации к месту запуска используйте команду
      /tutorial. Завершив учебник с 0 часов игры, новичок получит 7 дней
      премиум классик бесплатно.

      - Игроки нашли много веселья, эмоций, поворотов, друзей, новостей и воспоминаний за эти 12
      лет. Есть даже несколько реальных отношений, с которыми они познакомились в SuperParba. Это будет
      безумие, когда они расскажут об этом своим детям. Игроки рады вернуться на наш сервер, так что приходите и присоединяйтесь к нашей
      семье!

      Спасибо, что читаете.
    • panda1999
      By panda1999
      Ищу команду для открытие Торговой площадки Котороя готова вложиться на разработку писать в лс на сайте или вк https://vk.com/panda131999
      Скрин шот главной страницы


    • bdbsnnsd
      By bdbsnnsd
      Не могу найти куда в бд написать пароль от админки.