Как получить данные из базы данных с параметром - PullRequest
1 голос
/ 09 марта 2020

Я использую angular cli 8.1.0. Я хочу передать параметр в URL и получить данные из php mysql. Моя сторона php работает нормально, как это: http://localhost/repos/Sportaz-repo/AdminStore/angular_admin/php/index.php?id=4

Но как я могу получить данные с параметром.

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Params } from '@angular/router';
import { ApiService } from 'src/app/api.service';

@Component({
  selector: 'app-approval',
  templateUrl: './approval.component.html',
  styleUrls: ['./approval.component.css']
})
export class ApprovalComponent implements OnInit {

  constructor(private activatedRoute:ActivatedRoute,private apiService:ApiService) { }

  id:any;
  result:any;

  ngOnInit() 
  {
    this.id=this.activatedRoute.snapshot.paramMap.get('id');
    console.log(this.id);

    this.activatedRoute.queryParamMap.subscribe((queryParams:Params)=>{
      let vendorId=queryParams['id'];
      this.apiService.getVendorById(vendorId)
      .subscribe(data=>{
        this.result=data;
      });
    });
  }
}

api.service.ts

import { Injectable, Output,EventEmitter } from '@angular/core';
import { map } from 'rxjs/operators';
import { HttpClient } from '@angular/common/http';
import { Users } from './users';
import { Observable } from 'rxjs';

@Injectable({
  providedIn: 'root'
})
export class ApiService { 
  constructor(private httpClient : HttpClient) { }\

  getVendorById(data)
  {
    let datas=JSON.stringify({'id':data});
    return this.httpClient.get('http://localhost/repos/Sportaz-repo/VaamozWeb/VaamozBusiness/RestApi/VaamozStore/AdminStore/angular_admin/php/index.php?id='+datas)
    .map(response => response.json() );
  }
}

index. php

<?php
    $conn=mysqli_connect("localhost","root","root","angdb");        
    $request=$_SERVER['REQUEST_METHOD'];

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

        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 response($data)
    {
        echo json_encode($data);
    }
?>

Appro.com .ponent. html

{{result.name}}

1 Ответ

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

Я не думаю, что вам нужно использовать функцию карты. Просто позвоните в API с URL, и он удовлетворит ваши потребности.

  getVendorById(data)
  {
    return this.httpClient.get('http://localhost/repos/Sportaz-repo/VaamozWeb/VaamozBusiness/RestApi/VaamozStore/AdminStore/angular_admin/php/index.php?id='+data);
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...