jquery ajax

ara05ru

Новичок
Дорогие друзья ! Помогите пожалуйста разобраться что к чему в коде. Так как изначально не я писал код. Есть две таблицы php в которых заносятся время работы техники по дате. И если в одну и ту же дату в обоих табелях поставить значение допустим(8), то jquery выдает сообщение "конфликт ..." и перезагружает страницу, не давая возможности внести нужное значение. Так вот нужно чтоб сообщение о "конфликте" при совпадении данных в разных табелях выходило, но при этом можно было все таки внести значение.
JavaScript:
$(function(){
    var oldVal, newVal, id, classname;
    $('.edit , .editm').focus(function(){
        oldVal = $(this).text();
        id = $(this).parent().attr("id");
        cname = $(this).attr("id");
    });
    $('.edit , .editm').focusout(function(){   
        newVal = $(this).text();
        if(newVal != oldVal){
            // console.log('cname '+cname+', id '+id+', newVal '+ newVal);

            $.ajax({
                url: '/ajax/edittranstabdataajax.php',
                type: 'POST',
                data: {val: newVal, id: id, cname: cname,},
                cache: false,
                success: function(res){
                    res = res != "" ? $.parseJSON(res) : {};
                    console.log(res["0"]);
                    if (!res["0"] ) {
                        alert('Ошибка при добавлении данных');
                        location.reload();
                    }
                    else if (res["0"] == 'error_duplicate') {
                        alert('Конфликт с данными в табеле водителей "' + res["1"] + '" от ' + res["2"]);
                        location.reload();
                    }

                },
                error: function(){
                    alert('Error!');
                },
            });
        }

    });

    $('.edit').keypress(function(e){
        newVal = $(this).text();
        if (newVal.length > 1) {
            return false;
        }
        //console.log(e.which);
        if (!(e.which >= 48 && e.which <= 57)) {
            return false;
        }
    });

});
код из ajax
PHP:
function diffdate($datetime1, $datetime2){
    $datetime1 = new DateTime($datetime1);
    $datetime2 = new DateTime($datetime2);
    $interval = $datetime1->diff($datetime2);
    return $interval->format('%r%a');
}
$id = intval($_POST['id']);
$val = $_POST['val'];
$cname = $_POST['cname'];
/*if (substr($cname, 0, 2) == 'dr' or substr($cname, 0, 2) == 'dh') {
    $check = $db->check_transtabdata($id,$cname,$val);
    if ($check[0] == 'error_duplicate') {
        echo(json_encode($check));
        exit();
    }
}*/
$dbid = $db->upd_transtablesdata_oc($id,$cname,$val);
if ($dbid) {
    echo(json_encode($check));
    exit();
}
else{
    echo(json_encode(array(0 => 0 )));
    exit();
}
 

ara05ru

Новичок
функция из database.php. Может здесь надо смотреть ?
PHP:
public function upd_transtablesdata_oc($tabtrans_id,$cellname, $val){
        $findstr = 'tabtrans_id =\''.$tabtrans_id.'\'';
        $tbdata = R::findOne('transtablesdata', $findstr);
        if ($tbdata->id and $cellname) {
            if($val == ''){
                $val = NULL;
            }
            $tablesdata = R::load('transtablesdata', $tbdata->id);
            $tablesdata->$cellname = $val;
            if(R::store($tablesdata)){
                return $tablesdata->id;
            }
            else return FALSE;
        }
        else return FALSE;
    }
 

ara05ru

Новичок
разобрался. тема закрыта. в ajax нужно было небольшое изменение после проверки на совпадения
 
Сверху