2
<script>

$(function() {

    var availableTags = [

        "ActionScript",

        "AppleScript",

        "Asp",

        "BASIC",

        "C",

        "C++",

        "Clojure",

        "COBOL",

        "ColdFusion",

        "Erlang",

        "Fortran",

        "Groovy"
    ];

    $( "#fname" ).autocomplete({

        source: availableTags

    });

});

The above function helps me to achieve auto complete using static values, what I want is to get these values from the database. I wrote a php function that connect to the db but I am not sure how to pass the return value of that function to the javascript page below is snippet of that.

function getAllDrugs(){
$med = "";
$select = mysql_query("SELECT dname FROM phar_store_config where quantity > 1");

while($row =  mysql_fetch_array($select)){

$med = $med.$row['dname'];

}
return $med;
}

Now i want the return value of the above php function to be passed to my js function.

Any help will be appreciated.

4 Answers 4

1

You may use the function json_encode() and modify your code like this:

function getAllDrugs(){
  $med = array();
  $select = mysql_query("SELECT dname FROM phar_store_config where quantity > 1");

  while($row =  mysql_fetch_array($select)){

    $med[] = $row['dname'];
  }
  return $med;
}

(this will turn the result into an array of names instead of a string). You can then write, in the tag:

$(function() {

    $( "#fname" ).autocomplete({

        source: <?php echo json_encode(getAllDrugs()); ?>

    });

});
1

Here is an exemple of a autocomplete working with JSON :

$( "#fname" ).autocomplete({
    source: "autoAcc.php",
    dataType:'json',
    minLength: 0,
    delay:0,
    select: function( event, ui ) {
        $( "#fname" ).val( ui.item.classe );
        return false;
    }

}).data( "autocomplete" )._renderItem = function( ul, item ) {
    if(!item.classe) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append('<a style="color:red;font-weight:bold;">No result !</a>' )
            .appendTo( ul );
    } else {
    return $( "<li></li>" )
        .data( "item.autocomplete", item )
        .append(    '<a>' + item.classe + '</a>' )
        .appendTo( ul );
    }
};

$( "#fname" ).click(function() {
    $( "#fname" ).autocomplete("search","");
});

Assuming classe is the column i want to show out in the "listbox".

And here is my PHP code to generate JSON (autoAcc.php) :

$requete = 'SELECT * FROM tbl_administrators';
$result = mysql_query($requete);
$rows = array();
while($r = mysql_fetch_assoc($result)) {
    $rows[] = $r;
}
echo json_encode($rows);

I hope this will help you, if you want any further information about this code just ask.

0

Assuming you're using jQuery.

If you store the values as a JSON array, you can do $.parseJSON or $.getJSON then parse the values to your JS function.

0
$(function() {
    var availableTags = [<?="'".implode("','",getAllDrugs())."'"?>];

    $( "#fname" ).autocomplete({
        source: availableTags
    });
});

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.