live search in mysql with ajax

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
sterica
Mesaje:285

live search in mysql with ajax

Salutare,

M-am folosit de acest tutorial pentru a cauta live intr-un tabel din mysql cu ajutorul unui input.
webslesson.info/2017/04/dynamic-autocomplete-search-using-bootstrap-typeahead-with-php-ajax.html

O sa sintetizez codul:

Cod: Selectaţi tot

<input type="text" name="country" id="country" class="form-control input-lg" autocomplete="off" placeholder="Type Country Name" />

Cod: Selectaţi tot

<script>
$(document).ready(function(){
 $('#country').typeahead({
  source: function(query, result)
  {
   $.ajax({
    url:"fetch.php",
    method:"POST",
    data:{query:query},
    dataType:"json",
    success:function(data)
    {
     result($.map(data, function(item){
      return item;
     }));
    }
   })
  }
 });
 
});
</script>

Cod: Selectaţi tot

<?php
//fetch.php
$connect = mysqli_connect("localhost", "root", "", "testing");
$request = mysqli_real_escape_string($connect, $_POST["query"]);
$query = "
 SELECT * FROM countries WHERE name LIKE '%".$request."%'
";

$result = mysqli_query($connect, $query);

$data = array();

if(mysqli_num_rows($result) > 0)
{
 while($row = mysqli_fetch_assoc($result))
 {
  $data[] = $row["name"];
 }
 echo json_encode($data);
}

?>
Cum pot aduce id-ul tarii alese in inputul id="country" si sa il introduc intr-un alt input type="hide" pentru a il insera in mysql.
Ca sa nu mai creez un alt imput, ideal ar fi sa aduc id-ul tarii alese direct in value inputului id="country"

Multumesc!

MarPlo Mesaje:4343
Cred ca te poate ajuta cine a lucrat cu plugin-ul jquery typeahead si bootstrap.
Personal, ma pricep mai bine la script-uri facute direct cu javascript, iar jquery mai putin.

sterica Mesaje:285
Dupa multe batai de cap am rezolvat problema.

Am adaugat un input de tip hidden cu id="id_country", iar in //fetch.php am schimbat din:

Cod: Selectaţi tot

$data[] = $row["name"];
in

Cod: Selectaţi tot

$data[] = $row;
Iar in script-ul js am adaugat in result:

Cod: Selectaţi tot

result($.map(data, function(item){
  var id = data["Id"];
  $('#id_country').val(id);
  return item;
});
Marplo multumesc pentru interesul acordat.