Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 应用排序后,复选框属性丢失_Php_Html_Checkbox_Radio Button - Fatal编程技术网

Php 应用排序后,复选框属性丢失

Php 应用排序后,复选框属性丢失,php,html,checkbox,radio-button,Php,Html,Checkbox,Radio Button,我在一个网站上工作,该网站显示一些从数据库读取的数据。在这个数据上,我想实现排序和过滤选项。 该网页的特色包括: 每次应用过滤器时,页面都会再次加载,其中它会构建查询并再次从数据库所在的服务器检索值 显示过滤结果后,将保留复选框的属性 我无法实现的功能包括: 显示结果后,我想根据用户输入对其进行排序。但是,我面临的问题是,每次用户在选择排序单选按钮后单击“应用”,复选框的属性都会丢失。因此,再次生成的查询无法识别筛选选项 这是代码。我正在附加filter和sort div。在查询构建等方

我在一个网站上工作,该网站显示一些从数据库读取的数据。在这个数据上,我想实现排序和过滤选项。 该网页的特色包括:

  • 每次应用过滤器时,页面都会再次加载,其中它会构建查询并再次从数据库所在的服务器检索值
  • 显示过滤结果后,将保留复选框的属性
我无法实现的功能包括:

  • 显示结果后,我想根据用户输入对其进行排序。但是,我面临的问题是,每次用户在选择排序单选按钮后单击“应用”,复选框的属性都会丢失。因此,再次生成的查询无法识别筛选选项
这是代码。我正在附加filter和sort div。在查询构建等方面发生了很多事情,但我觉得问题的根源在于以下代码。我不熟悉php和html,仍在学习网页设计的基础知识

<div style="float: left;margin-left: -175px;" class="box2">
        <h2>Filter by :</h2>
    <form id="ContactForm" name="filter_form" action="<?php echo $_SERVER['PHP_SELF'];?>" method ="post">
        <h3>Location</h3>
        <?php
            $query = "Select DISTINCT LOCATION from venue_list";
            $result = mysqli_query($con,$query);
            ?>
            <ul>
            <?php
                while($row = mysqli_fetch_array($result))
                {
                    $location = $row['LOCATION'];
                ?>
                <li>
                    <input type="checkbox" id="f1" name="location[]" value="<?php echo $location?>" <?php if (isset($_POST['location'])){echo (in_array($location,$_POST['location']) ? 'checked' : '');}?>/>
                    <label for="f1"><?php echo $location?></label>
                </li>
                <?php
                }
            ?>
            </ul>
        <br>
        <h3>Party Type</h3>
        <?php
            $query = "Select DISTINCT PARTY_TYPE from venue_list";
            $result = mysqli_query($con,$query);
            ?>
            <ul>
            <?php
                while($row = mysqli_fetch_array($result))
                {
                    $party_type = $row['PARTY_TYPE'];
                ?>
                <li>
                    <input type="checkbox" id="f2" name="party_type[]" value="<?php echo $party_type?>" <?php if (isset($_POST['party_type'])){echo (in_array($party_type,$_POST['party_type']) ? 'checked' : '');}?>/>
                    <label for="f2"><?php echo $party_type?></label>
                </li>
                <?php
                }
            ?>
            </ul>
        <br><h3>Genre</h3>
        <?php
            $query = "Select DISTINCT GENRE from venue_list";
            $result = mysqli_query($con,$query);
            ?>
            <ul>
            <?php
                while($row = mysqli_fetch_array($result))
                {
                    $genre = $row['GENRE'];
                ?>
                <li>
                    <input type="checkbox" id="f3" name="genre[]" value="<?php echo $genre?>" <?php if (isset($_POST['genre'])){echo (in_array($genre,$_POST['genre']) ? 'checked' : '');}?>/>
                    <label for="f3"><?php echo $genre?></label>
                </li>
                <?php
                }
            ?>
            </ul>
        <br>
        <h3>Happy Hours</h3>
        <?php
            $query = "Select DISTINCT HAPPY_HOURS from venue_list where HAPPY_HOURS like '%M%'";
            $result = mysqli_query($con,$query);
            ?>
            <ul>
            <?php
                while($row = mysqli_fetch_array($result))
                {
                    $happy_hours = $row['HAPPY_HOURS'];
                ?>
                <li>
                    <input type="checkbox" id="f4" name="happy_hours[]" value="<?php echo $happy_hours?>" <?php if (isset($_POST['happy_hours'])){echo (in_array($happy_hours,$_POST['happy_hours']) ? 'checked' : '');}?>/>
                    <label for="f4"><?php echo $happy_hours?></label>
                </li>
                <?php
                }
            ?>
            </ul>
        <br>
        <h3>Outdoor/Rooftop</h3>
        <?php
            $query = "Select DISTINCT OUTDOOR_ROOFTOP from venue_list";
            $result = mysqli_query($con,$query);
            ?>
            <ul>
            <?php
                $i=0;
                while($row = mysqli_fetch_array($result))
                {
                    $outdoor_rooftop = $row['OUTDOOR_ROOFTOP'];
                ?>
                <li>
                    <input type="checkbox" id="f5" name="outdoor_rooftop[]" value="<?php echo $outdoor_rooftop?>" <?php if (isset($_POST['outdoor_rooftop'])){echo (in_array($location,$_POST['outdoor_rooftop']) ? 'checked' : '');}?>/>
                    <label for="f5"><?php echo $outdoor_rooftop?></label>
                </li>
                <?php
                $i=$i+1;
                }
            ?>
            </ul>
        <br><br><br>
        <input name="filter_button" type="submit"  value="Apply"  id="filter_button"  class="button"/>
    </form>
</div>

<div style="float: right;margin-right: -100px;" class="box2">
    <h2>Sort by :</h2>
    <form id="ContactForm" name="sort_form" action="<?php echo $_SERVER['PHP_SELF'];?>" method ="post">
        <input type="radio" id="s1" name="sort" value="Name" <?php if (isset($_POST['sort'])){echo 'checked';}?>/>
        <label for="f1"><?php echo 'Name'?></label>
        <input name="sort_button" type="submit"  value="Apply"  id="sort_button"  class="button"/>
    </form>
</div>

筛选依据:

  • 你使用的是两种不同的形式,所以

    当您提交
    Sort
    表单时,它只发布您的
    单选名称=“Sort”
    submit按钮名称=“Sort\u按钮”

    为什么单选按钮的属性会保留,但复选框的属性会丢失


    使用单一表单来保留chceckbox的属性。

    正如你所说,你对网页设计还不熟悉,有一个观察:仅仅为了输出表单而对数据库进行5次查询是非常多的,你应该尽可能少地调用数据库,特别是如果你一直在调用同一个表的话。在您的例子中,我将制定一个更好的sql查询,将信息放入1个数组,并在php中对数组值进行过滤/排序,这样会更快、更容易进行查询modify@aleation谢谢你的提示!我现在会处理的,谢谢。如果我将form元素分开,但名称和id相同,这难道不够吗?我正在这样做,但不起作用(