php和mysqli新手。我有一个使用ajax的php/mysqli搜索页面,搜索包含零件号、描述、价格和库存数量的表。我可以编写另一个select查询,将结果限制为stock>0的项目。我想要的是在表单上添加一个复选框,允许用户在所有结果之间进行选择,或者只选择库存项目(大于零)的结果。我尝试使用if(isset($\u get['stocked'])测试stocked,但没有成功。我错过了什么?感谢您的帮助。
<script type="text/javascript">
$(function() {
$(".search_button").click(function() {
var search_word = $("#search_box").val();
var dataString = 'search_word=' + search_word;
if (search_word == '') {
} else {
$.ajax({
type: "GET",
url: "searchdata.php",
data: dataString,
cache: false,
beforeSend: function(html) {
document.getElementById("insert_search").innerHTML = '';
$("#flash").show();
$("#searchword").show();
$(".searchword").html(search_word);
$("#flash").html('<img src="ajax-loader_2.gif" /> Loading Results...');
},
success: function(html) {
$("#insert_search").show();
$("#insert_search").append(html);
$("#flash").hide();
}
});
}
return false;
});
});
</script>
<form method="get" action="">
<input type="checkbox" name="stocked" value="Yes"><label> Display in-stock items only</label>
<input type="text" name="search" id="search_box" class='search_box'/>
<input type="submit" value="Search" class="search_button" />
</form>
<?php
include('dbconnect.php');
if (isset($_GET['search_word'])) {
$search_word = $_GET['search_word']; //get value sent from search form
$min_length = 2; //2 character minimum for search
if (strlen($search_word) >= $min_length) { // if query length is more than or equal to minimum length, then
$search_word = htmlspecialchars($search_word); //change characters used in html to their equivalents
$search_word_new = mysqli_escape_string($conn,$search_word); //prevent SQL injection
$search_word_fix = str_replace(" ","%",$search_word_new);
// $raw_results = mysqli_query($conn,"SELECT * FROM stock WHERE partnumber LIKE '$search_word_fix%' AND availability > 0 ORDER BY partnumber LIMIT 10"); //in stock
$raw_results = mysqli_query($conn,"SELECT * FROM stock WHERE partnumber LIKE '$search_word_fix%' ORDER BY partnumber LIMIT 10"); //all
if(mysqli_num_rows($raw_results) > 0) { //one or more rows are returned
while($row = mysqli_fetch_array($raw_results)) { //put table data into array and loop while valid
echo "<hr class='gryhr'><br><a href=\"indexxx.php?id={$row['id']}\">{$row['partnumber']}</a><br>";
echo "<p>".$row['description']."<br>".
"List price $".$row['listprice']."<br>".
"In stock: ".$row['availability']."</p><br>";
}
echo "<hr>Total Results: " .mysqli_affected_rows($conn);
}
else { //no matching rows found
echo '<div>No Results</div>';
}
}
else { // if query length less than minimum
echo "Enter minimum of ".$min_length." characters";
}
}
mysqli_close($conn);
?>
1条答案
按热度按时间1sbrub3j1#
看起来你根本没有将复选框值发送到你的php代码中。。。你可以这样做:
你得修改一下你的剧本。
将id myform添加到表单元素中,并将搜索输入的名称更改为search\u word。
简而言之,它看起来像
--编辑——完整代码如下所示
至于你的观点
您的代码不起作用,因为您需要使用表单将数据发送到何处,并且还需要使用ajax将数据发送到何处。你得选一个。不是两者都有。在上面,我通过ajax调用发送它,并阻止默认表单提交。我也在用post而不是get发送。