gpt4 book ai didi

php - Ajax MYSQL 搜索和排序结果

转载 作者:行者123 更新时间:2023-11-29 18:29:58 26 4
gpt4 key购买 nike

试图找出如何添加使用 Ajax 功能获取的 mysql 结果的排序选项。按 mysql 列排序或其他。下面是我希望实现排序选项的一些“th”部分。

HTML 页面

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Tool details</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
<input type="text" name="search_text" id="search_text" placeholder="Search for tool details" class="form-control" />
<div id="result"></div>

<script>
$(document).ready(function(){

load_data();

function load_data(query)
{
$.ajax({
url:"fetch.php",
method:"POST",
data:{query:query},
success:function(data) {
$('#result').html(data);
}
});
}

$('#search_text').keyup(function(){
var search = $(this).val();
if(search != '') {
load_data(search);
} else {
load_data();
}
});
});
</script>
</body>
</html>

请注意,目前仅对 ID 列添加排序,以避免此处的代码复杂化。

获取.php

<?php
//fetch.php
include($_SERVER['DOCUMENT_ROOT'].'/db/connect-db.php');

$output = '';
if(isset($_POST["query"])) {
$search = mysqli_real_escape_string($connection, $_POST["query"]);
$query = "SELECT * FROM tools
WHERE toolsn LIKE '%".$search."%'
OR toolcategory LIKE '%".$search."%'
OR tooldesc LIKE '%".$search."%'
OR toolpn LIKE '%".$search."%'
OR toolstatus LIKE '%".$search."%'";
} else {
$query = "SELECT * FROM tools ORDER BY id";
}
$result = mysqli_query($connection, $query);
//get feedback why database not working
if (!$result) {
printf("Error: %s\n", mysqli_error($connection));
exit();
}
if(mysqli_num_rows($result) > 0) {
$output .= '
<div class="table-responsive">
<table class="table table bordered">
<tr>
<th>Customer Name</th>
<th>Address</th>
<th>City</th>
<th>Postal Code</th>
<th>Country</th>
</tr>';
while($row = mysqli_fetch_array($result)) {
$output .= '<tr>
<td>'.$row["tooldesc"].'</td>
<td>'.$row["toolcategory"].'</td>
<td>'.$row["toolsn"].'</td>
<td>'.$row["toolpn"].'</td>
<td>'.$row["toolstatus"].'</td>
</tr>';
}
echo $output;
}else {
echo 'Data Not Found';
}
?>

最佳答案

我已经设法使用下面的代码重现排序选项,但这仅在我直接访问 fetch.php 页面时才有效。当我尝试通过 html 页面(通过脚本)获取详细信息时,仅显示结果,但没有排序功能(超链接不起作用)可能是因为下面的代码无法读取两个字符串,因为 fetch.php 包含在父 html 页面中。

$query = "SELECT * FROM tools ORDER BY " . $orderBy . " " . $order;

所以 $orderby 和 $order 不会向 $query 发出命令,因为它不是直接访问的页面。 html 页面的脚本正在读取 fetch.php 的结果。

获取.php

<?php
//fetch.php
include($_SERVER['DOCUMENT_ROOT'].'/db/connect-db.php');


$orderBy = "id";
$order = "asc";

if(!empty($_GET["orderby"])) {
$orderBy = $_GET["orderby"];
}
if(!empty($_GET["order"])) {
$order = $_GET["order"];
}

$idNextOrder = "asc";
$tooldescNextOrder = "asc";
$toolcategoryNextOrder = "asc";
$toolsnNextOrder = "asc";
$toolpnNextOrder = "asc";
$toolstatusNextOrder = "asc";

if($orderBy == "id" and $order == "asc") {
$idNextOrder = "desc";
}
if($orderBy == "tooldesc" and $order == "asc") {
$tooldescNextOrder = "desc";
}
if($orderBy == "toolcategory" and $order == "asc") {
$toolcategoryNextOrder = "desc";
}
if($orderBy == "toolsn" and $order == "asc") {
$toolsnNextOrder = "desc";
}
if($orderBy == "toolpn" and $order == "asc") {
$toolpnNextOrder = "desc";
}
if($orderBy == "toolstatus" and $order == "asc") {
$toolstatusNextOrder = "desc";
}


$output = '';
if(isset($_POST["query"]))
{
$search = mysqli_real_escape_string($connection, $_POST["query"]);
$query = "
SELECT * FROM tools
WHERE toolsn LIKE '%".$search."%'
OR toolcategory LIKE '%".$search."%'
OR tooldesc LIKE '%".$search."%'
OR toolpn LIKE '%".$search."%'
OR toolstatus LIKE '%".$search."%'
";
}
else
{
//$query = "SELECT * FROM tools";
$query = "SELECT * FROM tools ORDER BY " . $orderBy . " " . $order;

}
$result = mysqli_query($connection, $query);
//get feedback why database not working
if (!$result) {
printf("Error: %s\n", mysqli_error($connection));
exit();
}
if(mysqli_num_rows($result) > 0)
{

$output .= '
<div class="table-responsive">
<table class="table table bordered">
<tr>
<th class="id"><a title="Sort by system ID" href="?orderby=id&order='.$idNextOrder.'">ID</a></th>
<th class="toolsn"><a title="Sort by tool serial number" href="?orderby=toolsn&order='.$toolsnNextOrder.'">Tool SN</a></th>
<th class="toolpn"><a title="Sort by tool part number" href="?orderby=toolpn&order='.$toolpnNextOrder.'">Tool PN</a></th>
<th class="toolcategory"><a title="Sort by tool category" href="?orderby=toolcategory&order='.$toolcategoryNextOrder.'">Tool category</a></th>
<th class="tooldesc"><a title="Sort by tool description" href="?orderby=tooldesc&order='.$tooldescNextOrder.'">Tool description</a></th>
<th class="toolstatus"><a title="Sort by tool status" href="?orderby=toolstatus&order='.$toolstatusNextOrder.'">Tool status</a></th>
<th class="options"></th>
</tr>
';
while($row = mysqli_fetch_array($result))
{
$output .= '
<tr>
<td>'.$row["id"].'</td>
<td>'.$row["toolsn"].'</td>
<td>'.$row["toolpn"].'</td>
<td>'.$row["toolcategory"].'</td>
<td>'.$row["tooldesc"].'</td>
<td>'.$row["toolstatus"].'</td>
<td></td>
</tr>
';
}
echo $output;
}
else
{
echo 'Data Not Found';
}

?>

关于php - Ajax MYSQL 搜索和排序结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45773169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com