Обновление пустого значения в базе данных - PullRequest
0 голосов
/ 11 марта 2020

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

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);
    }
?>

api.service.ts

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

official.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"]);
        }
    });
}

Ответы [ 2 ]

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

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

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='".$_GET['status']."'".$where);

    if($query==true)
    {
        $data[]=array("Message"=>"Updated");
    }
    else
    {
        $data[]=array("Message"=>"Not updated");
    }
    return $data;
}
0 голосов
/ 11 марта 2020

Я определенно согласен с тем, что вам нужно улучшить дизайн, и, пожалуйста, попробуйте найти конкретную c проблему. Очень сложно сказать, в чем заключается проблема в коде.

Пожалуйста, попробуйте нижеприведенный код, дайте нам знать, если проблема все еще возникает. Я добавил консоль и echo для тестирования, вы можете удалить их позже

approval.component.ts

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

api.service.ts

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


index.php

function updateData()
    {
        global $conn;
        parse_str(file_get_contents('php://input'),$_PUT);
        
        $status = $_PUT['status'];
        $id = $_PUT['id'];
        
        $sql = "UPDATE vendor SET status=".$status." WHERE id=".$id.";

        $query=mysqli_query($conn, $sql);

        if($query==true)
        {
            $data[]=array("Message"=>"Updated");
        }
        else
        {
            $data[]=array("Message"=>"Not updated");
        }
        return $data;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...