gpt4 book ai didi

javascript - 同时进行多个输入的实时 AJAX 搜索 PHP/MySQL

转载 作者:行者123 更新时间:2023-11-30 00:21:55 25 4
gpt4 key购买 nike

我正在 AJAX(火药喇叭数据库)中进行实时搜索,有两个输入,第一个输入是年份,第二个输入是冲突。我遇到的问题是,当输入之一为空时,它仅返回表中未列出日期或冲突名称的元素。相反,我希望空白输入表现为空,并显示表中的所有内容。我可以使用条件来检查 if (!$date) 来修复日期部分,但如果用户再次选择空白,我无法让选择输入以相同的方式运行。

关于如何解决这个问题有什么想法吗?特别是在一个没有大量 PHP if/else 的查询中?

HTML

<h1> Powder Horn Search Engine </h1>




Date <input id="date" type="text" name="variable">

To <select id="conflict">
<option> </option>
<option value="French & Indian War">French & Indian War</option>
<option value="Revolutionary War">Revolutionary War</option>
<option value="War of 1812">War of 1812</option>
</select>

<div id="result">
</div>

Javascript

        var date="";
var conflict=""

$(document).ready( function () {
//Send date to PHP
$("#date").keyup(function(){
date = $("#date").val();
conflict=$("#conflict").val();

$.ajax({
type: "POST",
data: {date: date, conflict:conflict},
url: "powderhornsearch.php",
success: function(data){ //response param
$("#result").html(data);
}

});
});

//Send conflict to PHP
$("#conflict").change(function(){
conflict=$("#conflict").val();
date = $("#date").val();

$.ajax({
type: "POST",
data: {conflict: conflict, date:date},
url: "powderhornsearch.php",
success: function(data){ //response param
$("#result").html(data);
}

});


});
});

PHP

    $date = $_POST['date'];
$conflict=$_POST['conflict'];
$result = mysql_query ("SELECT * FROM powderhorns WHERE Date LIKE $date AND Conflict LIKE '$conflict' ", $connection);
if (!$result) {
die("Database query failed:" . mysql_error());
}
echo "<table>";
while ($row = mysql_fetch_array($result)) {
echo "<tr>";
echo "<td>".$row[0]."</td>".
"<td>".$row[1]."</td>".
"<td>".$row[2]."</td>".
"<td>".$row[3]."</td>".
"<td>".$row[4]."</td>";
echo "</tr>";
}
echo "</table>";

编辑

我将空白选择的值更改为“1”,因为 MySQL 似乎在处理空字符串时遇到了问题。我通过使用以下代码使一切正常工作。由于我是编程新手,如果有人对如何使其更加简洁或优雅有建议,我会喜欢你的想法。非常感谢!

    if (!$date) {
$date="";
}

if ($conflict=="1" && !$date)
{
$result = mysql_query ("SELECT * FROM powderhorns", $connection);
}

else if ($conflict==1){
$result = mysql_query ("SELECT * FROM powderhorns WHERE Date LIKE $date ", $connection);
}

else if (!$date && $conflict){
$result = mysql_query ("SELECT * FROM powderhorns WHERE Conflict LIKE '$conflict' ", $connection);
}

else{
$result = mysql_query ("SELECT * FROM powderhorns WHERE Conflict LIKE '$conflict' and Date LIKE $date ", $connection);
}

最佳答案

将其更改为:

$condition=1;
if(trim($date)) $condition .=" and Date LIKE '$date'";
if(trim($conflict)) $condition .=" and Conflict LIKE '$conflict'";

$result = mysql_query ("SELECT * FROM powderhorns WHERE $condition ", $connection);

关于javascript - 同时进行多个输入的实时 AJAX 搜索 PHP/MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23164747/

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