Как обновить значение в базе данных с angular - PullRequest
0 голосов
/ 12 марта 2020

Я использую angular CLI 8.1.0. Я использую PHP в качестве моего бэкэнда. У меня есть 2 кнопки «одобрить» и «отклонить». Когда я нажимаю кнопку «Подтвердить» в моей базе данных, значение столбца состояния должно быть изменено с «в ожидании» на «утверждено» или «отклонено» (когда я нажимаю кнопку «отклонить»). Но это обновляет пустое значение в моей базе данных. Здесь я прилагаю свой код.

api.service.ts

updateById(id,payload)
{
   let url = `http://localhost/angular_admin/php/index.php?id=${id}`
   return this.httpClient.put(url, payload);
}

compatibility.component.ts

approve() {
    this.apiService.updateById(this.id, {status:'approve'})
    .subscribe((data:any)=> {
        if (data.Message == "Updated") { // check if the result is sucess then navigat to
            this.router.navigate(["/home/vendor-action"]);
        }
    });
}

index . php

<?php

    $conn=mysqli_connect("localhost","root","root","angdb");

    $request=$_SERVER['REQUEST_METHOD'];

    $data=array();
    switch($request)
    {
        case 'GET':
            response(getData());
            break;

        case 'PUT':
            response(updateData());

        default:
            #code...
            break;
    }

    function getData()
    {
        global $conn;

        if(@$_GET['id'])
        {
            @$id=$_GET['id'];

            $where="AND id=".$id;
        }
        else
        {
            $id=0;
            $where="";
        }


        $query=mysqli_query($conn,"select * from vendor where status='pending' ".$where);
        while($row=mysqli_fetch_assoc($query))
        {
            $data[]=array("id"=>$row['id'],"changeColumn"=>$row['changeColumn'],"type"=>$row['type'],"timestamp"=>$row['timestamp'],"status"=>$row['status'],"name"=>$row['name']);
        }
        return $data;
    }

    function updateData()
    {
        global $conn;
        parse_str(file_get_contents('php://input'),$_PUT);

        if(@$_GET['id'])
        {
            @$id=$_GET['id'];

            $where="where id=".$id;
        }
        else
        {
            $id=0;
            $where="";
        }

        $query=mysqli_query($conn,"update vendor set status='".$_PUT['status']."'".$where);

        if($query==true)
        {
            $data[]=array("Message"=>"Updated");
        }
        else
        {
            $data[]=array("Message"=>"Not updated");
        }
        return $data;
    }

    function response($data)
    {
        echo json_encode($data);
    }
?>

Ответы [ 2 ]

1 голос
/ 16 марта 2020

используйте метод get в вашем запросе на обновление php

$query=mysqli_query($conn,"update vendor set status='".$_PUT['status']."'".$where);
0 голосов
/ 12 марта 2020

анализирует данные перед использованием в любом месте с JSON .parse. Обновите метод утверждения, как показано ниже:

approve() {
    this.apiService.updateById(this.id, {status:'approve'})
    .subscribe((data:any)=> {
        data = JSON.parse(data);
        if (data.Message == "Updated") { // check if the result is sucess then navigat to
            this.router.navigate(["/home/vendor-action"]);
        }
    });
}

Можете ли вы прикрепить скриншот ошибки здесь.

...