diff options
author | Christophe Coenraets <ccoenraets@gmail.com> | 2011-12-01 12:00:42 -0500 |
---|---|---|
committer | Christophe Coenraets <ccoenraets@gmail.com> | 2011-12-01 12:00:42 -0500 |
commit | 6fc276d593468dcdc8eb04c707dd14da22b59650 (patch) | |
tree | 69274f335e0f398f96656e34020b1771e399bb6d /api/index.php | |
download | wine-cellar-php-master.zip wine-cellar-php-master.tar.gz wine-cellar-php-master.tar.bz2 |
Initial commitHEADorigin/masterorigin/HEADmaster
Diffstat (limited to 'api/index.php')
-rwxr-xr-x | api/index.php | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/api/index.php b/api/index.php new file mode 100755 index 0000000..3b4d2f9 --- /dev/null +++ b/api/index.php @@ -0,0 +1,130 @@ +<?php + +require 'Slim/Slim.php'; + +$app = new Slim(); + +$app->get('/wines', 'getWines'); +$app->get('/wines/:id', 'getWine'); +$app->get('/wines/search/:query', 'findByName'); +$app->post('/wines', 'addWine'); +$app->put('/wines/:id', 'updateWine'); +$app->delete('/wines/:id', 'deleteWine'); + +$app->run(); + +function getWines() { + $sql = "select * FROM wine ORDER BY name"; + try { + $db = getConnection(); + $stmt = $db->query($sql); + $wines = $stmt->fetchAll(PDO::FETCH_OBJ); + $db = null; + echo '{"wine": ' . json_encode($wines) . '}'; + } catch(PDOException $e) { + echo '{"error":{"text":'. $e->getMessage() .'}}'; + } +} + +function getWine($id) { + $sql = "SELECT * FROM wine WHERE id=:id"; + try { + $db = getConnection(); + $stmt = $db->prepare($sql); + $stmt->bindParam("id", $id); + $stmt->execute(); + $wine = $stmt->fetchObject(); + $db = null; + echo json_encode($wine); + } catch(PDOException $e) { + echo '{"error":{"text":'. $e->getMessage() .'}}'; + } +} + +function addWine() { + error_log('addWine\n', 3, '/var/tmp/php.log'); + $request = Slim::getInstance()->request(); + $wine = json_decode($request->getBody()); + $sql = "INSERT INTO wine (name, grapes, country, region, year, description) VALUES (:name, :grapes, :country, :region, :year, :description)"; + try { + $db = getConnection(); + $stmt = $db->prepare($sql); + $stmt->bindParam("name", $wine->name); + $stmt->bindParam("grapes", $wine->grapes); + $stmt->bindParam("country", $wine->country); + $stmt->bindParam("region", $wine->region); + $stmt->bindParam("year", $wine->year); + $stmt->bindParam("description", $wine->description); + $stmt->execute(); + $wine->id = $db->lastInsertId(); + $db = null; + echo json_encode($wine); + } catch(PDOException $e) { + error_log($e->getMessage(), 3, '/var/tmp/php.log'); + echo '{"error":{"text":'. $e->getMessage() .'}}'; + } +} + +function updateWine($id) { + $request = Slim::getInstance()->request(); + $body = $request->getBody(); + $wine = json_decode($body); + $sql = "UPDATE wine SET name=:name, grapes=:grapes, country=:country, region=:region, year=:year, description=:description WHERE id=:id"; + try { + $db = getConnection(); + $stmt = $db->prepare($sql); + $stmt->bindParam("name", $wine->name); + $stmt->bindParam("grapes", $wine->grapes); + $stmt->bindParam("country", $wine->country); + $stmt->bindParam("region", $wine->region); + $stmt->bindParam("year", $wine->year); + $stmt->bindParam("description", $wine->description); + $stmt->bindParam("id", $id); + $stmt->execute(); + $db = null; + echo json_encode($wine); + } catch(PDOException $e) { + echo '{"error":{"text":'. $e->getMessage() .'}}'; + } +} + +function deleteWine($id) { + $sql = "DELETE FROM wine WHERE id=:id"; + try { + $db = getConnection(); + $stmt = $db->prepare($sql); + $stmt->bindParam("id", $id); + $stmt->execute(); + $db = null; + } catch(PDOException $e) { + echo '{"error":{"text":'. $e->getMessage() .'}}'; + } +} + +function findByName($query) { + $sql = "SELECT * FROM wine WHERE UPPER(name) LIKE :query ORDER BY name"; + try { + $db = getConnection(); + $stmt = $db->prepare($sql); + $query = "%".$query."%"; + $stmt->bindParam("query", $query); + $stmt->execute(); + $wines = $stmt->fetchAll(PDO::FETCH_OBJ); + $db = null; + echo '{"wine": ' . json_encode($wines) . '}'; + } catch(PDOException $e) { + echo '{"error":{"text":'. $e->getMessage() .'}}'; + } +} + +function getConnection() { + $dbhost="127.0.0.1"; + $dbuser="root"; + $dbpass=""; + $dbname="cellar"; + $dbh = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); + $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + return $dbh; +} + +?>
\ No newline at end of file |