2017-07-14 3 views
0

なぜ私のデータはdbに2回保存されるのですか?私はフォームを送信すると、フォームデータは保存されますが、それはなぜDBの別のempety行を作成するのですか?角度4 crudデータをPHPでmysql dbに挿入

結果は次のようになります:
名前 - ユーザ名 - メール - 数 - - - -

私のユーザーサービス

import {Injectable} from "@angular/core"; 
import {User} from "./user"; 
import {Http} from "@angular/http"; 
import "rxjs"; 
import { Observable } from "rxjs" 

@Injectable() 
export class UserService { 

    constructor(private _http: Http) { 
    } 

    create(user) { 
     return this._http.post('http://localhost/api/create.php', user).map(()=>"") 
    } 

user.component.ts

import {Component, OnInit} from "@angular/core"; 
import {User} from "./user"; 
import {UserService} from "./user.service"; 
import {isNumber} from "util"; 

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

    // users: Array<User> = [ 
    //  new User(1, 'fist', 'last', '[email protected]'), 
    //  new User(2, 'second', '2last', '[email protected]'), 
    //  new User(3, 'third', '3last', '[email protected]') 
    // 
    // ]; 

    users: Array<User>; 


    constructor(private _userService: UserService) { 
    } 

    ngOnInit() { 

     this.getUsers(); 
     // this.destroy(); 
    } 

    create(user) { 
     //console.log(user); 
     this._userService.create(user).subscribe(() => this.getUsers()) 
    } 

    destroy(id) { 
     this._userService.ndelete(id.id).subscribe(() => this.getUsers()) 
    } 

    // update(users: any) { 
    // const i = this.users.indexOf(users.original); 
    // this.users[i] = users.edited; 
    //} 

    getUsers() { 
     this._userService.getUsers() 
      .subscribe(users => { 
       this.users = users 
      }); 

    } 

} 

ここ親にここ

ユーザーnew.component.ts

import {Component, OnInit, Output, EventEmitter} from '@angular/core'; 
import {User} from "../user"; 

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

    newUser = new User(); 
    @Output() createNewUserEvent = new EventEmitter(); 

    constructor() { } 

    ngOnInit() { 
    } 

    create(){ 
    this.createNewUserEvent.emit(this.newUser); 
    //this.newUser = new User; 
    } 

} 

とその形態

<h3>user new component</h3> 
<form (submit)= "create()"> 
    <input type="text" name="name" [(ngModel)]="newUser.name"> 
    <input type="text" name="username" [(ngModel)]="newUser.username"> 
    <input type="text" name="email" [(ngModel)]="newUser.email"> 
    <input type="text" name="phone" [(ngModel)]="newUser.phone"> 
    <input type="submit"> 
</form> 

とのデータをemmit私の子コンポーネントは、MySQLとの対話のphpファイルがあるさデータベース

include ("db.class.php"); 

$conn = new Db(); 

$data = json_decode(file_get_contents("php://input")); 

$sql = "insert into users set 
     name= '$data->name', 
     username= '$data->username', 
     email= '$data->email', 
     phone= '$data->phone' 
"; 
$stmt = $conn->conn->prepare($sql); 
$stmt->execute(); 

$conn->conn = null; 
//end 
+0

2つのリクエストを送信しますか? –

答えて

0

私はエラーを理解することができませんでしたが、データベースへのヌル値の入力を防ぐためにif(!empty(value))を使用することができます。

if(!empty($data)){ $sql = "insert into users set 
     name= '$data->name', 
     username= '$data->username', 
     email= '$data->email', 
     phone= '$data->phone'"; } 

これにより、空のデータベース行が挿入されなくなります。