Добавление записей в MySQL из урока на форме

техническая поддержка по Construct 2

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 01:38

Доброго времени суток, дорогие друзья!
Долго я возился с документациями и "внутренностями" данных скриптов, которые написал уважаемый Kolovrat. Но так и не понял одну вещь. Как мне добавить ко всему этому свой post-запрос и в итоге при обращении его забрать в констракт? :unknown:

К примеру: мне нужно отправить уровень зарегистрированного и залогиненного игрока из констракта в базу. При этом, запись должна пойти в столбец "user_lvl", который находится в строке с необходимым "user_login". Далее таким же макаром надо этот уровень получит в игру, если зашел с другого устройства.

Понимаю, что в российском интернете все тыкают на учебники, мануалы, части кода и прочее. Но, если можно, объясните идиоту.

За полный скрипт с объяснением сохранения и загрузки могу материально поддержать, если нужно будет - выхода нет :unknown:
Аватара пользователя

Участник
Сообщений: 13
Я тут с 26 авг 2015
Репутация 0 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 12:15

Если записываешь данные в базу, то примерно так
Передаем в php (AJAX - POST TO URL)
Код: Выделить всё
tag: что хочешь, например "saveCurrentLvl"
url: путь/save.php
Data: "login=" & переменная_логина & "&level=" & переменная_уровня
Method: "POST"


в самом пхпшнике (после всех подключений к базе) пишем:
Код: Выделить всё
if(isset($_POST['login'])) $login = $_POST['login']; //Переданная из игры переменная с именем задается как переменная php скрипта
if(isset($_POST['level'])) $level = $_POST['level']; //Переданная из игры переменная с уровнем задается как переменная php скрипта
if (isset($login) && isset($level)){  //Проверяем наличие переданных значений, и если все норм, то
   $q1 = mysql_query("UPDATE yoursqltabname SET user_lvl = $level WHERE user_login = $login") //добавляем значение поля user_lvl в ту строку, где поле user_login равно переданному
}

Если скрипт закончил работу, можно в игре выдать сообщение об этом

AJAX - on saveCurrentLvl completed --> Text - set text - "Данные успешно сохранены в базу"
Все люди в мире делятся на 10 категорий: тех, кто понимает двоичную систему, и тех, кто - нет.
БЕТА-ТЕСТ!!! (v.0.9): CityMoles
Аватара пользователя

Участник
Сообщений: 693
Я тут с 13 мар 2017
Репутация 95 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 12:45

А если забираешь, то почти то же самое, но передаешь уже только логин в скрипт load.php, и в нем

Код: Выделить всё
if(isset($_POST['login'])) $login = $_POST['login'];
  if (isset($login))  {
   $q1 = mysql_query("SELECT user_lvl FROM yoursqltabname  WHERE user_login = $login");
   $level = mysql_fetch_array($q1);
  }
  echo $level[0];

AJAX - on loadCurrentLvl completed --> и назначаешь переменной уровня игрока полученное значение AJAX.LastData.

Если потом захочешь получать НЕСКОЛЬКО значений, то финальную переменную создаешь по такому типу:
Код: Выделить всё
$serveranswer = "PlayerStatus=".$status[0]."|xposition=".$xposition[0]."|yposition=".$yposition[0]."|name=".$name[0]."|sex=".$sex[0];
echo $serveranswer;

