Google Books API Function triggers unwanted topic submission
-
If this challenge I am having is beyond the scope of help in the bbpress forums, then I understand. The below code is a function that allows the user to submit a search request for a book title via the google books api. When the user clicks “search”, the function works great and returns results in a Jquery window. The problem I am having; it triggers a submit of the bbpress topic, and I get the errors “cannot submit a topic with the subject line blank.”
If there is a simple fix I am not seeing, can someone please help me?
function book_search_google () { //set API version for Google Book Search API $v = isset($_POST['v']) ? $_POST['v'] : '1'; //set user API key for Google Book Search API $key = isset($_POST['key']) ? $_POST['key'] : 'key goes here'; //set user IP for Google Book Search API //$ip = isset($_POST['ip']) ? $_POST['ip'] : $_SERVER['REMOTE_ADDR']; //set default value for query to Google Book Search API 0307387941 $query = isset($_POST['q']) ? $_POST['q'] : '0307387941'; //set default value for search type to Google Book Search API $type = isset($_POST['type']) ? $_POST['type'] : 'all'; //check and assign page of search results - are we on the first page? $start = isset($_POST['start']) ? $_POST['start'] : 1; //set default value for number of results $limit = isset($_POST['limit']) ? $_POST['limit'] : '10'; switch ($type) { case 'all': $params = 'q='.urlencode($query).'&startIndex='.$start.'&maxResults='.$limit; break; case 'isbn': $params = 'q=isbn:'.urlencode($query).''; break; case 'lccn': $params ='q=lccn:'.urlencode($query).''; break; case 'oclc': $params = 'q=oclc:'.urlencode($query).''; break; default: echo '<p>You must specify a search type such as "all" or "book". Check the url to make sure "type=" has a value.</p>'; exit; } //set URL for the Google Book Search API $url = 'https://www.googleapis.com/books/v'.$v.'/volumes?key='.$key.'&'.$params.''; if(isset($_POST['q'])): //build request and send to Google Ajax Search API $request = file_get_contents($url); //decode json object(s) out of response from Google Ajax Search API $data = json_decode($request,true); $totalItems = $data['totalItems']; pagination mainHeading if ($totalItems > 0) { ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>jQuery UI Dialog - Default functionality</title> <link rel="stylesheet" href="//whosgotbooks.com/jquery/jquery-ui-1.10.4.custom.css"> <script src="//whosgotbooks.com/jquery/jquery-1.10.2.js"></script> <script src="//whosgotbooks.com/jquery/jquery-ui-1.10.4.custom.js"></script> </head> <body> <div id="dialog" title="Google Books Search Results" style="display:none;"> <script> $(function() { $( "#dialog" ).dialog({ height: 550, width: 450}); $( "#returnvalues" ).click(function(){ $( "#dialog" ).dialog( "close" ); }); }); </script> <strong><p style="font-size: 16px; text-align: center";>Top 10 Results for "<?php echo @$_POST['q']; ?>"</p></strong> <strong><p style="font-size: 14px; text-align: center";>choose a book to select as your topic</p></strong> <table style="width:400px"> <col width="325"> <col width="75"> <?php foreach ($data['items'] as $item) { ?> <tr> <td> <strong><u><div style="font-size: 14px";><?php printf($item['volumeInfo']['title'])?></u></div></strong> <strong>Author: </strong><?php printf( $item['volumeInfo']['authors'][0]); ?><br /> <strong>Published: </strong><?php printf( $item['volumeInfo']['publishedDate']); ?><br /> <strong>Page(s): </strong><?php printf( $item['volumeInfo']['pageCount']); ?><br /> <strong>Publisher: </strong><?php printf( $item['volumeInfo']['publisher']); ?><br /> <strong>Category: </strong><?php printf( strtolower($item['volumeInfo']['printType']).', '.strtolower($item['volumeInfo']['categories'][0])); ?> <strong>ISBN: </strong><?php printf( $item['volumeInfo']['industryIdentifiers'][0]['identifier']); ?></td> <td><p><input type="submit" name="submit" value="Select" id="returnvalues"/></p> <img src="<?php printf( rawurldecode($item['volumeInfo']['imageLinks']['smallThumbnail'])); ?>" /> </td> <tr><td style="width:420px"><p><strong>Description: </strong><?php printf( $item['volumeInfo']['description']); ?><br /></p></td> </tr> </tr> <?php } } else { ?> <p><strong>Sorry, there were no results</strong></p> <?php } /* for testing purposes show actual request to API - REMOVE when finished $apiRequest = $url; echo '<p>API request: '.$apiRequest.'</p>'; */ ?> </table> </div> </body> </html> <?php else: //show form and allow the user to check for Google Book search results ?> <p><form id="searchForm" name="searchForm" method="post"> <fieldset id="searchBox"> <label>Search for a Book:</label> <input class="text" id="q" name="q" type="text" value="Powered by Google" onfocus="this.value=''; this.onfocus=null;" /> <select id="type" name="type" size="1"> <option selected value="all">Book Title</option> <option value="isbn">Books by ISBN</option> <option value="lccn">Books by LCCN #</option> <option value="oclc">Books by OCLC #</option> </select> <input class="submit" id="submit" name="submit" type="submit" value="Search" /> </fieldset> </form></p> <?php //end submit isset if statement on line 73 endif; }
Viewing 2 replies - 1 through 2 (of 2 total)
Viewing 2 replies - 1 through 2 (of 2 total)
- The topic ‘Google Books API Function triggers unwanted topic submission’ is closed to new replies.