Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1.  
  2.  
  3. <?php
  4. // Prueba de slim para api rest
  5. require 'Slim/Slim.php';
  6. \Slim\Slim::registerAutoloader();
  7.  
  8. $app = new \Slim\Slim();
  9.  
  10.  
  11. /*
  12. *
  13. *   Como pueden ver aca, armamos las rutas
  14. +   el nombre de la funcion nos define la
  15. +   la operacion de http con el que esta relacionado
  16. *   $app->funcionHttp('/ruta','nombreFuncion');
  17. */
  18. $app->get('/pedidos', 'getPedidos');
  19. $app->post('/pedido','addPedido');
  20.  
  21. /*
  22. Por ejemplo para actualizar y borrar seria algo parecido a esto
  23.  
  24. $app->put('/pedido/:id','updatePedido');
  25. $app->delete('/pedido/:id',   'deletePedido');
  26.  
  27. */
  28.  
  29.  
  30. /* Levantamos la aplicacion */
  31. $app->run();
  32.  
  33. /*
  34.     Se encarga de la conexion a la BD
  35.     Nos devuelve un punterillo a la conexion
  36. */
  37. function getConnection() {
  38.     $dbhost="127.0.0.1";
  39.     $dbuser="root";
  40.     $dbpass="pepe";
  41.     $dbname="chespirito";
  42.     $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
  43.     $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  44.     return $dbh;
  45. }
  46.  
  47.  
  48. /*
  49.     Esta funcion seria la encargada de traer del BD
  50.     los pedidos y enviarlas al cliente en formato
  51.     json. Si, esteticamente tener el query ahi es
  52.     horrible, pero dejame respirar un poco negro
  53. */
  54. function getPedidos() {
  55.     //Traemos todos los pedidos de la bd ordenamos por cliente
  56.     $sql = "select * FROM pedido ORDER BY nombre";
  57.     try {
  58.         $db = getConnection();
  59.         $stmt = $db->query($sql);
  60.         $Pedido = $stmt->fetchAll(PDO::FETCH_OBJ);
  61.         $db = null;
  62.         //Transformamos a json e imprimimos
  63.         echo '{"Pedidos": ' . json_encode($Pedido) . '}';
  64.     } catch(PDOException $e) {
  65.         //Si paso algo malo, pues imprimos el error
  66.         echo '{"error":{"text":'. $e->getMessage() .'}}';
  67.     }
  68. }
  69.  
  70.  
  71. /*
  72.     Esta seria la encargada de anadir un pedido a la BD
  73. */
  74.  
  75. function addPedido() {
  76.     //pedimos a Slim que nos mande el request
  77.     $request = \Slim\Slim::getInstance()->request();
  78.     //como el request esta en json lo decodificamos
  79.     $Pedido = json_decode($request->getBody());
  80.  
  81.     //armamos un query sencillo para insertarlo en la BD
  82.     $sql = "INSERT INTO pedido (nombre, telefono, hora, direccion, cantidad) VALUES (:nombre, :telefono, :hora, :direccion, :cantidad)";
  83.     try {
  84.         $db = getConnection();
  85.         $stmt = $db->prepare($sql);
  86.         //Insertamos los valores en la query
  87.         $stmt->bindParam("nombre", $Pedido->nombre);
  88.         $stmt->bindParam("telefono", $Pedido->telefono);//$Pedido->descripcion);
  89.         $stmt->bindParam("hora", $Pedido->hora);
  90.         $stmt->bindParam("direccion", $Pedido->direccion);
  91.         $stmt->bindParam("cantidad", $Pedido->cantidad);
  92.  
  93.         $stmt->execute();
  94.         $Pedido->id = $db->lastInsertId();
  95.         $db = null;
  96.         //Si todo salio bien retornamos el pedido recien guardado
  97.         echo json_encode($Pedido);
  98.     } catch(PDOException $e) {
  99.         //Si todo se fue a la mierda, pues retornamos porque se fue todo a la mierda
  100.         echo '{"error":{"text":'. $e->getMessage() .'}}';
  101.     }
  102. }