Edit: I'm getting the error to save: Error: [$resource:badcfg] save
And this error to get: Error: [$resource:badcfg] get
I suppose it happens 'cause get() expects an object, and my reponse for both is an array: "[{"id":"1","name":"Computador"},{"id":"2","name":"Impressora"}]"
The code was updated and I added the index.html
I'm really confused about how to treat the data on get, save and delete. Must I do it on php?
I have some data on MySQL and want to manage it with AngularJS, but my functions to save, delete and get are not working well, the only one that worked was query().
app.js
var app = angular.module('app',['ngResource']);
app.controller("lojaCtrl", function($scope, $resource){
var Produto = $resource("/loja/produtos/", {}, {
"save:": {method: 'POST', isArray:true}
});
$scope.produto = {};
$scope.produtos = [];
$scope.getProdutoById = function(){
Produto.get({id:$scope.codigo}, function(data) { //função get
$scope.produto = data;
});
}
$scope.getProdutos = function(){
Produto.query(function(data) { //função query
$scope.produtos = data;
});
}
$scope.selectProduct = function(produto)
{
$scope.produto = produto;
}
$scope.saveProduto = function(){
//$scope.products = Produto.query();
new Produto($scope.inserir).$save(function(data) {
$scope.products.push(data);
});
}
$scope.deleteProduto = function(){
Produto.delete({Id:$scope.codigo}, function(data) {
});
}
});
produtos/Index.php
header('Content-Type: application/json');
$banco = "produtos";
$usuario = "root";
$senha = "";
$hostname = "localhost";
$conn = mysql_connect($hostname,$usuario,$senha); mysql_select_db($banco) or die( "Não foi possível conectar ao banco MySQL");
$sql = "SELECT * FROM t_produtos";
$rs = mysql_query($sql);
class Produto
{
public function __construct($id, $name)
{
$this->id = $id;
$this->name = $name;
}
public $id;
public $name;
}
while($row = mysql_fetch_array($rs)){
$p = new Produto($row['id'],$row['nome']);
$products[] = (object)array('id' =>$p->id, 'name' =>$p->name);
}
if (isset($_GET['Id']))
{
$p = $products[($_GET['id']-1)];
echo json_encode($p);
exit;
}
if (!isset($_GET['Id']))
{
echo json_encode($products);
exit;
}
/*$data = file_get_contents('http://localhost/loja/');
$objData = json_decode($data);
$sql = "INSERT INTO t_produtos(nome) VALUES('$objData')";*/
Index.html
<body ng-controller="lojaCtrl">
<input type="text" ng-model="codigo" name="codigo"/>
<input type="text" ng-model="produto.id" name="id"/>
<input type="text" ng-model="produto.name" name="name"/>
<button ng-click="getProdutoById()">Get Produto</button>
<hr/>
<ul>
<li ng-repeat="produto in produtos" ng-click="selectProduct(produto)">Id: {{produto.id}} - Nome: {{produto.name}}</li>
</ul>
<button ng-click="getProdutos()">Get Produtos</button>
<hr/>
<input type="text" ng-model="inserir" name="inserir"/>
<button ng-click="saveProduto()">Save Produto</button>
<hr/>
<button ng-click="deleteProduto()">Delete Produto</button>
</body>