HiDayurie Dave HiDayurie Dave - 6 months ago 43
SQL Question

jQuery PHP Mysql jSon show the data on loop

I have jQuery Ajax Autosuggest using jSon.

Now I have problem when showing the data. The data get from mysql data using PHP (looping data) but when get the result, it always show 1 row.

Here is my js code:

$.ajax(
{
type: "GET",
data: post_string,
dataType: "json",
cache: false,
url: 'search.php',
success: function(data)
{
full_name = data[0].full_name;
username = data[0].username;

$("#divResult").show();
$(".display_box").html(username);
}
});


and the search.php

$getSearchWord = mysqli_real_escape_string($con, $_GET['searchword']);
$json = array();

$searchQuery = mysqli_query($con, "SELECT * FROM tb_users WHERE username LIKE '%$getSearchWord%' OR full_name LIKE '%$getSearchWord%' LIMIT 5");
while($searchFetchData = mysqli_fetch_array($searchQuery))
{
$json[] = array(
'username' => $searchFetchData['username'],
'full_name' => $searchFetchData['full_name']
);
}

echo json_encode($json);


and html div to display

<div id="divResult">
<div class="display_box"></div>
</div>

Answer

Json

To clear out the field, call this before the Ajax request:

$("#divResul").hide(200);
$(".display_box").html('');

You can try to run all returned array before putting it in your .display_box. Get the length of array returned from search.php then run it in a loop.

success: function(data){

    $("#divResult").show(200);

    var n = data.length;

    for(var x = 0; x < n; x++){

        $(".display_box").append(data[x].full_name);
        $(".display_box").append(data[x].username);

    }

}

No Json

OR without using json. From your search.php:

$table = '<table>';

$getSearchWord = mysqli_real_escape_string($con, $_GET['searchword']);
$json = array();

$searchQuery = mysqli_query($con, "SELECT * FROM tb_users WHERE username LIKE '%$getSearchWord%' OR full_name LIKE '%$getSearchWord%' LIMIT 5");
while($searchFetchData = mysqli_fetch_array($searchQuery))

    $table .= '<tr>
                   <td>'.$searchFetchData['username'].'</td>
                   <td>'.$searchFetchData['full_name'].'</td>
               </tr>';
}

$table .= '</table>';

echo $table; /* RETURN THIS TO YOUR AJAX REQUEST */

Then on your Ajax request:

$.ajax(
{
    type: "GET",
    data: post_string,
    url: 'search.php',
    success: function(data)
    {
        $("#divResult").show(200);
        $(".display_box").html(data);
    }
});