как сохранить массив данных через ajax в php - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть jquery функция. Из которого я отправляю массив json в php, и после этого будет вызываться функция updates (), и в этой функции я сделал общий запрос на обновление. updates () будет принимать параметр column_name, данные как массив и условие как массив.

function theme1(id)
{
    var data = {
        'backgroundf0f0f0_bgcolor':'#ffffff',
        'businessheadlineblack_h3_color':'#000000',
        'backgroundcb3265_bgcolor':'#f569f5',
        'background000033_bgcolor':'#483c42',
        'span_icon_bgcolor':'#f569f5',
        'span_icon_i_color':'#ffffff',
        'usernamewhite_h4_color':'#000000',
        'subheadingwhite_h5_color':'#000000',
        'subheadingwhite_p_color':'#000000',
        'cards_button_a_color':'#000000',
        'edit_button_a_color':'#000000',
        'edit_button_a_bgcolor':'#f569f5'
    };
    var edittemplate_update = 'edittemplate_update';
    var datajson = JSON.stringify(data);
    $.ajax({
    url: '../../css_ajax.php',
    type: 'post',
    dataType: "json",
    data: {'table_name': edittemplate_update, 'data': datajson},
    success: function(response){
        if(response != 0){
          console.log(response);
        }else{
            alert('not updated!');
        }
    },
 });    
 }

Сверху ajax Я отправляю json данные в php файле.

if(isset($_POST['table_name']))
{
$data = $_POST['data'];

$decodedata=json_decode($data);

$image_id = $_SESSION['image_id'];

$last_inserted_id = $_SESSION['last_inserted_id'];

$condition = array('digbizcard_id'=>$image_id,'edittemplate_id'=>$last_inserted_id);

$result = $obj->updates($_POST['table_name'],$decodedata,$condition);
if($result == TRUE || $result != '')
{
    echo $decodedata;
}
else
{
    echo $decodedata;
}
}

В updates () я сделал общий код для запроса на обновление. В котором имя таблицы, данные в массиве и условие в массиве будут отправлены и будет выполнен запрос на обновление.

функция обновления:

public function updates($table,$data,$conditions)
{
if(!empty($data) && is_array($data)){
    $colvalSet = '';
    $whereSql = '';
    $i = 0;
    $data2 = array();
    foreach($data as $key=>$val)
    {
        $pre = ($i > 0)?', ':'';
        $colvalSet .= $pre.$key." = ".":".$key;
        $data2[":" . $key] = $val;
        $i++;
    }

    if(!empty($conditions)&& is_array($conditions)){
        $whereSql .= ' WHERE ';
        $i = 0;
        foreach($conditions as $key => $value){
            $pre = ($i > 0)?' AND ':'';
            $whereSql .= $pre.$key." = ".":".$key;
            $data2[":" . $key] = $value;
            $i++;
        }
    }
    $stmt = "UPDATE ".$table." SET ".$colvalSet.$whereSql;

    $stmt = $this->conn->prepare($stmt);

    $stmt->execute($data2);
}else{
    //$this->conn->close();
    return false;
}
}

Я думаю, что данные должны быть в формате ниже :

$decodedata= array('index1'=>value1,'index2'=>value2);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...