我是 PHP 编码新手。我想根据用户从复选框中选择的偏好的相应计数,以升序显示数据库中的酒店名称。我的代码根据用户输入的偏好显示酒店名称。其逻辑是,如果数据库中针对该酒店的首选项名称下存在“1”,则显示酒店名称。例如,如果用户从 7 个复选框中选择“游泳池”和“健身房”中的两个复选框,那么我的代码会显示数据库中健身房和游泳池的首选项均为“1”的酒店。我的数据库如下所示:
Hotel_id| Hotel_name| Pool| pool_count | Gym | gym_count| spa | spa_count| 0
1 Abc hotel 1 1.4 1 1.5 1 1.9
2 xyz hotel 1 1.2 0 0 0 0
3 xmk hotel 1 1.0 1 0.5 0 0
4 New hotel 1 1.99 0 0 0 0
5 old hotel 1 0.98 0 0 0 0
6 street hotel 1 0.78 0 0 0 0
. . . .
.
.
我正在使用 SQLite3 来制作数据库。如果用户选择游泳池、健身房和水疗中心的复选框,则必须检索在游泳池、健身房和水疗中心列下有“1”的所有酒店(我的代码执行此操作),然后它应该计算总和分别计数。例如,它应该将 pool_count 添加到gym_count 和 spa_count,然后根据各自的总和值按升序显示酒店名称。我尝试通过首先创建一个包含计数的所有列名称的数组,然后创建一个计算总和的查询来实现它,但我不知道如何传递已选择的首选项的特定列名称用户。
php_checkbox.php
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>PHP: Get Values of Multiple Checked Checkboxes</title>
<link rel="stylesheet" href="css/php_checkbox.css"/>
</head>
<body>
<div class="container">
<div class="main">
<form action="checkbox_value.php" method="post">
<h2>PHP: Get Values of Multiple Checked Checkboxes</h2>
<select id="mySelect" name="list">
<option selected>Select a place</option>
<option value="1">Lahore</option>
<option value="2">Dubai</option>
<option value="3">New York</option>
<option value="4">Canberra</option>
<option value="5">London</option>
</select>
<p class="heading">Select Your Preferences:</p>
<input type="checkbox" name="check_list[]" value="pool" id="checkbox_1">
<label for="checkbox_1">Pool</label>
<input type="checkbox" name="check_list[]" value="gym" id="checkbox_2">
<label for="checkbox_2">Gym</label>
<input type="checkbox" name="check_list[]" value="spa" id="checkbox_3">
<label for="checkbox_3">Spa</label>
<input type="checkbox" name="check_list[]" value="is_beach" id="checkbox_4">
<label for="checkbox_1">Beach</label>
<input type="checkbox" name="check_list[]" value="is_wifi" id="checkbox_5">
<label for="checkbox_2">Wifi</label>
<input type="checkbox" name="check_list[]" value="is_familyoriented" id="checkbox_6">
<label for="checkbox_3">Family oriented</label>
<input type="checkbox" name="check_list[]" value="is_economical" id="checkbox_7">
<label for="checkbox_3">Value for money</label>
<div>
<input type="submit" name="submit" Value="Submit"/>
</div>
<?php include 'checkbox_value.php';?>
</form>
</div>
</div>
</body>
</html>
checkbox_value.php:
<?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('mytrip.db');
}
}
$db = new MyDB();
if(!$db){
echo $db->lastErrorMsg();
} else {
}
$hotelOptions = array('pool', 'gym', 'spa', 'is_wifi', 'is_beach', 'is_familyoriented', 'is_economical');
$countOptions = array('pool_count', 'gym_count', 'spa_count', 'wifi_count', 'beach_count','family_count','econo_count');
if (isset($_POST['submit'])) {
if (!empty($_POST['check_list']) && is_array($_POST['check_list'])) {
// Counting number of checked checkboxes.
$checked_count = count($_POST['check_list']);
echo "You have selected following ".$checked_count." option(s): <br/>";
// Loop to store and display values of individual checked checkbox.
$where = '';
foreach($_POST['check_list'] as $selected) {
echo "<p>".$selected ."</p>";
if (array_search($selected, $hotelOptions) !== false) {
$where .= " AND {$selected} = 1";
}
}
$where = substr($where, 5, strlen($where));
// $sql = "SELECT hotel_name FROM Dubai WHERE ".$where.";";
$query= "SELECT SUM( ) FROM Dubai WHERE ".$where.";";
$sql = "SELECT hotel_name FROM Dubai WHERE ".$where.";";
echo "<p>".$where ."</p>";
$ret = $db->query($sql);
while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
echo "<p> <br /></p>\n";
echo "\n". $row['hotel_name'] . "\n";
}
$db->close();
} else {
echo "<b>Please Select Atleast One Option.</b>";
}
我要实现的第二个任务是根据用户在“php_checkbox.php”代码中的下拉列表中选择的目的地显示数据。我已经为列表中的每个选项提供了唯一的 ID,但不知道如何动态发送查询中的城市名称以打开该目的地的表。我当前的查询如下所示:
SELECT hotel_name FROM London WHERE
如何打开用户从下拉列表中选择的城市的表格?
我们将高度赞赏这方面的帮助。