/
index.php
108 lines (88 loc) · 4.27 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?php
// Activamos las sesiones para el funcionamiento de flash['']
@session_start();
require 'Slim/Slim.php';
// El framework Slim tiene definido un namespace llamado Slim
// Por eso aparece \Slim\ antes del nombre de la clase.
\Slim\Slim::registerAutoloader();
// Creamos la aplicación.
$app = new \Slim\Slim();
// Indicamos el tipo de contenido y condificación que devolvemos desde el framework Slim.
#$app->contentType('text/html; charset=utf-8');
// Definimos conexion de la base de datos.
// Lo haremos utilizando PDO con el driver mysql.
define('BD_SERVIDOR', 'localhost');
define('BD_NOMBRE', 'soporte_usuarios');
define('BD_USUARIO', 'root');
define('BD_PASSWORD', '');
// Hacemos la conexión a la base de datos con PDO.
// Para activar las collations en UTF8 podemos hacerlo al crear la conexión por PDO
// o bien una vez hecha la conexión con
// $db->exec("set names utf8");
$db = new PDO('mysql:host=' . BD_SERVIDOR . ';dbname=' . BD_NOMBRE . ';charset=utf8', BD_USUARIO, BD_PASSWORD);
//$db->exec("set names utf8");
$app->get('/', function() {
echo "Pagina de gestión API REST de mi aplicación.";
});
// Cuando accedamos por get a la ruta /usuarios ejecutará lo siguiente:
$app->get('/usuarios', function() use($db) {
// Si necesitamos acceder a alguna variable global en el framework
// Tenemos que pasarla con use() en la cabecera de la función. Ejemplo: use($db)
// Va a devolver un objeto JSON con los datos de usuarios.
// Preparamos la consulta a la tabla.
$consulta = $db->prepare("select * from usuarios");
$consulta->execute();
// Almacenamos los resultados en un array asociativo.
$resultados = $consulta->fetchAll(PDO::FETCH_ASSOC);
// Devolvemos ese array asociativo como un string JSON.
echo json_encode($resultados);
});
// Accedemos por get a /usuarios/ pasando un id de usuario.
// Por ejemplo /usuarios/veiga
// Ruta /usuarios/id
// Los parámetros en la url se definen con :parametro
// El valor del parámetro :idusuario se pasará a la función de callback como argumento
$app->get('/usuarios/:idusuario', function($usuarioID) use($db) {
// Va a devolver un objeto JSON con los datos de usuarios.
// Preparamos la consulta a la tabla.
// En PDO los parámetros para las consultas se pasan con :nombreparametro (casualmente
// coincide con el método usado por Slim).
// No confundir con el parámetro :idusuario que si queremos usarlo tendríamos
// que hacerlo con la variable $usuarioID
$consulta = $db->prepare("select * from usuarios where id=:param1");
// En el execute es dónde asociamos el :param1 con el valor que le toque.
$consulta->execute(array(':param1' => $usuarioID));
// Almacenamos los resultados en un array asociativo.
$resultados = $consulta->fetchAll(PDO::FETCH_ASSOC);
// Devolvemos ese array asociativo como un string JSON.
echo json_encode($resultados);
});
// Alta de usuarios en la API REST
$app->post('/usuarios',function() use($db,$app) {
// Para acceder a los datos recibidos del formulario
/*
echo json_encode("$p->id - $p->nombre - $p->apellidos - $p->telefono");
*/
// Los datos serán accesibles de esta forma:
$p = json_decode($app->request->getBody());
//echo json_encode("$p->latitud - $p->nombre - $p->apellidos - $p->telefono");
// Preparamos la consulta de insert.
$consulta=$db->prepare("insert into usuarios(id,nombre,apellidos,telefono, latitud, longitud)
values (:id,:nombre,:apellidos,:telefono, :latitud, :longitud)");
$estado=$consulta->execute(
array(
':id'=> $p->id,
':nombre'=> $p->nombre,
':apellidos'=> $p->apellidos,
':telefono'=> $p->telefono,
':latitud'=> $p->latitud,
':longitud'=> $p->longitud,
)
);
if ($estado)
echo json_encode(array('estado'=>true,'mensaje'=>'Datos insertados correctamente. '));
else
echo json_encode(array('estado'=>false,'mensaje'=>"Error al insertar datos en la tabla."));
});
$app->run();
?>