а потом полученный AJAX.LastData разбираешь на значения tokenat`ом.
Все люди в мире делятся на 10 категорий: тех, кто понимает двоичную систему, и тех, кто - нет.
БЕТА-ТЕСТ!!! (v.0.9): CityMoles
Аватара пользователя

Участник
Сообщений: 693
Я тут с 13 мар 2017
Репутация 95 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 13:54

VedebellO писал(а):Если записываешь данные в базу, то примерно так
Передаем в php (AJAX - POST TO URL)
Код: Выделить всё
tag: что хочешь, например "saveCurrentLvl"
url: путь/save.php
Data: "login=" & переменная_логина & "&level=" & переменная_уровня
Method: "POST"


в самом пхпшнике (после всех подключений к базе) пишем:
Код: Выделить всё
if(isset($_POST['login'])) $login = $_POST['login']; //Переданная из игры переменная с именем задается как переменная php скрипта
if(isset($_POST['level'])) $level = $_POST['level']; //Переданная из игры переменная с уровнем задается как переменная php скрипта

if (isset($login) && isset($level)){  //Проверяем наличие переданных значений, и если все норм, то
   $q1 = mysql_query("UPDATE yoursqltabname SET user_lvl = $level WHERE user_login = $login") //добавляем значение поля user_lvl в ту строку, где поле user_login равно переданному
}

Если скрипт закончил работу, можно в игре выдать сообщение об этом

AJAX - on saveCurrentLvl completed --> Text - set text - "Данные успешно сохранены в базу"


И все равно что-то не так :scratch_one-s_head:
И иклуднул подключение к бд, и прописал кросдоменность
Пустое поле >_<
Аватара пользователя

Участник
Сообщений: 13
Я тут с 26 авг 2015
Репутация 0 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 14:02

ты в каком режиме запускаешь?
в превью?
Все люди в мире делятся на 10 категорий: тех, кто понимает двоичную систему, и тех, кто - нет.
БЕТА-ТЕСТ!!! (v.0.9): CityMoles
Аватара пользователя

Участник
Сообщений: 693
Я тут с 13 мар 2017
Репутация 95 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 14:05

VedebellO писал(а):ты в каком режиме запускаешь?
в превью?


Браузеры, Node.js
Аватара пользователя

Участник
Сообщений: 13
Я тут с 26 авг 2015
Репутация 0 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 14:27

брось исходники в личку (пароли можешь затереть), я посмотрю на своей бд
Все люди в мире делятся на 10 категорий: тех, кто понимает двоичную систему, и тех, кто - нет.
БЕТА-ТЕСТ!!! (v.0.9): CityMoles
Аватара пользователя

Участник
Сообщений: 693
Я тут с 13 мар 2017
Репутация 95 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 17:03

Хм... в тех уроках, по которым я учился работать с БД, немного иначе было прописано подключение. Когда пытаюсь делать в твоих исходниках, то база не слушает php

Когда же делаю вот так:
Код: Выделить всё
<?php
$db_host = 'localhost';
$db_login = '*****';
$db_passwd = '*****';
$db_name = '******';

// подключаемся к бд
$link = mysql_connect($db_host, $db_login, $db_passwd) or die("Ошибка при подключении MySQL" );
mysql_select_db($db_name, $link) or die('Ошибка при подключении к БД');

if(isset($_POST['login'])) $login = $_POST['login']; //Переданная из игры переменная с именем задается как переменная php скрипта
if(isset($_POST['level'])) $level = $_POST['level']; //Переданная из игры переменная с уровнем задается как переменная php скрипта
if (isset($login) && isset($level)){  //Проверяем наличие переданных значений, и если все норм, то
   $q1 = mysql_query("UPDATE `modx_qproba_users` SET `user_lvl` = '$level' WHERE `login_user` = '$login'"); //добавляем значение поля user_lvl в ту строку, где поле user_login равно переданному
   }
 
?>

т.е. игнорируя все твои дополнительные подключаемые модули - все меняет без проблем.
Так что копать следует в этом направлении (если конечно тебе нужны все функции, что в тех модулях прописаны: восстановление пароля и прочее).
P.S. на имя таблицы внимания не обращай, я в своей базе ее создал с моими префиксами, чтобы новую базу не лепить.
Все люди в мире делятся на 10 категорий: тех, кто понимает двоичную систему, и тех, кто - нет.
БЕТА-ТЕСТ!!! (v.0.9): CityMoles
Аватара пользователя

Участник
Сообщений: 693
Я тут с 13 мар 2017
Репутация 95 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 17:21

VedebellO писал(а): игнорируя все твои дополнительные подключаемые модули - все меняет без проблем.

значит буду лепить свою регистрацию, подгоняя под данный код (выше).

Благодарю :drinks:
Аватара пользователя

Участник
Сообщений: 13
Я тут с 26 авг 2015
Репутация 0 [ ? ]

Сообщение Добавление записей в MySQL из урока на форме
» 16 апр 2018, 17:46

Кстати, зайди на дискорд, там в рандоме этот код раскритиковали))
Я бы посоветовал посмотреть в сторону medoo, а не городить свои костыли для бд. Ну и юзать хотя бы минимальные проверки.
Потому что с точки зрения безопасности
$login = $_POST['login']
$q1 = mysql_query("UPDATE `modx_qproba_users` SET `user_lvl` = '$level' WHERE `login_user` = '$login'");
Это просто катастрофа. :biggrin:

так что потренироваться можно, но лучше с опытными phpшниками пообщайся на тему обработки запросов перед отправкой в базу.
Все люди в мире делятся на 10 категорий: тех, кто понимает двоичную систему, и тех, кто - нет.
БЕТА-ТЕСТ!!! (v.0.9): CityMoles
Аватара пользователя

Участник
Сообщений: 693
Я тут с 13 мар 2017
Репутация 95 [ ? ]



Вернуться в Вопрос-Ответ по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх