<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <header> <title>CouchShell</title> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <?php function checked($source,$value) { if ($source === $value) echo 'checked="checked"'; } $uri=$_POST['uri']; if ($_POST['method'] === 'GET' || $_POST['method'] === 'POST' || $_POST['method'] === 'PUT' || $_POST['method'] === 'DELETE' ) $method=$_POST['method']; $content_type='Content-type: '.$_POST['content']; $post=$_POST['post']; ?> </header> <body> <h1>Input</h1> <p> <form method="POST"> URI:<br/> <textarea rows="4" cols="60" name="uri"><?php echo $uri;?></textarea> <br/> Method: <input type="radio" name="method" value="GET" <?php checked($method,'GET')?>/> GET <input type="radio" name="method" value="POST" <?php checked($method,'POST')?>/> POST <input type="radio" name="method" value="PUT" <?php checked($method,'PUT')?>/> PUT <input type="radio" name="method" value="DELETE" <?php checked($method,'DELETE')?>/> DELETE <br/> Content type: <input type="text" name="content" size="40" value="application/json"/> <br/> POST/PUT:<br/> <textarea rows="4" cols="60" name="post"><?php echo stripslashes($post);?></textarea> <br/> <input type="submit"/> <input type="reset"/> </form> </p> <h1>Output</h1> <h2>JSON</h2> <p> <?php if (isset($uri)){ $c=curl_init($uri); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c,CURLOPT_CUSTOMREQUEST,$method); if ($method === 'POST' || $method === 'PUT') { curl_setopt($c, CURLOPT_POSTFIELDS, stripslashes($post)); curl_setopt($c, CURLOPT_HTTPHEADER,array($content_type)); } $data=curl_exec($c); curl_close($c); echo $data; ?> <h2>Decoded JSON</h2> <pre> <?php print_r(json_decode($data,true)); ?> </pre> <?php } ?> </p> </body> </html>
_all_docs
np.: http://awing.kis.agh.edu.pl:5984/ogloszenia/_all_docsNapisz klasę implementującą komunikację z bazą danych CouchDB. Do przesyłania danych wykorzystaj HTTP np.:
$h=fopen("http://awing.ia.agh.edu.pl:5984/_all_dbs", "r"); if ($h) { while (($bufor=fgets($h))!=false) { echo $bufor; } fclose($h); }
Informacje na temat używania innych metod HTTP (POST, PUT, DELETE) można znaleźć: http://www.php.net/manual/en/context.http.php
Zamiast podejścia fopen
można zastosować bibliotekę cURL np.:
<?php $c=curl_init('http://awing.kis.agh.edu.pl:5984'); /* zwroc dane jako wartosc */ curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $dane=curl_exec($c); curl_close($c); echo $dane; $c=curl_init('http://awing.kis.agh.edu.pl:5984/moja1'); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_PUT, 1); $dane=curl_exec($c); curl_close($c); echo $dane; $dok='{"tresc":"zawartosc dokumentu", "autor":"Wojnicki"}'; $c=curl_init('http://awing.kis.agh.edu.pl:5984/moja1'); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_POST, 1); curl_setopt($c, CURLOPT_HTTPHEADER,array('Content-type: application/json')); curl_setopt($c, CURLOPT_POSTFIELDS, $dok); $dane=curl_exec($c); curl_close($c); echo $dane; $c=curl_init('http://awing.kis.agh.edu.pl:5984/moja1/_all_docs'); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); $dane=curl_exec($c); curl_close($c); /* przykład dekodowania JSON */ $tablica=json_decode($dane,true); echo $tablica['total_rows']; ?>
Klasa powinna implementować metody umożliwiające:
Uwaga: dane z postaci JSON zwracanej przez CouchDB powiny być konwertowane do tablic asocjacyjnych PHP. Podpowiedź: sprawdź w dokumentacji PHP jakie są dostępne biblioteki do przetwarzania JSON: http://www.php.net/manual/en/ref.json.php
Sprawdź jakie sterowniki baz danych są dostępne w ramach instalacji PDO.
Użyj PDO do wykonania poniższych operacji.