如何在PHP中通过计算总和来显示数据库中数量最多的酒店名称?

2024-01-06

我是 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

如何打开用户从下拉列表中选择的城市的表格?

我们将高度赞赏这方面的帮助。


您应该按所选字段进行排序几乎与$where已经完成了。我会将选项名称映射到它们各自的列数:'pool' => 'pool_count'。从用户选择的表中进行选择更加简单,只需将包含输入值的数组作为索引,将表名称作为值,然后将所选索引连接到查询中即可。

我使用了您的代码的简化版本(只有一个城市,更少的列),但逻辑也可以处理您的数据,只需调整它即可。还剩下一件事,你应该处理以下情况$_POST['list']不包含正确的值。

这是代码:

$hotelOptions = array('swimming_pool', 'roof_top', 'sea_side');
$countOptions = array(
    'swimming_pool' => 'swimming_pool_count',
    'roof_top' => 'roof_top_count',
    'sea_side' => 'sea_side_count',
);
$cities = array(1 => 'Dubai');

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 = '';
        $order = '';
        foreach($_POST['check_list'] as $selected) {
            echo "<p>".$selected ."</p>";
            if (array_search($selected, $hotelOptions) !== false) {
                $where .= " AND {$selected} = 1";
                $order .= " {$countOptions[$selected]} DESC,";
            }
        }
        $where = substr($where, 5, strlen($where));
        $order = substr($order, 0, strlen($order) - 1);

        if (isset($cities[$_POST['list']])) {
            $sql = "SELECT hotel_name FROM ".$cities[$_POST['list']]." WHERE ".$where." ORDER BY ".$order.";";

            $ret = $db->query($sql);

            while($row = $ret->fetchArray(SQLITE3_ASSOC) ){
                echo "<p> <br /></p>\n";
                echo "\n". $row['hotel_name'] . "\n";
            }
            $db->close();
            echo "<br/><b>Note :</b> <span>Similarily, You Can Also Perform CRUD Operations using These Selected Values.</span>";
        }
    } else {
        echo "<b>Please Select Atleast One Option.</b>";
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在PHP中通过计算总和来显示数据库中数量最多的酒店名称? 的相关文章

  • 自定义 SVG 未加载到我的图像标签中

    目前我正在尝试将自定义 svg 组件加载到图像标签内 但由于某种原因 我无法看到地图组件内的 svg 图像 我的自定义 SVG 文件如下所示 我在 SVG 中加载另一个图像
  • 从 Internet Explorer 打印时的默认文件名

    使用 pdf 打印机打印网页 将页面另存为 pdf 时 Chrome 和 Firefox 都使用该页面
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • HTML 和 标签有什么区别?

    HEAD 标签和 BODY 标签有什么区别 大多数 HTML 书籍仅 简短 提及 and 标签 但它们消失得很快 它们会影响浏览器呈现网页的方式吗 另外 它们会影响 javascript 的运行顺序吗 我的意思是 如果我里面有一个javas
  • 如何在PHP中将图像从内存上传到AWS S3?

    所以我目前有一个使用 AWS S3 上传图像的上传系统 这是代码 Upload image to S3 s3 Aws S3 S3Client factory array key gt mykey secret gt myskey try s
  • Rails、REST 架构和 HTML 5:带有预检请求的跨域请求

    在致力于使我们的网站 HTML 5 友好的项目时 我们渴望采用跨域请求的新方法 不再通过隐藏的 iframe 发布 使用访问控制 http www w3 org TR access control 根据规范 我们开始设置一些测试来验证各种浏
  • 如何使用多个数据库设置 symfony 3 学说迁移?

    我在验证和更新模式时努力让 symfony doctrine 排除数据库视图 我第一次尝试没有教条迁移 看到这个问题 https stackoverflow com questions 46775200 symfony 3 doctrine
  • PHP URL 验证

    我知道有无数的线程问这个问题 但我一直无法找到一个可以帮助我解决这个问题的线程 我基本上试图解析大约 10 000 000 个 URL 的列表 确保它们根据以下标准有效 然后获取根域 URL 此列表包含您能想象到的几乎所有内容 包括类似的内
  • 使用 PHP 修剪字符串开头的任何零

    用户将在字段中填写与其帐户相关的数字 不幸的是 一些用户会在号码开头添加零来组成六位数字 例如 000123 001234 而其他用户则不会 例如 123 1234 我想 修剪 前面带有零前缀的用户的数字 因此如果用户输入 000123 它
  • 如何从列表创建多维数组?

    我在 MySQL 中有一个带有父 ID 的类别列表 如何从列表中创建 PHP 数组 ID Category Parent ID 1 Car NULL 2 Education NULL 3 Mathematics 2 4 Physics 2
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1
  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • 如何在具有相同值的下拉菜单上触发 jQuery 更改事件

    即使用户选择相同的值 如何每次都触发 jQuery 更改事件 我需要刷新效果 例如如果用户选择Lawyer它会发出警报hello然后用户再次选择Lawyer从下拉菜单中 它应该发出警报hello 我怎样才能实现它 以下是代码 jQuery
  • 如何根据另一个下拉列表中的选择动态填充下拉列表中的选项?

    我有一个表 其中包含类别信息 例如产品 我已将它们列在下拉菜单中 现在 我需要做的是 在下一个下拉菜单中列出所选类别的子类别 我希望 javascript 是必需的 但我对 javascript 还不太熟悉 将非常感谢您的帮助 你应该使用
  • 由于未定义符号,PECL solr 未加载:curl_easy_getinfo

    我正在尝试加载 PECL solr 扩展 我尝试使用 pecl install solr 并下载并使用 phpize configure make 来安装它 在这两种情况下 扩展安装时都没有错误 但在 apache 重新启动后 或在命令行上
  • PHPunit - 错误

    当 PHPunit 框架不希望发生的错误发生时 测试会停止 PHP 会抛出错误 但 PHPunit 不会记录这是一个错误 我如何确保 PHPunit 将其记录为错误 免责声明 我是 PHPUnit 的新手 我也试图弄清楚 发生错误时会发生什
  • 如何使用 jQuery 单击特定链接时打开引导导航选项卡的特定选项卡?

    我是 jquery 和 bootstrap 的新手 所以请考虑我的错误 我已经创建了一个用于登录和注册的 bootstrap 模式 它包含两个导航选项卡 称为登录和注册 我有两个按钮可以弹出相同的模态窗口 但在模态窗口内显示不同的选项卡 每
  • 创建日期范围表

    我正在编写一份需要显示每天值的报告 我有查询的开始日期和结束日期 但我希望避免丢失日期 以防表不包含特定日期的值 我正在考虑创建一个基本日期范围表 其中包含开始和结束之间的所有日期 然后将其与数据表左连接以显示每一天的值 我找到了一些适用于
  • 如何使用 FieldDefs 在运行时创建新的 SQLite 文件和表?

    我正在使用 Delphi Seattle 在全新的 SQLite 文件中创建一个全新的表 并且仅使用 FieldDefs 和非可视代码 我可以使用 ExecSQL CREATE TABLE 语法创建一个表 但不能如下所示 我得到 没有这样的
  • 水平和垂直居中 div 位于页面中间,页眉和页脚粘在页面顶部和底部

    我正在尝试制作一个具有固定高度页眉和页脚的页面 页眉位于屏幕顶部 100 宽度 页脚位于底部 100 宽度 我想将一个具有可变高度内容的 div 居中放置在页眉和页脚之间的空间中 在下面的 jsfiddle 中 如果内容比空格短 它会起作用

随机推荐

  • Play Framework 以及模型类中集合的使用

    我刚刚开始使用 Play 框架 在我的模型类之一中使用集合时遇到了一些问题 我对 Play 和 JPA Hibernate 非常陌生 所以请原谅我的菜鸟 我尝试在网络上搜索答案 但找不到我想要的东西 本质上 我有 2 个模型 Entity
  • 如何使用 Kotlin 反射更改成员字段?

    我正在将一个类从 Java 移植到 Kotlin 这个类声明了数百个对象 每个对象都有一个 name 属性 该属性与该对象声明的变量名称相同 Java反射允许通过反射使用声明的名称来设置对象成员name 只是在数百个构造函数中保存一个参数
  • “JScript - 脚本块”和内存泄漏 - 如何正确释放资源?

    我在项目的部分视图中放置了一些 jquery 选项卡 我通过 Visual Studio 的 解决方案资源管理器 注意到 在调试期间新动态JScript script block每次我单击新选项卡时都会生成 即使我把这种情况发生 mytab
  • 视图正在剪切其内容错误

    我使用的是 Xcode 4 6 在窗口中 我不断收到 视图正在裁剪其内容 错误 当我单击它时 XIB 编辑器会突出显示一个标签 这个错误试图告诉我什么以及如何修复它 首先 单击文本 视图正在裁剪 将选择有问题的控件 当您将文本字段的大小调整
  • Javascript 通过类或 id 获取 DOM 数组中的元素索引位置

    我的情况 var domElements document body getElementsByTagName 现在我想返回数组项键 数组中元素的位置 例如domElements 34 在数组中搜索元素id asd 我怎样才能实现这个目标
  • 将 Ehcache CacheManager (v 3.x) 转换为 Spring CacheManager,无需 XML 配置

    我正在尝试在我的应用程序中使用 Ehcache 管理器 我想在没有 xml 配置的情况下设置它 我有下一个依赖项
  • 头文件的多次包含[重复]

    这个问题在这里已经有答案了 I have A cpp and B cpp两者都包含头文件header h 后来两者A cpp and B cpp包含在一个main cpp 这会导致错误 当main cpp编译时说头文件header h已被收
  • python 用高斯混合模型(GMM)拟合加权数据,协方差最小

    我想使用 python 将高斯混合模型拟合到一组加权数据点 我尝试了 sklearn mixture GMM 它工作得很好 除了它对所有数据点的权重相等 有谁知道如何在此方法中为数据点分配权重 我多次尝试使用数据点来 增加其权重 但这对于大
  • 如何将源代码嵌入到 pdb 中并让调试器使用它?

    NOTE 我的目标关注点是 C 以常规 MSIL 为目标的 CLR 以防有一些东西适用于此 但不适用于更一般的情况 我读过这篇文章并想总结一下我的理解以便清楚起见 如今 调试器使用 PDB 来获取文件的磁盘路径以及编译后创建可执行文件的给定
  • 使用带有圆形文本框的图标 Bootstrap 4 搜索输入

    我想要带有搜索图标的圆形边框搜索框 下面的代码有效 但如果我将其分类为 rounded pill 则图标将与文本框分开 如何使文本框变圆 同时图标也保留在其中
  • R - 条件滞后 - 如何滞后一定数量的单元格直到满足条件?

    几周来一直试图解决这个问题 但似乎无法解决 我有以下数据框 post id user id 1 post 1 user1 2 post 2 user2 3 comment 1 user1 4 comment 2 user3 5 commen
  • 无法在 PayPal HTMLButton 上指定每个付款请求的“金额”

    我正在尝试使用 HTML 按钮 方法与 PayPal 集成 结帐流程相当简单 用户点击 立即购买 gt 转入 PayPal gt 付款处理 gt 返回网站 根据客户想要 立即购买 的商品 提交的表单中的 金额 会有所不同 并且我无法让 Pa
  • 如何使用 MVC Web Api 内容服务器和 Android 最终用户 apk 实现 OWIN 身份验证服务器

    我正在尝试实施 用于按需返回内容的 MVC Web API 服务器 REST 服务器 中央身份验证 OAuth 2 0 服务器 例如 OWIN Android 最终用户端应用程序 场景是这样的 Android应用程序在REST服务器上请求内
  • 使用 node.js 在 Azure 文件存储中上传文件

    我们正在尝试创建一个 Web 服务 以使用 node js 服务将文件上传到 Azure 文件存储 下面是node js服务器代码 exports post function request response var shareName r
  • 为什么 PRIVATE 成员函数不能成为另一个类的友元函数?

    class x void xx class y friend void x xx 这会导致类似的错误 错误 友元函数 xx 是 x 的私有成员 为什么我不能将私有成员函数声明为另一个类的友元 同学 朋友 9 http eel is c dr
  • iOS AppStore 上的 CCATS 和加密

    这将是一个很长的问题 实际上是一组相关的问题 我想制作一个 iOS 应用程序 将在 Apple 的 App Store 上出售 显然 我的应用程序将在文档目录中存储一些敏感的用户数据 出于安全原因 我想到了一种可以保护该数据的加密系统 有趣
  • 所得税计算的编程逻辑

    谁能帮我为我们的办公室员工工资税表创建 PHP 或 mysql 代码 这是我们税收监管的基础 If salary is gt 0 and lt 150 it will be 0 Nill If salary is gt 151 and lt
  • 删除完整磁盘上最旧的文件

    一个以 100MB 块将数据写入磁盘并通过附加 1 来增加文件名的应用程序 因此n1 n2 n1000 这最终会使用分区 Linux 主机 上的所有可用空间 我正在寻找一种方法来删除该系列中首次写入的文件 直到驱动器空间达到特定利用率 如果
  • 从窗口类名获取窗口句柄

    我试图在我的进程中获取子窗口的窗口句柄 我拥有的唯一信息是窗口类名称 我可以使用任何 win32 函数吗 我是用 C 做的 更详细一点 这是一个 Visual Studio 插件 用 C 编写 所以我的流程是 Visual Studio 它
  • 如何在PHP中通过计算总和来显示数据库中数量最多的酒店名称?

    我是 PHP 编码新手 我想根据用户从复选框中选择的偏好的相应计数 以升序显示数据库中的酒店名称 我的代码根据用户输入的偏好显示酒店名称 其逻辑是 如果数据库中针对该酒店的首选项名称下存在 1 则显示酒店名称 例如 如果用户从 7 个复选框