4
votes

I have PHP API codeblocks from a data extraction tool/website (http://import.io) in the form below. I want to have a search box that returns the result from not one, but multiple of these "connector" codeblocks (they are called connectors because they connect your search queries with the results piped through import.io, presumably).

I'm a noob at PHP, so I'm not sure how to go about this.

<?php

$userGuid = "kjnjkn-32d2-4b1c-a9c5-erferferferferf";
$apiKey = "APIKEY";

function query($connectorGuid, $input, $userGuid, $apiKey) {

  $url = "https://api.import.io/store/connector/" . $connectorGuid . "/_query?_user=" . urlencode($userGuid) . "&_apikey=" . urlencode($apiKey);

  $ch = curl_init($url);
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
  curl_setopt($ch, CURLOPT_POSTFIELDS,  json_encode(array("input" => $input)));
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_HEADER, 0);
  $result = curl_exec($ch);
  curl_close($ch);

  return json_decode($result);
}

// Query for tile WEBSEARCH
$result = query("98c9bac2-e623-4e31-8a3e-erferferferf", array(
  "search_query" => "term1",
), $userGuid, $apiKey);
var_dump($result);

// Query for tile WEBSEARCH
$result = query("98c9bac2-e623-4e31-8a3e-bferfreferfe", array(
  "search_query" => "term2",
), $userGuid, $apiKey);
var_dump($result);
1
depends on the API accepts multiple keywords or not at 1 API call. Didn't read the API though.Raptor
Thanks, but my question is really more on the search box side of things... could you give me an example of how to do this with even just one query/connector?Ragnar Danneskjöld

1 Answers

5
votes

I think the first thing you will want is some kind of HTML form that POSTs to your PHP script. I haven't tested this but something like it will do:

<form action="path/to/myscript.php" method="POST">
    <input type="text" name="search" placeholder="query">
    <input type="submit" value="Search">
</form>

This will issue an HTTP POST request to your script (call it myscript.php or change the HTML to match your filename) with the input term in the $_POST data array.

This means you can get the search term typed in using $_POST["search"], and use it as the input to the query:

$result = query("98c9bac2-e623-4e31-8a3e-erferferferf", array(
  "search_query" => $_POST["search"],
), $userGuid, $apiKey);
var_dump($result);

Notes:

  • There is zero validation on this - you will want to sanitize the form input if you put this in production anywhere
  • There is an interesting guide on the PHP site, which says similar things.
  • If you do anything more complex than this you will almost certainly be better to use a fully-fledged client library for a language other than PHP - there are more listed on this page.
  • Full disclosure, I work for import.io (hope this has helped!)