mm1975
mm1975

Reputation: 1655

jQuery UI Autocomplete for WordPress table

I´ve created a table in WordPress called 'diseases' and I want to access to it with a autocomplete input from a plugin. jQuery UI Autocomplete 1.11.4 is already included. There is no error but autocomplete do not work. I get access to the database and the response in the console equal the searched term.

TABLE

code      text
B15.0     Epidemischer Ikterus mit Coma hepaticum
...       ....

HTML

<input type="text" name="mybox" id="mybox" />

JS

jQuery(function() {
    jQuery('#mybox').autocomplete({

        // add the way to the file with database query

        source : '../wp-content/plugins/termbrowser/controllers/tags.php',
        minLength : 3,

        // what happens when user chooses autocomlete suggestion

        onSelect : function(suggestion) {
            alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
        }
    });
});

PHP

require_once($_SERVER['DOCUMENT_ROOT'] . $folder . '/wp-config.php');
require_once($_SERVER['DOCUMENT_ROOT'] . $folder . '/wp-load.php');

$query = isset($_GET['term']) ? $_GET['term'] : FALSE;

    global $wpdb;
    $table = $wpdb->prefix . 'diseases';

    $depts = $wpdb->get_results( "select text from $table where text like '" . $query . "%' order by length(text)"  );

    foreach($depts as $row) {
        $data['value'] = $row->text;
        $data['data'] = $row->code;
    }
    $response = array(
        'suggestions' => $data
    );

   echo json_encode ($response);

Upvotes: 2

Views: 593

Answers (1)

David Lee
David Lee

Reputation: 851

Try using 'term' instead of 'query' here you can see the example of the plugin. Notice that you need to return a JSON array with id label value:

"id"=>$value, "label"=>$key, "value" => strip_tags($key)

no inside 'suggestions'

Upvotes: 1

Related Questions