GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Aplicação RESTFul + AngularJS - Função Deletar Não Funciona

mysql
php
rest
webservice
angular2
Tags: #<Tag:0x00007f260bedb1f0> #<Tag:0x00007f260bedb0b0> #<Tag:0x00007f260bedaf70> #<Tag:0x00007f260bedae08> #<Tag:0x00007f260bedaca0>

#1

Pessoal, estou desenvolvendo um aplicativo que possui um CRUD em um banco MySql.
Estou utilizando uma API que encontrei na internet e adaptei ela para as minhas necessidades.
A leitura e o cadastro estão funcionando perfeitamente, porem o Delete não. Vou colocar os codigos abaixo, quem puder me orientar, eu agradeço muito!

Delete.class.php:

<?php
class Delete extends Conn{
    private $Tabela;
    private $Termos;
    private $Places;
    private $Result;
    //PDO Statement---------
    private $Delete;
    //PDO-------------------
    private $Conn;
    
    public function ExeDelete($Tabela, $Termos, $ParseString){
        $this->Tabela = (string) $Tabela;
        $this->Termos = (string) $Termos;
        parse_str($ParseString, $this->Places);
        $this->getSyntax();
        $this->Execute();
    }
    public function getResult(){
        return $this->Result;
    }
    public function getRowCount(){
        return $this->Delete->rowCount();
    }
 
    public function setPlaces($ParseString){
        parse_str($ParseString, $this->Places);
        $this->Execute();
        $this->getSyntax();
    }
    //Metod Privados
    private function Connect() {
        $this->Conn = parent::getConn();
        $this->Delete = $this->Conn->prepare($this->Delete);
    }
    private function getSyntax() {
    $this->Delete = "DELETE FROM {$this->Tabela} {$this->Termos}";
      
    }
    private function Execute() {
        $this->Connect();
        try {
            $this->Delete->execute($this->Places);
            $this->Result = true;
        } catch (Exception $ex) {
             $this->Result = null;
            echo"Erro ao cadastrar".$e->getMessage(), $e->getLine(), $e->getFile(), $e->getCode();
        }
    }
}

api.php:

<?php
$data = json_decode(file_get_contents("php://input"));
$filter = filter_input(INPUT_SERVER,'REQUEST_METHOD');
require ('./_app/Config.php'); 
         
if($filter === 'POST'){
    switch ($data->parametros) {
      //============================================ cadastro =============================================================
      //============================================= Leitura =============================================================
      //============================================= atualizar ===========================================
      //============================================= Delete ===============================================
       case "deletar":
            $delete = new Delete;
            $delete->ExeDelete('clientes', "WHERE id = :cod", "cod={$data->id}");
            $read = new Read;
            $read->ExeRead('clientes',"WHERE id ={$data->id}");
             echo json_encode($read->getResult()); 
       break;
       default:   
       break;
       }    
}else{
   
            $read = new Read;
            $read->ExeRead('clientes');
            echo json_encode($read->getResult()); 
}

Controller JavaScript com a função de Deletar:

angular.module('app.controllers', [])
  
.controller('menuCtrl', function ($scope, $ionicModal, $timeout, $ionicLoading, Conexao, ConfigUrl) {
$scope.lista = [];
$scope.carregar = function (){
	$ionicLoading.show({
    	template: 'Carregando...'
    });
	var valores = {
		parametros:'leitura'
	}	
	Conexao.getConexao(valores, ConfigUrl.BaseUrl).success(function(data){
		console.log(data);
			$scope.lista = data;
			$ionicLoading.hide();
		}).error(function(data){
		});
}
$scope.carregar();
$scope.dados = function(valor){
	$scope.nome2 = $scope.lista[valor].nome;
	$scope.telefone2 = $scope.lista[valor].telefone;
	$scope.email2 = $scope.lista[valor].email;
	$scope.origem2 = $scope.lista[valor].origem;
	$scope.ufOrigem2 = $scope.lista[valor].ufOrigem;
	$scope.destino2 = $scope.lista[valor].destino;
	$scope.ufDestino2 = $scope.lista[valor].ufDestino;
	$scope.roteiro2 = $scope.lista[valor].roteiro;
}
$scope.deletar = function(valor){
	result = window.confirm("Apagar Registro: "+$scope.nome2);
	if(result==1){
		var valores = {
		parametros:'deletar',
		id:valor
	}
	Conexao.getConexao(valores, ConfigUrl.BaseUrl).success(function(data){
		console.log(data);
		if(data == ""){
			alert('Registro Deletado com Sucesso');
			$scope.carregar();
		}else{
			alert('Nao foi possivel deletar esse registro no momento...');
		}
	}).error(function(){
	});
	}
}
})

Página onde busco o $Indice que alimenta a função Deletar do JS:

<ion-view cache-view="false" title="Fretes">
  <ion-content padding="true" class="has-header" ng-controller="refresh">
<ion-refresher
    pulling-text="Atualizando..."
    on-refresh="doRefresh()">
  </ion-refresher>
    <ion-list>
      <ion-item ng-repeat="frete in lista" ng-click="dados($index)" ui-sref="menu.frete()" class="listar-item item-lista item-icon-right">
      	{{frete.nome}}
      	<br>
      	<h4>Origem: {{frete.origem}} - {{frete.ufOrigem}}<br>Destino: {{frete.destino}} - {{frete.ufDestino}}</h4>
      	<i class="icon ion-arrow-swap"></i>
      	<ion-option-button class="button-assertive" ng-click="deletar(id2)">apagar Registro</ion-option-button>
      </ion-item>
    </ion-list>
  </ion-content>
<a ui-sref="menu.cadastraFrete()" class="add button ion-android-add"></a>
</ion-view>

O debugger do navegador retorna um erro de syntaxe do MySql, por isso penso que o meu problema esteja na API. Porem ja realizei diversos testes e não consegui encontrar o erro.