PHP-JQuery-Ajax:如何使用 mysql 查询结果(json 编码数组)的所有结果填充 table
PHP-JQuery-Ajax: How to Populate table with all results from mysql query result (json encoded array)
我一直在尝试弄清楚如何将搜索结果加载到 table 但无论我做什么,我只得到一个结果而不是 2(样本大小) 我在数据库 table 中的行。
这是MySQL代码:
if (isset($_POST['search_value'])) {
$search_value = mysqli_real_escape_string($conn, $_POST['search_value']);
$sql = "SELECT
record_id,
personal_id,
name,
status,
entry_date
FROM sample_db
WHERE EmpID = '".$search_value."'";
$res = mysqli_query($conn, $sql) or die("Error: ".mysqli_error($conn));
$data = array();
while($row = mysqli_fetch_array($res)){
$data = array(
'tb_record_id' => $row['record_id'],
'tb_personal_id' => $row['personal_id'],
'tb_name' => $row['name'],
'tb_status' => $row['status'],
'tb_entry_date' => $row['entry_date'],
);
}
echo json_encode($data);
}
我读过几个示例,其中数组构建为 $data[] = array(data goes here) 而不是 $data = array(data goes here) 但每当我尝试 $data[] 时,它不会return table 但控制台日志确实显示了数组中的所有结果。
另外,使用 dataType: 'json' 似乎也不起作用。
到目前为止,我尝试过的唯一方法是为每个 <td>
.
提供一个 ID
ajax代码
$.ajax({
type : 'POST',
url : 'search_fetch.php',
data : data,
cache: false,
success : function(response)
{
result = jQuery.parseJSON(response);
$("#list_p_id").append(result.tb_personal_id);
$("#list_name").append(result.tb_name);
$("#list_status").append(result.tb_status);
$("#list_date").append(result.tb_entry_date);
}
});
如何使用所有可用结果填充 table?
此外,如果有帮助,我愿意不使用数组。我只是不知道如何将查询结果发送到 ajax 响应的另一种方式。
在您的 while 循环中,您需要以每次都不会覆盖整个数组的方式将每一行结果推送到您的数组中。
例如:
while($row = mysqli_fetch_array($res))
{
array_push($data, array(
'tb_record_id' => $row['record_id'],
'tb_personal_id' => $row['personal_id'],
'tb_name' => $row['name'],
'tb_status' => $row['status'],
'tb_entry_date' => $row['entry_date'],
)
);
}
执行此操作时,请记住 $data 现在是一个数组数组,您需要相应地访问 ajax.
中的项目
回答您问题的其他信息:
我没想到您还需要有关如何在 table...
中显示结果数据的信息
您将需要使用某种动态代码来生成您的 HTML,以便为每个 table 单元分配一个唯一的 ID。
完成后,您需要在 ajax 代码中使用循环,以便将结果数据分配给每个 table 单元格并显示它。
目前,您的循环只会将数据一遍又一遍地覆盖到现有元素中,这意味着您只能获得一行信息。
我一直在尝试弄清楚如何将搜索结果加载到 table 但无论我做什么,我只得到一个结果而不是 2(样本大小) 我在数据库 table 中的行。
这是MySQL代码:
if (isset($_POST['search_value'])) {
$search_value = mysqli_real_escape_string($conn, $_POST['search_value']);
$sql = "SELECT
record_id,
personal_id,
name,
status,
entry_date
FROM sample_db
WHERE EmpID = '".$search_value."'";
$res = mysqli_query($conn, $sql) or die("Error: ".mysqli_error($conn));
$data = array();
while($row = mysqli_fetch_array($res)){
$data = array(
'tb_record_id' => $row['record_id'],
'tb_personal_id' => $row['personal_id'],
'tb_name' => $row['name'],
'tb_status' => $row['status'],
'tb_entry_date' => $row['entry_date'],
);
}
echo json_encode($data);
}
我读过几个示例,其中数组构建为 $data[] = array(data goes here) 而不是 $data = array(data goes here) 但每当我尝试 $data[] 时,它不会return table 但控制台日志确实显示了数组中的所有结果。
另外,使用 dataType: 'json' 似乎也不起作用。
到目前为止,我尝试过的唯一方法是为每个 <td>
.
ajax代码
$.ajax({
type : 'POST',
url : 'search_fetch.php',
data : data,
cache: false,
success : function(response)
{
result = jQuery.parseJSON(response);
$("#list_p_id").append(result.tb_personal_id);
$("#list_name").append(result.tb_name);
$("#list_status").append(result.tb_status);
$("#list_date").append(result.tb_entry_date);
}
});
如何使用所有可用结果填充 table?
此外,如果有帮助,我愿意不使用数组。我只是不知道如何将查询结果发送到 ajax 响应的另一种方式。
在您的 while 循环中,您需要以每次都不会覆盖整个数组的方式将每一行结果推送到您的数组中。
例如:
while($row = mysqli_fetch_array($res))
{
array_push($data, array(
'tb_record_id' => $row['record_id'],
'tb_personal_id' => $row['personal_id'],
'tb_name' => $row['name'],
'tb_status' => $row['status'],
'tb_entry_date' => $row['entry_date'],
)
);
}
执行此操作时,请记住 $data 现在是一个数组数组,您需要相应地访问 ajax.
中的项目回答您问题的其他信息:
我没想到您还需要有关如何在 table...
中显示结果数据的信息您将需要使用某种动态代码来生成您的 HTML,以便为每个 table 单元分配一个唯一的 ID。
完成后,您需要在 ajax 代码中使用循环,以便将结果数据分配给每个 table 单元格并显示它。
目前,您的循环只会将数据一遍又一遍地覆盖到现有元素中,这意味着您只能获得一行信息。