Есть база данных с таблицами 'users' и 'tests' связь между ними (1:M)
Так выглядит таблица 'tests'
С клиента отправляется AJAX запрос с двумя значениями "name" и "score" в php скрипт.
Задача состоит в том, чтобы на стороне php узнать есть ли в таблице "tests" передаваемое значение "name" принадлежащее именно тому "user" который авторизован. И если значение есть обновить поле "progress" на передаваемое значение "score", иначе создать новую запись в бд.
Делаю это так через RedBeanPHP:
Но здесь явно что-то не так, потому что данные не обновляются.
Никаких ответов и ошибок от сервера не приходитДанные с AJAX передаются<?php
require "db.php";
if (isset($_SESSION['logged_user'])) {
// Получаем id users чья сессия
$userid = $_SESSION['logged_user']->id;
// Загружаем данные об этом user
$user = R::load( 'users', $userid );
// Дальше я не уверен в том правильно ли я сделал выборку
// ищем запись $_POST['name'] в поле "name" в таблице "tests"
$findTest = R::findOne('tests', 'name = ?', array($_POST['name']));
//Если такая запись есть
if ($findTest) {
//В цикле, который по идее перебирает именно данные юзера с id = $_SESSION['logged_user']
foreach( $user->ownTestsList as $test ) {
//Если найдено поле = $_POST['name']
if ($test->name == $_POST['name']) {
//При этом, если значение progress в базе < $_POST['score']
if ($test->progress < $_POST['score']) {
//То записываем новое значение в progress
$test->progress = $_POST['score'];
//И записываем новое значение в time
$test->time = strtotime("now");
//Записываем новые данные в бд к тому самому юзеру, чье id = $_SESSION['logged_user']
$user->ownTestsList[] = $test;
}
}
break;
}
}
//Если запись не найдена $findTest
else {
//Создаем новое поле в таблице "tests"
$test = R::dispense('tests');
$test->name = $_POST['name'];
$test->progress = $_POST['score'];
$test->time = strtotime("now");
$user->ownTestsList[] = $test;
}
//Сохраняем данные
R::store($user);
}
?>