我想使用复选框和数据库中的 php 过滤价格
I want to filter prices with checkboxes and php from a database
我想使用一组范围过滤数据库中的数据。我的复选框在下面。
<body>
<form id="form" method="post" action="">
<input type="checkbox" name="price1" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> [=11=] - 5<br>
<input type="checkbox" name="price2" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 10<br>
<input type="checkbox" name="price3" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 20<br>
</form>
</body>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
下面是我的 PHP 代码
<?php
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
}
if (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
}
if (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 11 AND 20");
}
else { $query = $conn->query("SELECT price * FROM item");
}
?>
每当我点击一个复选框标记时,它不会执行任何操作,它只会显示我正在单独拉动的测试项目。下面的代码只是一个测试,以确保它从数据库中提取数据。现在我只是将价格范围从 0 拉到 5 并且它有效。但是上面的代码让用户可以选择价格范围,它不会做任何事情。什么都有帮助。
?php
//get product rows
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5 ");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
?>
<div class="list-item">
<h2><?php echo $row["name"]; ?></h2>
<h4>Price: <?php echo $row["price"]; ?></h4>
</div>
<?php }
}else{
echo 'Product(s) not found';
} ?>
</div>
</div>
代码如下:
<?php
$conn_error = "Could not connect";
// SQL connection credentials
//They are blanked out since it is connected to the server already
$mysql_host = "";
$mysql_user = "";
$mysql_pass = "";
$mysql_name = "";
$conn = new mysqli($mysql_host, $mysql_user, $mysql_pass,$mysql_name);
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
?>
<?php
//get product rows test to see database is working
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5 ");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
?>
<div class="list-item">
<h2><?php echo $row["name"]; ?></h2>
<h4>Price: <?php echo $row["price"]; ?></h4>
</div>
<?php }
}else{
echo 'Product(s) not found';
} ?>
</div>
</div>
<body>
<form id="form" method="post" action="">
<input type="checkbox" name="price1" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> [=14=] - 5<br>
<input type="checkbox" name="price2" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 10<br>
<input type="checkbox" name="price3" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 20<br>
</form>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
<?php
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
} elseif (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
} elseif (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 11 AND 20");
} else {
$query = $conn->query("SELECT price * FROM item");
}
?>
这是由于您的 if 语句的顺序,
<?php
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
}
if (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
}
if (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
}
else { $query = $conn->query("SELECT price * FROM item");
}
?>
else只依赖最后一个if语句try,我把中间两个if换成了"elseif",这样就形成了一个if语句,
<?php
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
} elseif (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
} elseif (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 11 AND 20");
} else {
$query = $conn->query("SELECT price * FROM item");
}
?>
我还将最后一个更新为 11-20 而不是 0-5 以匹配您的复选框文本。
为了澄清 JS 元素,您使用的是 jQuery $ 选择器,您必须首先包含 jQuery 才能使其正常工作,
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
完整示例,
<?php
$conn_error = "Could not connect";
// SQL connection credentials
//They are blanked out since it is connected to the server already
$mysql_host = "";
$mysql_user = "";
$mysql_pass = "";
$mysql_name = "";
$conn = new mysqli($mysql_host, $mysql_user, $mysql_pass,$mysql_name);
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
?>
</div>
</div>
<body>
<form id="form" method="post" action="">
<input type="checkbox" name="price1" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> [=13=] - 5<br>
<input type="checkbox" name="price2" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 10<br>
<input type="checkbox" name="price3" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 20<br>
</form>
<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
} elseif (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
} elseif (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 11 AND 20");
} else {
$query = $conn->query("SELECT price * FROM item");
}
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
?>
<div class="list-item">
<h2><?php echo $row["name"]; ?></h2>
<h4>Price: <?php echo $row["price"]; ?></h4>
</div>
<?php }
}else{
echo 'Product(s) not found';
}
}
?>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
我想使用一组范围过滤数据库中的数据。我的复选框在下面。
<body>
<form id="form" method="post" action="">
<input type="checkbox" name="price1" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> [=11=] - 5<br>
<input type="checkbox" name="price2" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 10<br>
<input type="checkbox" name="price3" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 20<br>
</form>
</body>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
下面是我的 PHP 代码
<?php
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
}
if (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
}
if (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 11 AND 20");
}
else { $query = $conn->query("SELECT price * FROM item");
}
?>
每当我点击一个复选框标记时,它不会执行任何操作,它只会显示我正在单独拉动的测试项目。下面的代码只是一个测试,以确保它从数据库中提取数据。现在我只是将价格范围从 0 拉到 5 并且它有效。但是上面的代码让用户可以选择价格范围,它不会做任何事情。什么都有帮助。
?php
//get product rows
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5 ");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
?>
<div class="list-item">
<h2><?php echo $row["name"]; ?></h2>
<h4>Price: <?php echo $row["price"]; ?></h4>
</div>
<?php }
}else{
echo 'Product(s) not found';
} ?>
</div>
</div>
代码如下:
<?php
$conn_error = "Could not connect";
// SQL connection credentials
//They are blanked out since it is connected to the server already
$mysql_host = "";
$mysql_user = "";
$mysql_pass = "";
$mysql_name = "";
$conn = new mysqli($mysql_host, $mysql_user, $mysql_pass,$mysql_name);
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
?>
<?php
//get product rows test to see database is working
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5 ");
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
?>
<div class="list-item">
<h2><?php echo $row["name"]; ?></h2>
<h4>Price: <?php echo $row["price"]; ?></h4>
</div>
<?php }
}else{
echo 'Product(s) not found';
} ?>
</div>
</div>
<body>
<form id="form" method="post" action="">
<input type="checkbox" name="price1" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> [=14=] - 5<br>
<input type="checkbox" name="price2" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 10<br>
<input type="checkbox" name="price3" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 20<br>
</form>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
<?php
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
} elseif (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
} elseif (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 11 AND 20");
} else {
$query = $conn->query("SELECT price * FROM item");
}
?>
这是由于您的 if 语句的顺序,
<?php
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
}
if (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
}
if (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
}
else { $query = $conn->query("SELECT price * FROM item");
}
?>
else只依赖最后一个if语句try,我把中间两个if换成了"elseif",这样就形成了一个if语句,
<?php
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
} elseif (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
} elseif (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 11 AND 20");
} else {
$query = $conn->query("SELECT price * FROM item");
}
?>
我还将最后一个更新为 11-20 而不是 0-5 以匹配您的复选框文本。
为了澄清 JS 元素,您使用的是 jQuery $ 选择器,您必须首先包含 jQuery 才能使其正常工作,
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>
完整示例,
<?php
$conn_error = "Could not connect";
// SQL connection credentials
//They are blanked out since it is connected to the server already
$mysql_host = "";
$mysql_user = "";
$mysql_pass = "";
$mysql_name = "";
$conn = new mysqli($mysql_host, $mysql_user, $mysql_pass,$mysql_name);
if ($db->connect_error) {
die("Connection failed: " . $db->connect_error);
}
?>
</div>
</div>
<body>
<form id="form" method="post" action="">
<input type="checkbox" name="price1" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> [=13=] - 5<br>
<input type="checkbox" name="price2" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 10<br>
<input type="checkbox" name="price3" class="checkbox" <?=(isset($_POST['price'])?' checked':'')?>/> - 20<br>
</form>
<?php
if($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["price1"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 0 AND 5");
} elseif (isset($_POST["price2"])){
$query = $conn->queryn("SELECT * FROM item WHERE price BETWEEN 6 AND 10");
} elseif (isset($_POST["price3"])){
$query = $conn->query("SELECT * FROM item WHERE price BETWEEN 11 AND 20");
} else {
$query = $conn->query("SELECT price * FROM item");
}
if($query->num_rows > 0){
while($row = $query->fetch_assoc()){
?>
<div class="list-item">
<h2><?php echo $row["name"]; ?></h2>
<h4>Price: <?php echo $row["price"]; ?></h4>
</div>
<?php }
}else{
echo 'Product(s) not found';
}
}
?>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('.checkbox').on('change',function(){
$('#form').submit();
});
});
</script>